
On 06/10/2013 02:10 PM, Ján Tomko wrote:
Split out option string generation to make adding new options easier and simplify the code. --- src/storage/storage_backend.c | 111 ++++++++++++++++++++++-------------------- 1 file changed, 59 insertions(+), 52 deletions(-)
[...]
@@ -795,65 +824,43 @@ virStorageBackendCreateQemuImgCmd(virConnectPtr conn,
cmd = virCommandNew(create_tool);
- if (inputvol) { - virCommandAddArgList(cmd, "convert", "-f", inputType, "-O", type, NULL); + convert = !!inputvol; + backing = !inputvol && vol->backingStore.path;
- if (imgformat == QEMU_IMG_BACKING_FORMAT_OPTIONS && - (do_encryption || preallocate)) { - virCommandAddArg(cmd, "-o"); - virCommandAddArgFormat(cmd, "%s%s%s", do_encryption ? "encryption=on" : "", - (do_encryption && preallocate) ? "," : "", - preallocate ? "preallocation=metadata" : ""); - } else if (do_encryption) { - virCommandAddArg(cmd, "-e"); - } - virCommandAddArgList(cmd, inputPath, vol->target.path, NULL); - } else if (vol->backingStore.path) { - virCommandAddArgList(cmd, "create", "-f", type, - "-b", vol->backingStore.path, NULL); - - switch (imgformat) { - case QEMU_IMG_BACKING_FORMAT_FLAG: - virCommandAddArgList(cmd, "-F", backingType, NULL); - if (do_encryption) - virCommandAddArg(cmd, "-e"); - virCommandAddArg(cmd, vol->target.path); - virCommandAddArgFormat(cmd, "%lluK", size_arg); - break; - - case QEMU_IMG_BACKING_FORMAT_OPTIONS: - virCommandAddArg(cmd, "-o"); - virCommandAddArgFormat(cmd, "backing_fmt=%s%s", backingType, - do_encryption ? ",encryption=on" : ""); - virCommandAddArg(cmd, vol->target.path); - virCommandAddArgFormat(cmd, "%lluK", size_arg); - break; + if (convert) + virCommandAddArgList(cmd, "convert", "-f", inputType, "-O", type, NULL); + else + virCommandAddArgList(cmd, "create", "-f", type, NULL);
- default: - VIR_DEBUG("Unable to set backing store format for %s with %s", - vol->target.path, create_tool); + if (backing) + virCommandAddArgList(cmd, "-b", vol->backingStore.path, NULL);
- if (do_encryption) - virCommandAddArg(cmd, "-e"); - virCommandAddArg(cmd, vol->target.path); - virCommandAddArgFormat(cmd, "%lluK", size_arg); - } + if (imgformat == QEMU_IMG_BACKING_FORMAT_OPTIONS) { + if (virStorageBackendCreateQemuImgOpts(&opts, + backing ? backingType : NULL, + do_encryption, preallocate))
I guess we should use '< 0' here to unify the looks of it. Other than that it's way more readable than the previous version, so ACK with that fixed. Martin