[libvirt] [PATCH 1/7] storage: rework qemu-img command line generation
Martin Kletzander
mkletzan at redhat.com
Mon Jun 10 14:12:51 UTC 2013
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
More information about the libvir-list
mailing list