Charles Duffy wrote:
>From 3c4f6568623ed420a9e71da33b9ce74abda289a8 Mon Sep 17 00:00:00
2001
From: Charles Duffy <Charles_Duffy(a)dell.com>
Date: Wed, 9 Sep 2009 15:53:25 -0500
Subject: [PATCH] Reintroduce support for lzop compression
lzop was removed due to some confusion over whether it provided functional
advantages distinct from xz. This has been addressed in the mailing list post
archived at
http://permalink.gmane.org/gmane.comp.emulators.libvirt/16487, and
support for lzop is re-added here.
lzop is added to the enum after xz, leaving xz at the position lzma was
originally in (which is appropriate, as it should handle decompression of
lzma-format files) and giving lzop back its prior position.
Documentation in qemu.conf is amended to remove references to lzma and add
suggestions regarding the tradeoffs made by various compressors.
Signed-off-by: Charles Duffy <charles(a)dyfis.net>
---
libvirt.spec.in | 1 +
src/qemu.conf | 7 ++++---
src/qemu_driver.c | 9 ++++++---
3 files changed, 11 insertions(+), 6 deletions(-)
...
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"),
Thanks for that patch.
I'm glad I read it, since it made me realize my clean-up
from yesterday was incomplete. You should not have had to add
the literal, "lzop", in two places.
This completes the job:
From 05b3f087b7ac29cebd22dfdf099f8fb36a31c86a Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering(a)redhat.com>
Date: Thu, 10 Sep 2009 11:26:00 +0200
Subject: [PATCH] qemu_driver.c: factor out more duplication
* src/qemu_driver.c (qemudDomainRestore): Use the new ...TypeToString
function here, too.
(qemudSaveCompressionTypeToString): Declare.
---
src/qemu_driver.c | 18 +++++++-----------
1 files changed, 7 insertions(+), 11 deletions(-)
diff --git a/src/qemu_driver.c b/src/qemu_driver.c
index 5c2a8ec..256e8e7 100644
--- a/src/qemu_driver.c
+++ b/src/qemu_driver.c
@@ -4379,21 +4379,17 @@ static int qemudDomainRestore(virConnectPtr conn,
if (header.version == 2) {
const char *intermediate_argv[3] = { NULL, "-dc", NULL };
- if (header.compressed == QEMUD_SAVE_FORMAT_GZIP)
- intermediate_argv[0] = "gzip";
- else if (header.compressed == QEMUD_SAVE_FORMAT_BZIP2)
- 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) {
+ const char *prog = qemudSaveCompressionTypeToString(header.compressed);
+ if (prog == NULL) {
qemudReportError(conn, NULL, NULL, VIR_ERR_OPERATION_FAILED,
- _("Unknown compressed save format %d"),
+ _("Invalid compressed save format %d"),
header.compressed);
goto cleanup;
}
- if (intermediate_argv[0] != NULL) {
+
+ if (header.compressed != QEMUD_SAVE_FORMAT_RAW)
+ intermediate_argv[0] = prog;
+ else {
intermediatefd = fd;
fd = -1;
if (virExec(conn, intermediate_argv, NULL, NULL,
--
1.6.5.rc0.164.g5f6b0