On Thu, Feb 04, 2016 at 04:42:06PM +0100, Kevin Wolf wrote: > 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 <berra...@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"?
Yes, sorry I screwed this up when I refactored it. > > +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". ok > > @@ -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? Well I was hoping --image-opts would affect both source and target, but i guess if we ship it only affecting source, we can't extend it to also affect target without back compat issues, so that might force adding a --target-image-opts Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|