|
Mark McLoughlin |
7c2073 |
From e50c91fdcea5d81e3eb2051c05f4e51a16c3e692 Mon Sep 17 00:00:00 2001
|
|
Mark McLoughlin |
7c2073 |
From: Charles Duffy <Charles_Duffy@dell.com>
|
|
Mark McLoughlin |
7c2073 |
Date: Fri, 18 Sep 2009 11:32:35 -0500
|
|
Mark McLoughlin |
7c2073 |
Subject: [PATCH] Prevent attempt to call cat -c during virDomainSave to raw
|
|
Mark McLoughlin |
7c2073 |
|
|
Mark McLoughlin |
7c2073 |
Fedora-patch: libvirt-fix-qemu-raw-format-save.patch
|
|
Mark McLoughlin |
7c2073 |
---
|
|
Mark McLoughlin |
7c2073 |
src/qemu_driver.c | 28 ++++++++++++++++++----------
|
|
Mark McLoughlin |
7c2073 |
1 files changed, 18 insertions(+), 10 deletions(-)
|
|
Mark McLoughlin |
7c2073 |
|
|
Mark McLoughlin |
7c2073 |
diff --git a/src/qemu_driver.c b/src/qemu_driver.c
|
|
Mark McLoughlin |
7c2073 |
index 2ddcdc0..7c7b985 100644
|
|
Mark McLoughlin |
7c2073 |
--- a/src/qemu_driver.c
|
|
Mark McLoughlin |
7c2073 |
+++ b/src/qemu_driver.c
|
|
Mark McLoughlin |
7c2073 |
@@ -3905,17 +3905,25 @@ static int qemudDomainSave(virDomainPtr dom,
|
|
Mark McLoughlin |
7c2073 |
goto cleanup;
|
|
Mark McLoughlin |
7c2073 |
}
|
|
Mark McLoughlin |
7c2073 |
|
|
Mark McLoughlin |
7c2073 |
- const char *prog = qemudSaveCompressionTypeToString(header.compressed);
|
|
Mark McLoughlin |
7c2073 |
- if (prog == NULL) {
|
|
Mark McLoughlin |
7c2073 |
- qemudReportError(dom->conn, dom, NULL, VIR_ERR_INTERNAL_ERROR,
|
|
Mark McLoughlin |
7c2073 |
- _("Invalid compress format %d"), header.compressed);
|
|
Mark McLoughlin |
7c2073 |
- goto cleanup;
|
|
Mark McLoughlin |
7c2073 |
- }
|
|
Mark McLoughlin |
7c2073 |
+ {
|
|
Mark McLoughlin |
7c2073 |
+ const char *prog = qemudSaveCompressionTypeToString(header.compressed);
|
|
Mark McLoughlin |
7c2073 |
+ const char *args;
|
|
Mark McLoughlin |
7c2073 |
|
|
Mark McLoughlin |
7c2073 |
- if (STREQ (prog, "raw"))
|
|
Mark McLoughlin |
7c2073 |
- prog = "cat";
|
|
Mark McLoughlin |
7c2073 |
- internalret = virAsprintf(&command, "migrate \"exec:"
|
|
Mark McLoughlin |
7c2073 |
- "%s -c >> '%s' 2>/dev/null\"", prog, safe_path);
|
|
Mark McLoughlin |
7c2073 |
+ if (prog == NULL) {
|
|
Mark McLoughlin |
7c2073 |
+ qemudReportError(dom->conn, dom, NULL, VIR_ERR_INTERNAL_ERROR,
|
|
Mark McLoughlin |
7c2073 |
+ _("Invalid compress format %d"), header.compressed);
|
|
Mark McLoughlin |
7c2073 |
+ goto cleanup;
|
|
Mark McLoughlin |
7c2073 |
+ }
|
|
Mark McLoughlin |
7c2073 |
+
|
|
Mark McLoughlin |
7c2073 |
+ if (STREQ (prog, "raw")) {
|
|
Mark McLoughlin |
7c2073 |
+ prog = "cat";
|
|
Mark McLoughlin |
7c2073 |
+ args = "";
|
|
Mark McLoughlin |
7c2073 |
+ } else {
|
|
Mark McLoughlin |
7c2073 |
+ args = "-c";
|
|
Mark McLoughlin |
7c2073 |
+ }
|
|
Mark McLoughlin |
7c2073 |
+ internalret = virAsprintf(&command, "migrate \"exec:"
|
|
Mark McLoughlin |
7c2073 |
+ "%s %s >> '%s' 2>/dev/null\"", prog, args, safe_path);
|
|
Mark McLoughlin |
7c2073 |
+ }
|
|
Mark McLoughlin |
7c2073 |
|
|
Mark McLoughlin |
7c2073 |
if (internalret < 0) {
|
|
Mark McLoughlin |
7c2073 |
virReportOOMError(dom->conn);
|
|
Mark McLoughlin |
7c2073 |
--
|
|
Mark McLoughlin |
7c2073 |
1.6.2.5
|
|
Mark McLoughlin |
7c2073 |
|