[libvirt] [PATCH 2/2] check compression program at virsh save and dump

KAMEZAWA Hiroyuki kamezawa.hiroyu at jp.fujitsu.com
Thu Oct 28 10:28:34 UTC 2010


>From bc55de1e6a8506adcde52aa95e2be9d4bb5bfb2e Mon Sep 17 00:00:00 2001
From: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
Date: Thu, 28 Oct 2010 17:51:18 +0900
Subject: [PATCH 2/2] check compression program availabilityy of virsh save and dump.

---
 src/qemu/qemu_driver.c |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 51ad50b..61dc6e8 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -5740,6 +5740,22 @@ cleanup:
     return ret;
 }
 
+/* returns 1 if a compression program is available in PATH */
+static int qemudCompressProgramAvailable(int compress)
+{
+    const char *prog;
+    char *c;
+
+    if (compress == QEMUD_SAVE_FORMAT_RAW)
+        return 1;
+    prog = qemudSaveCompressionTypeToString(compress);
+    c = virFindFileInPath(prog);
+    if (!c)
+        return 0;
+    VIR_FREE(c);
+    return 1;
+}
+
 static int qemudDomainSave(virDomainPtr dom, const char *path)
 {
     struct qemud_driver *driver = dom->conn->privateData;
@@ -5759,6 +5775,12 @@ static int qemudDomainSave(virDomainPtr dom, const char *path)
                                     "in configuration file"));
             return -1;
         }
+        if (!qemudCompressProgramAvailable(compressed)) {
+            qemuReportError(VIR_ERR_OPERATION_FAILED,
+                            "%s", _("Compression program for image format "
+                                    "in configuration file isn't available"));
+            return -1;
+        }
     }
 
     vm = virDomainFindByUUID(&driver->domains, dom->uuid);
@@ -5922,6 +5944,12 @@ static int qemudDomainCoreDump(virDomainPtr dom,
                              "configuration file"));
            return -1;
         }
+        if (!qemudCompressProgramAvailable(compress)) {
+            qemuReportError(VIR_ERR_OPERATION_FAILED,
+                            "%s", _("Compression program for dump image format "
+                                    "in configuration file isn't available"));
+            return -1;
+        }
     }
 
     qemuDriverLock(driver);
-- 
1.7.2.3





More information about the libvir-list mailing list