[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH v5 07/10] qemu-img: allow specifying image as a
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-block] [PATCH v5 07/10] qemu-img: allow specifying image as a set of options args |
Date: |
Thu, 4 Feb 2016 16:42:06 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Am 02.02.2016 um 13:57 hat Daniel P. Berrange geschrieben:
> Currently qemu-img allows an image filename to be passed on the
> command line, but unless using the JSON format, it does not have
> a way to set any options except the format eg
>
> qemu-img info https://127.0.0.1/images/centos7.iso
>
> This adds a --image-opts arg that indicates that the positional
> filename should be interpreted as a full option string, not
> just a filename.
>
> qemu-img info --image-opts
> driver=https,url=https://127.0.0.1/images,sslverify=off
>
> This flag is mutually exclusive with the '-f' / '-F' flags.
>
> Signed-off-by: Daniel P. Berrange <address@hidden>
> @@ -212,9 +222,31 @@ static int print_block_option_help(const char *filename,
> const char *fmt)
> return 0;
> }
>
> -static BlockBackend *img_open(const char *id, const char *filename,
> - const char *fmt, int flags,
> - bool require_io, bool quiet)
> +static BlockBackend *img_open_opts(const char *id,
> + QemuOpts *opts, int flags)
> +{
> + QDict *options;
> + Error *local_err = NULL;
> + char *file = NULL;
> + BlockBackend *blk;
> + file = g_strdup(qemu_opt_get(opts, "file"));
> + qemu_opt_unset(opts, "file");
Didn't we decide that we don't want to special-case "file"?
> + options = qemu_opts_to_qdict(opts, NULL);
> + blk = blk_new_open(id, file, NULL, options, flags, &local_err);
> + if (!blk) {
> + error_report("Could not open '%s': %s", file ? file : "",
> + error_get_pretty(local_err));
> + g_free(file);
> + error_free(local_err);
> + return NULL;
> + }
> + g_free(file);
> + return blk;
> +}
> +
> +static BlockBackend *img_open_file(const char *id, const char *filename,
> + const char *fmt, int flags,
> + bool require_io, bool quiet)
> {
> BlockBackend *blk;
> BlockDriverState *bs;
> @@ -251,6 +283,33 @@ fail:
> return NULL;
> }
>
> +
> +static BlockBackend *img_open(const char *id,
> + bool image_opts,
> + const char *filename,
> + const char *fmt, int flags,
> + bool require_io, bool quiet)
> +{
> + BlockBackend *blk;
> + if (image_opts) {
> + QemuOpts *opts;
> + if (fmt) {
> + error_report("--image-opts and --format are mutually exclusive");
> + return NULL;
> + }
> + opts = qemu_opts_parse_noisily(qemu_find_opts("source"),
> + filename, true);
> + if (!opts) {
> + return NULL;
> + }
> + blk = img_open_opts("image", opts, flags);
> + } else {
> + blk = img_open_file("image", filename, fmt, flags, true, quiet);
> + }
> + return blk;
> +}
I think id should be passed on instead of being replaced by "image".
> @@ -1956,7 +2034,13 @@ static int img_convert(int argc, char **argv)
> goto out;
> }
>
> - out_blk = img_open("target", out_filename, out_fmt, flags, true, quiet);
> + /* XXX we should allow --image-opts to trigger use of
> + * img_open() here, but then we have trouble with
> + * the bdrv_create() call which takes different params.
> + * Not critical right now, so fix can wait...
> + */
> + out_blk = img_open_file("target", out_filename,
> + out_fmt, flags, true, quiet);
So is the plan to add another option (like --target-image-opts) when
this call is converted?
Kevin
- [Qemu-block] [PATCH v5 03/10] qemu-nbd: add support for --object command line arg, (continued)
- [Qemu-block] [PATCH v5 03/10] qemu-nbd: add support for --object command line arg, Daniel P. Berrange, 2016/02/02
- [Qemu-block] [PATCH v5 04/10] qemu-io: add support for --object command line arg, Daniel P. Berrange, 2016/02/02
- [Qemu-block] [PATCH v5 06/10] qemu-nbd: allow specifying image as a set of options args, Daniel P. Berrange, 2016/02/02
- [Qemu-block] [PATCH v5 08/10] qemu-nbd: don't overlap long option values with short options, Daniel P. Berrange, 2016/02/02
- [Qemu-block] [PATCH v5 10/10] qemu-io: use no_argument/required_argument constants, Daniel P. Berrange, 2016/02/02
- [Qemu-block] [PATCH v5 09/10] qemu-nbd: use no_argument/required_argument constants, Daniel P. Berrange, 2016/02/02
- [Qemu-block] [PATCH v5 07/10] qemu-img: allow specifying image as a set of options args, Daniel P. Berrange, 2016/02/02
- Re: [Qemu-block] [PATCH v5 07/10] qemu-img: allow specifying image as a set of options args,
Kevin Wolf <=
Re: [Qemu-block] [PATCH v5 07/10] qemu-img: allow specifying image as a set of options args, Eric Blake, 2016/02/04
Re: [Qemu-block] [PATCH v5 00/10] Make qemu-img/qemu-nbd/qemu-io CLI more flexible, Kevin Wolf, 2016/02/04