All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: "Daniel P. Berrange" <berrange@redhat.com>
Cc: qemu-block@nongnu.org, qemu-devel@nongnu.org,
	"Markus Armbruster" <armbru@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH v5 07/10] qemu-img: allow specifying image as a set of options args
Date: Thu, 4 Feb 2016 16:42:06 +0100	[thread overview]
Message-ID: <20160204154206.GE2314@noname> (raw)
In-Reply-To: <1454417864-18774-8-git-send-email-berrange@redhat.com>

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 <berrange@redhat.com>

> @@ -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

  reply	other threads:[~2016-02-04 15:42 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-02 12:57 [Qemu-devel] [PATCH v5 00/10] Make qemu-img/qemu-nbd/qemu-io CLI more flexible Daniel P. Berrange
2016-02-02 12:57 ` [Qemu-devel] [PATCH v5 01/10] qom: add helpers for UserCreatable object types Daniel P. Berrange
2016-02-02 14:47   ` Andreas Färber
2016-02-02 23:38   ` Eric Blake
2016-02-02 23:41     ` Andreas Färber
2016-02-03  0:15       ` Eric Blake
2016-02-02 12:57 ` [Qemu-devel] [PATCH v5 02/10] qemu-img: add support for --object command line arg Daniel P. Berrange
2016-02-03  0:24   ` Eric Blake
2016-02-03 10:09     ` Daniel P. Berrange
2016-02-02 12:57 ` [Qemu-devel] [PATCH v5 03/10] qemu-nbd: " Daniel P. Berrange
2016-02-03  2:33   ` Eric Blake
2016-02-02 12:57 ` [Qemu-devel] [PATCH v5 04/10] qemu-io: " Daniel P. Berrange
2016-02-03  2:42   ` Eric Blake
2016-02-02 12:57 ` [Qemu-devel] [PATCH v5 05/10] qemu-io: allow specifying image as a set of options args Daniel P. Berrange
2016-02-03 15:37   ` Eric Blake
2016-02-03 17:13     ` Daniel P. Berrange
2016-02-02 12:57 ` [Qemu-devel] [PATCH v5 06/10] qemu-nbd: " Daniel P. Berrange
2016-02-03 15:47   ` Eric Blake
2016-02-02 12:57 ` [Qemu-devel] [PATCH v5 07/10] qemu-img: " Daniel P. Berrange
2016-02-04 15:42   ` Kevin Wolf [this message]
2016-02-04 15:47     ` Daniel P. Berrange
2016-02-04 16:06       ` Kevin Wolf
2016-02-04 16:35         ` Daniel P. Berrange
2016-02-05 15:52           ` Kevin Wolf
2016-02-04 15:59   ` Eric Blake
2016-02-04 16:03     ` Daniel P. Berrange
2016-02-02 12:57 ` [Qemu-devel] [PATCH v5 08/10] qemu-nbd: don't overlap long option values with short options Daniel P. Berrange
2016-02-02 12:57 ` [Qemu-devel] [PATCH v5 09/10] qemu-nbd: use no_argument/required_argument constants Daniel P. Berrange
2016-02-02 12:57 ` [Qemu-devel] [PATCH v5 10/10] qemu-io: " Daniel P. Berrange
2016-02-04 15:44 ` [Qemu-devel] [PATCH v5 00/10] Make qemu-img/qemu-nbd/qemu-io CLI more flexible Kevin Wolf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160204154206.GE2314@noname \
    --to=kwolf@redhat.com \
    --cc=afaerber@suse.de \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.