Create a helper virStorageBackendCreateQemuImgSetOptions to set either
the qemu-img -o options or the previous mechanism using -F
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
src/storage/storage_backend.c | 30 +++++++++++++++++++++---------
1 file changed, 21 insertions(+), 9 deletions(-)
diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c
index cbc32bb..d041530 100644
--- a/src/storage/storage_backend.c
+++ b/src/storage/storage_backend.c
@@ -1119,6 +1119,26 @@ virStorageBackendCreateQemuImgSetBacking(virStoragePoolObjPtr
pool,
}
+static int
+virStorageBackendCreateQemuImgSetOptions(virCommandPtr cmd,
+ int imgformat,
+ struct _virStorageBackendQemuImgInfo info)
+{
+ char *opts = NULL;
+
+ if (info.format == VIR_STORAGE_FILE_QCOW2 && !info.compat &&
+ imgformat >= QEMU_IMG_BACKING_FORMAT_OPTIONS_COMPAT)
+ info.compat = "0.10";
+
+ if (virStorageBackendCreateQemuImgOpts(&opts, info) < 0)
+ return -1;
+ if (opts)
+ virCommandAddArgList(cmd, "-o", opts, NULL);
+ VIR_FREE(opts);
+
+ return 0;
+}
+
/* Create a qemu-img virCommand from the supplied binary path,
* volume definitions and imgformat
@@ -1134,7 +1154,6 @@ virStorageBackendCreateQemuImgCmdFromVol(virConnectPtr conn,
{
virCommandPtr cmd = NULL;
const char *type;
- char *opts = NULL;
struct _virStorageBackendQemuImgInfo info = {
.format = vol->target.format,
.path = vol->target.path,
@@ -1207,17 +1226,10 @@ virStorageBackendCreateQemuImgCmdFromVol(virConnectPtr conn,
if (info.backingPath)
virCommandAddArgList(cmd, "-b", info.backingPath, NULL);
- if (info.format == VIR_STORAGE_FILE_QCOW2 && !info.compat &&
- imgformat >= QEMU_IMG_BACKING_FORMAT_OPTIONS_COMPAT)
- info.compat = "0.10";
-
- if (virStorageBackendCreateQemuImgOpts(&opts, info) < 0) {
+ if (virStorageBackendCreateQemuImgSetOptions(cmd, imgformat, info) < 0) {
virCommandFree(cmd);
return NULL;
}
- if (opts)
- virCommandAddArgList(cmd, "-o", opts, NULL);
- VIR_FREE(opts);
if (info.inputPath)
virCommandAddArg(cmd, info.inputPath);
--
2.5.5