With Save, libvirt writes to the save file using iohelper which is allowed as qemu is not directly accessing the /var/tmp but restore is from the file FD directly.
So, restore with --bypass-cache should work here which uses the iohelper.
I noticed on 16.04, 17.04 & 17.10 the -bypass-cache also fails with
error: internal error: Child process (LIBVIRT_LOG_OUTPUTS=1:stderr /usr/lib/libvirt/libvirt_iohelper /var/tmp/save.file 0 0) unexpected exit status 1: /usr/lib/libvirt/libvirt_iohelper: Unable to read /var/tmp/save.file: Invalid argument
I see the above is fixed upstream with the commits
776b9ac594b6a1e4afc924826c6e9cb5474e8e27
f830e371ef298e7fa949165d10dcf0cf3518abd5
3b8a0f6ac23e4d4620218870030a08f75419b5d7
05021e727d80527c4b53debed98b87b565780a16
633b699bfda06d9fcdb7f9466e2d2c9b4bc3e63c
------- Comment From <email address hidden> 2017-11-29 01:48 EDT-------
Not sure how I missed this earlier.
There is an apparmor rule in /etc/apparmor. d/abstractions/ libvirt- qemu denying access to /tmp and /var/tmp. More details here, https:/ /bugs.launchpad .net/ubuntu/ +source/ libvirt/ +bug/1403648
With Save, libvirt writes to the save file using iohelper which is allowed as qemu is not directly accessing the /var/tmp but restore is from the file FD directly.
So, restore with --bypass-cache should work here which uses the iohelper.
I noticed on 16.04, 17.04 & 17.10 the -bypass-cache also fails with LOG_OUTPUTS= 1:stderr /usr/lib/ libvirt/ libvirt_ iohelper /var/tmp/save.file 0 0) unexpected exit status 1: /usr/lib/ libvirt/ libvirt_ iohelper: Unable to read /var/tmp/save.file: Invalid argument
error: internal error: Child process (LIBVIRT_
I see the above is fixed upstream with the commits 4afc924826c6e9c b5474e8e27 fa949165d10dcf0 cf3518abd5 620218870030a08 f75419b5d7 c4b53debed98b87 b565780a16 fcdb7f9466e2d2c 9b4bc3e63c
776b9ac594b6a1e
f830e371ef298e7
3b8a0f6ac23e4d4
05021e727d80527
633b699bfda06d9
Thanks,
Shivaprasad