diff --git a/libvirt.spec.in b/libvirt.spec.in index b01f9c2e9a..0157eeea67 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -117,6 +117,7 @@ Requires: /usr/bin/qemu-img # For image compression Requires: gzip Requires: bzip2 +Requires: lzop Requires: xz %else %if %{with_xen} diff --git a/src/qemu.conf b/src/qemu.conf index 342bb8a19c..6d6b86afdb 100644 --- a/src/qemu.conf +++ b/src/qemu.conf @@ -134,9 +134,10 @@ # memory from the domain is dumped out directly to a file. If you have # guests with a large amount of memory, however, this can take up quite # a bit of space. If you would like to compress the images while they -# are being saved to disk, you can also set "gzip", "bzip2", "lzma", "xz", -# or "lzop" for save_image_format. Note that this means you slow down -# the process of saving a domain in order to save disk space. +# are being saved to disk, you can also set "lzop", "gzip", "bzip2", or "xz" +# for save_image_format. Note that this means you slow down the process of +# saving a domain in order to save disk space; the list above is in descending +# order by performance and ascending order by compression ratio. # # save_image_format = "raw" diff --git a/src/qemu_driver.c b/src/qemu_driver.c index 8f16e726cb..5c2a8ec255 100644 --- a/src/qemu_driver.c +++ b/src/qemu_driver.c @@ -3624,10 +3624,10 @@ enum qemud_save_formats { QEMUD_SAVE_FORMAT_BZIP2 = 2, /* * Deprecated by xz and never used as part of a release - * QEMUD_SAVE_FORMAT_LZMA, - * QEMUD_SAVE_FORMAT_LZOP, + * QEMUD_SAVE_FORMAT_LZMA */ QEMUD_SAVE_FORMAT_XZ = 3, + QEMUD_SAVE_FORMAT_LZOP = 4, /* Note: add new members only at the end. These values are used in the on-disk format. Do not change or re-use numbers. */ @@ -3640,7 +3640,8 @@ VIR_ENUM_IMPL(qemudSaveCompression, QEMUD_SAVE_FORMAT_LAST, "raw", "gzip", "bzip2", - "xz") + "xz", + "lzop") struct qemud_save_header { char magic[sizeof(QEMUD_SAVE_MAGIC)-1]; @@ -4384,6 +4385,8 @@ static int qemudDomainRestore(virConnectPtr conn, intermediate_argv[0] = "bzip2"; else if (header.compressed == QEMUD_SAVE_FORMAT_XZ) intermediate_argv[0] = "xz"; + else if (header.compressed == QEMUD_SAVE_FORMAT_LZOP) + intermediate_argv[0] = "lzop"; else if (header.compressed != QEMUD_SAVE_FORMAT_RAW) { qemudReportError(conn, NULL, NULL, VIR_ERR_OPERATION_FAILED, _("Unknown compressed save format %d"),