qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Cody <jcody@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: mreitz@redhat.com, famz@redhat.com, qemu-devel@nongnu.org,
	stefanha@redhat.com, armbru@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2 3/6] qemu-img convert: Support multiple -o options
Date: Thu, 20 Feb 2014 14:33:30 -0500	[thread overview]
Message-ID: <20140220193330.GE30664@localhost.localdomain> (raw)
In-Reply-To: <1392908243-8835-4-git-send-email-kwolf@redhat.com>

On Thu, Feb 20, 2014 at 03:57:20PM +0100, Kevin Wolf wrote:
> Instead of ignoring all option values but the last one, multiple -o
> options now have the same meaning as having a single option with all
> settings in the order of their respective -o options.
> 
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
>  qemu-img.c | 29 ++++++++++++++++++++---------
>  1 file changed, 20 insertions(+), 9 deletions(-)
> 
> diff --git a/qemu-img.c b/qemu-img.c
> index 770e4e6..ba6e82d 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -1160,6 +1160,9 @@ static int img_convert(int argc, char **argv)
>      Error *local_err = NULL;
>      QemuOpts *sn_opts = NULL;
>  
> +    /* Initialize before goto out */
> +    qemu_progress_init(progress, 1.0);
> +
>      fmt = NULL;
>      out_fmt = "raw";
>      cache = "unsafe";
> @@ -1191,13 +1194,21 @@ static int img_convert(int argc, char **argv)
>          case 'e':
>              error_report("option -e is deprecated, please use \'-o "
>                    "encryption\' instead!");
> -            return 1;
> +            ret = -1;
> +            goto out;
>          case '6':
>              error_report("option -6 is deprecated, please use \'-o "
>                    "compat6\' instead!");
> -            return 1;
> +            ret = -1;
> +            goto out;
>          case 'o':
> -            options = optarg;
> +            if (!options) {
> +                options = g_strdup(optarg);
> +            } else {
> +                char *old_options = options;
> +                options = g_strdup_printf("%s,%s", options, optarg);
> +                g_free(old_options);
> +            }
>              break;
>          case 's':
>              snapshot_name = optarg;
> @@ -1208,7 +1219,8 @@ static int img_convert(int argc, char **argv)
>                  if (!sn_opts) {
>                      error_report("Failed in parsing snapshot param '%s'",
>                                   optarg);
> -                    return 1;
> +                    ret = -1;
> +                    goto out;
>                  }
>              } else {
>                  snapshot_name = optarg;
> @@ -1221,7 +1233,8 @@ static int img_convert(int argc, char **argv)
>              sval = strtosz_suffix(optarg, &end, STRTOSZ_DEFSUFFIX_B);
>              if (sval < 0 || *end) {
>                  error_report("Invalid minimum zero buffer size for sparse output specified");
> -                return 1;
> +                ret = -1;
> +                goto out;
>              }

There is a 'return -1' that is missed, that I think needs to be 'goto
out;' for cleanup.  It is right after the call to
bdrv_parse_cache_flags() in the img_convert() function:

    ret = bdrv_parse_cache_flags(cache, &flags);
    if (ret < 0) {
        error_report("Invalid cache option: %s", cache);
        return -1;
    }

Looks like this has been this way for a while, though.  And this is an
instance (the only instance) where img_convert returns -1 instead of 0
or 1.  I'm not sure the implications if that changed, and became '1',
so we'd probably want to preserve the return value.

Since this doesn't have anything to do with this patch (although
leaking 'options' now, in addition to the other stuff leaked), I'll go
ahead and give my reviewed-by, and we can fix this in another
follow-up patch:

Reviewed-by: Jeff Cody <jcody@redhat.com>

>  
>              min_sparse = sval / BDRV_SECTOR_SIZE;
> @@ -1253,10 +1266,7 @@ static int img_convert(int argc, char **argv)
>  
>      out_filename = argv[argc - 1];
>  
> -    /* Initialize before goto out */
> -    qemu_progress_init(progress, 1.0);
> -
> -    if (options && is_help_option(options)) {
> +    if (options && has_help_option(options)) {
>          ret = print_block_option_help(out_filename, out_fmt);
>          goto out;
>      }
> @@ -1649,6 +1659,7 @@ out:
>      free_option_parameters(create_options);
>      free_option_parameters(param);
>      qemu_vfree(buf);
> +    g_free(options);
>      if (sn_opts) {
>          qemu_opts_del(sn_opts);
>      }
> -- 
> 1.8.1.4
> 
> 

  parent reply	other threads:[~2014-02-20 19:33 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-20 14:57 [Qemu-devel] [PATCH v2 0/6] qemu-img: Support multiple -o options Kevin Wolf
2014-02-20 14:57 ` [Qemu-devel] [PATCH v2 1/6] qemu-option: Introduce has_help_option() Kevin Wolf
2014-02-20 15:28   ` Eric Blake
2014-02-20 20:21   ` Jeff Cody
2014-02-20 14:57 ` [Qemu-devel] [PATCH v2 2/6] qemu-img create: Support multiple -o options Kevin Wolf
2014-02-20 15:52   ` Eric Blake
2014-02-20 16:24     ` Eric Blake
2014-02-20 19:14   ` Jeff Cody
2014-02-20 14:57 ` [Qemu-devel] [PATCH v2 3/6] qemu-img convert: " Kevin Wolf
2014-02-20 16:01   ` Eric Blake
2014-02-20 19:33   ` Jeff Cody [this message]
2014-02-20 19:38     ` Eric Blake
2014-02-20 14:57 ` [Qemu-devel] [PATCH v2 4/6] qemu-img amend: " Kevin Wolf
2014-02-20 16:18   ` Eric Blake
2014-02-20 19:39   ` Jeff Cody
2014-02-20 14:57 ` [Qemu-devel] [PATCH v2 5/6] qemu-img: Allow -o help with incomplete argument list Kevin Wolf
2014-02-20 16:58   ` Eric Blake
2014-02-20 20:05   ` Jeff Cody
2014-02-20 14:57 ` [Qemu-devel] [PATCH v2 6/6] qemu-iotests: Check qemu-img command line parsing Kevin Wolf
2014-02-20 17:51   ` Eric Blake
2014-02-20 18:42   ` Jeff Cody

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=20140220193330.GE30664@localhost.localdomain \
    --to=jcody@redhat.com \
    --cc=armbru@redhat.com \
    --cc=famz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).