[PATCH 0/2] qemu: Improve opening and verifying save images

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



qemuSaveImageOpen does a lot of stuff. When bypass-cache is specified,
it creates a virFileWrapperFd, which is not cleaned up in the subsequent
failure paths. This results in errors from the iohelper, which can
overwrite the actual error. E.g. consider libvirt attempting to restore
an image saved in an unknown format

# virsh restore --bypass-cache /data/test.sav.sparse
error: Failed to restore domain from /data/test.sav.sparse
error: internal error: Child process (LIBVIRT_LOG_OUTPUTS=1:stderr /usr/lib64/libvirt/libvirt_iohelper /data/test.sav.sparse 0) unexpected fatal signal 13

When not using the iohelper, and not creating a virFileWrapperFd, we see
the real error:

# virsh restore /data/test.sav.sparse
error: Failed to restore domain from /data/test.sav.sparse
error: operation failed: Invalid compressed save format 6

Although that error highlights a spot I missed when removing the
"compression" implications around the 'foo_image_format' settings in
qemu.conf with commit bd6d7ebf622 :-). IMO, the error message would be
best fixed by checking for valid values when reading the save image
metadata.

Patch 1 decomposes qemuSaveImageOpen to allow for better error handling
and more flexibility. Patch 2 checks for a valid format when checking the
other header fields.

Jim Fehlig (2):
  qemu: Decompose qemuSaveImageOpen
  qemu: Check for valid save image format when verifying image header

 src/qemu/qemu_driver.c    | 37 +++++++--------
 src/qemu/qemu_saveimage.c | 95 +++++++++++++++++++++++++--------------
 src/qemu/qemu_saveimage.h | 16 ++++---
 src/qemu/qemu_snapshot.c  |  9 ++--
 4 files changed, 95 insertions(+), 62 deletions(-)

-- 
2.43.0



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux