All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Richard W.M. Jones" <rjones@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: qemu-devel@nongnu.org, jsnow@redhat.com, nsoffer@redhat.com,
	vsementsov@virtuozzo.com, qemu-block@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 09/14] nbd/client: Refactor return of nbd_receive_negotiate()
Date: Fri, 30 Nov 2018 22:41:14 +0000	[thread overview]
Message-ID: <20181130224114.GE27120@redhat.com> (raw)
In-Reply-To: <20181130220344.3350618-10-eblake@redhat.com>

On Fri, Nov 30, 2018 at 04:03:38PM -0600, Eric Blake wrote:
> The function could only ever return 0 or -EINVAL; make this
> clearer by dropping a useless 'fail:' label.
> 
> Signed-off-by: Eric Blake <eblake@redhat.com>
> ---
>  nbd/client.c | 51 +++++++++++++++++++++++----------------------------
>  1 file changed, 23 insertions(+), 28 deletions(-)
> 
> diff --git a/nbd/client.c b/nbd/client.c
> index 27785c55d0a..1ed5009642e 100644
> --- a/nbd/client.c
> +++ b/nbd/client.c
> @@ -773,7 +773,6 @@ int nbd_receive_negotiate(QIOChannel *ioc, QCryptoTLSCreds *tlscreds,
>                            NBDExportInfo *info, Error **errp)
>  {
>      uint64_t magic;
> -    int rc;
>      bool zeroes = true;
>      bool structured_reply = info->structured_reply;
>      bool base_allocation = info->base_allocation;
> @@ -784,31 +783,30 @@ int nbd_receive_negotiate(QIOChannel *ioc, QCryptoTLSCreds *tlscreds,
>      trace_nbd_receive_negotiate_name(info->name);
>      info->structured_reply = false;
>      info->base_allocation = false;
> -    rc = -EINVAL;
> 
>      if (outioc) {
>          *outioc = NULL;
>      }
>      if (tlscreds && !outioc) {
>          error_setg(errp, "Output I/O channel required for TLS");
> -        goto fail;
> +        return -EINVAL;
>      }
> 
>      if (nbd_read(ioc, &magic, sizeof(magic), errp) < 0) {
>          error_prepend(errp, "Failed to read data: ");
> -        goto fail;
> +        return -EINVAL;
>      }
>      magic = be64_to_cpu(magic);
>      trace_nbd_receive_negotiate_magic(magic);
> 
>      if (magic != NBD_INIT_MAGIC) {
>          error_setg(errp, "Invalid magic received");
> -        goto fail;
> +        return -EINVAL;
>      }
> 
>      if (nbd_read(ioc, &magic, sizeof(magic), errp) < 0) {
>          error_prepend(errp, "Failed to read magic: ");
> -        goto fail;
> +        return -EINVAL;
>      }
>      magic = be64_to_cpu(magic);
>      trace_nbd_receive_negotiate_magic(magic);
> @@ -820,7 +818,7 @@ int nbd_receive_negotiate(QIOChannel *ioc, QCryptoTLSCreds *tlscreds,
> 
>          if (nbd_read(ioc, &globalflags, sizeof(globalflags), errp) < 0) {
>              error_prepend(errp, "Failed to read server flags: ");
> -            goto fail;
> +            return -EINVAL;
>          }
>          globalflags = be16_to_cpu(globalflags);
>          trace_nbd_receive_negotiate_server_flags(globalflags);
> @@ -836,18 +834,18 @@ int nbd_receive_negotiate(QIOChannel *ioc, QCryptoTLSCreds *tlscreds,
>          clientflags = cpu_to_be32(clientflags);
>          if (nbd_write(ioc, &clientflags, sizeof(clientflags), errp) < 0) {
>              error_prepend(errp, "Failed to send clientflags field: ");
> -            goto fail;
> +            return -EINVAL;
>          }
>          if (tlscreds) {
>              if (fixedNewStyle) {
>                  *outioc = nbd_receive_starttls(ioc, tlscreds, hostname, errp);
>                  if (!*outioc) {
> -                    goto fail;
> +                    return -EINVAL;
>                  }
>                  ioc = *outioc;
>              } else {
>                  error_setg(errp, "Server does not support STARTTLS");
> -                goto fail;
> +                return -EINVAL;
>              }
>          }
>          if (fixedNewStyle) {
> @@ -858,7 +856,7 @@ int nbd_receive_negotiate(QIOChannel *ioc, QCryptoTLSCreds *tlscreds,
>                                                     NBD_OPT_STRUCTURED_REPLY,
>                                                     errp);
>                  if (result < 0) {
> -                    goto fail;
> +                    return -EINVAL;
>                  }
>                  info->structured_reply = result == 1;
>              }
> @@ -869,7 +867,7 @@ int nbd_receive_negotiate(QIOChannel *ioc, QCryptoTLSCreds *tlscreds,
>                          info->x_dirty_bitmap ?: "base:allocation",
>                          info, errp);
>                  if (result < 0) {
> -                    goto fail;
> +                    return -EINVAL;
>                  }
>                  info->base_allocation = result == 1;
>              }
> @@ -881,7 +879,7 @@ int nbd_receive_negotiate(QIOChannel *ioc, QCryptoTLSCreds *tlscreds,
>               * export, then use NBD_OPT_EXPORT_NAME.  */
>              result = nbd_opt_go(ioc, info, errp);
>              if (result < 0) {
> -                goto fail;
> +                return -EINVAL;
>              }
>              if (result > 0) {
>                  return 0;
> @@ -893,25 +891,25 @@ int nbd_receive_negotiate(QIOChannel *ioc, QCryptoTLSCreds *tlscreds,
>               * export name is not available.
>               */
>              if (nbd_receive_query_exports(ioc, info->name, errp) < 0) {
> -                goto fail;
> +                return -EINVAL;
>              }
>          }
>          /* write the export name request */
>          if (nbd_send_option_request(ioc, NBD_OPT_EXPORT_NAME, -1, info->name,
>                                      errp) < 0) {
> -            goto fail;
> +            return -EINVAL;
>          }
> 
>          /* Read the response */
>          if (nbd_read(ioc, &info->size, sizeof(info->size), errp) < 0) {
>              error_prepend(errp, "Failed to read export length: ");
> -            goto fail;
> +            return -EINVAL;
>          }
>          info->size = be64_to_cpu(info->size);
> 
>          if (nbd_read(ioc, &info->flags, sizeof(info->flags), errp) < 0) {
>              error_prepend(errp, "Failed to read export flags: ");
> -            goto fail;
> +            return -EINVAL;
>          }
>          info->flags = be16_to_cpu(info->flags);
>      } else if (magic == NBD_CLIENT_MAGIC) {
> @@ -919,43 +917,40 @@ int nbd_receive_negotiate(QIOChannel *ioc, QCryptoTLSCreds *tlscreds,
> 
>          if (*info->name) {
>              error_setg(errp, "Server does not support non-empty export names");
> -            goto fail;
> +            return -EINVAL;
>          }
>          if (tlscreds) {
>              error_setg(errp, "Server does not support STARTTLS");
> -            goto fail;
> +            return -EINVAL;
>          }
> 
>          if (nbd_read(ioc, &info->size, sizeof(info->size), errp) < 0) {
>              error_prepend(errp, "Failed to read export length: ");
> -            goto fail;
> +            return -EINVAL;
>          }
>          info->size = be64_to_cpu(info->size);
> 
>          if (nbd_read(ioc, &oldflags, sizeof(oldflags), errp) < 0) {
>              error_prepend(errp, "Failed to read export flags: ");
> -            goto fail;
> +            return -EINVAL;
>          }
>          oldflags = be32_to_cpu(oldflags);
>          if (oldflags & ~0xffff) {
>              error_setg(errp, "Unexpected export flags %0x" PRIx32, oldflags);
> -            goto fail;
> +            return -EINVAL;
>          }
>          info->flags = oldflags;
>      } else {
>          error_setg(errp, "Bad magic received");
> -        goto fail;
> +        return -EINVAL;
>      }
> 
>      trace_nbd_receive_negotiate_size_flags(info->size, info->flags);
>      if (zeroes && nbd_drop(ioc, 124, errp) < 0) {
>          error_prepend(errp, "Failed to read reserved block: ");
> -        goto fail;
> +        return -EINVAL;
>      }
> -    rc = 0;
> -
> -fail:
> -    return rc;
> +    return 0;
>  }
> 

Simple refactoring:

Reviewed-by: Richard W.M. Jones <rjones@redhat.com>

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine.  Supports Linux and Windows.
http://people.redhat.com/~rjones/virt-df/

  reply	other threads:[~2018-11-30 22:41 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-30 22:03 [Qemu-devel] [PATCH for-4.0 00/14] nbd: add qemu-nbd --list Eric Blake
2018-11-30 22:03 ` [Qemu-devel] [PATCH 01/14] qemu-nbd: Use program name in error messages Eric Blake
2018-11-30 22:17   ` Richard W.M. Jones
2018-12-05 14:55   ` Vladimir Sementsov-Ogievskiy
2018-11-30 22:03 ` [Qemu-devel] [PATCH 02/14] nbd/client: More consistent " Eric Blake
2018-11-30 22:20   ` Richard W.M. Jones
2018-12-05 15:03   ` Vladimir Sementsov-Ogievskiy
2018-12-10 22:03     ` Eric Blake
2018-11-30 22:03 ` [Qemu-devel] [PATCH 03/14] qemu-nbd: Fail earlier for -c/-d on non-linux Eric Blake
2018-11-30 22:23   ` Richard W.M. Jones
2018-12-05 15:20   ` Vladimir Sementsov-Ogievskiy
2018-11-30 22:03 ` [Qemu-devel] [PATCH 04/14] qemu-nbd: Simplify --partition handling Eric Blake
2018-11-30 22:26   ` Richard W.M. Jones
2018-11-30 22:41     ` Eric Blake
2018-12-05 15:40   ` Vladimir Sementsov-Ogievskiy
2018-12-05 16:26     ` Eric Blake
2018-12-05 16:32       ` Eric Blake
2018-12-10 22:28   ` Eric Blake
2018-11-30 22:03 ` [Qemu-devel] [PATCH 05/14] nbd/client: Drop pointless buf variable Eric Blake
2018-11-30 22:30   ` Richard W.M. Jones
2018-11-30 22:54     ` Eric Blake
2018-12-05 15:59   ` Vladimir Sementsov-Ogievskiy
2018-12-05 16:29     ` Eric Blake
2018-12-05 16:38       ` Vladimir Sementsov-Ogievskiy
2018-12-05 16:49         ` Eric Blake
2018-11-30 22:03 ` [Qemu-devel] [PATCH 06/14] nbd/client: Move export name into NBDExportInfo Eric Blake
2018-11-30 22:34   ` Richard W.M. Jones
2018-12-05 17:26   ` Vladimir Sementsov-Ogievskiy
2018-11-30 22:03 ` [Qemu-devel] [PATCH 07/14] nbd/client: Refactor nbd_negotiate_simple_meta_context() Eric Blake
2018-12-01 10:30   ` Richard W.M. Jones
2018-12-06 13:20   ` Vladimir Sementsov-Ogievskiy
2018-12-06 16:20     ` Eric Blake
2018-11-30 22:03 ` [Qemu-devel] [PATCH 08/14] nbd/client: Refactor nbd_receive_list() Eric Blake
2018-12-01 10:37   ` Richard W.M. Jones
2018-12-06 14:18   ` Vladimir Sementsov-Ogievskiy
2018-12-06 16:31     ` Eric Blake
2018-12-06 17:03       ` Vladimir Sementsov-Ogievskiy
2018-11-30 22:03 ` [Qemu-devel] [PATCH 09/14] nbd/client: Refactor return of nbd_receive_negotiate() Eric Blake
2018-11-30 22:41   ` Richard W.M. Jones [this message]
2018-12-06 14:24   ` Vladimir Sementsov-Ogievskiy
2018-11-30 22:03 ` [Qemu-devel] [PATCH 10/14] nbd/client: Split handshake into two functions Eric Blake
2018-12-01 10:41   ` Richard W.M. Jones
2018-12-06 15:16   ` Vladimir Sementsov-Ogievskiy
2018-12-06 17:06     ` Vladimir Sementsov-Ogievskiy
2018-11-30 22:03 ` [Qemu-devel] [PATCH 11/14] nbd/client: Add nbd_receive_export_list() Eric Blake
2018-12-01 10:45   ` Richard W.M. Jones
2018-12-07 10:04   ` Vladimir Sementsov-Ogievskiy
2018-12-07 15:19     ` Eric Blake
2018-12-07 10:07   ` Vladimir Sementsov-Ogievskiy
2018-11-30 22:03 ` [Qemu-devel] [PATCH 12/14] nbd/client: Work around 3.0 bug for listing meta contexts Eric Blake
2018-12-07 11:21   ` Vladimir Sementsov-Ogievskiy
2018-12-07 15:21     ` Eric Blake
2018-11-30 22:03 ` [Qemu-devel] [PATCH 13/14] qemu-nbd: Add --list option Eric Blake
2018-12-01 10:58   ` Richard W.M. Jones
2018-12-07 12:48   ` Vladimir Sementsov-Ogievskiy
2018-12-07 15:36     ` Eric Blake
2018-12-07 16:49       ` Vladimir Sementsov-Ogievskiy
2018-12-07 16:49       ` Vladimir Sementsov-Ogievskiy
2018-12-07 16:59         ` Eric Blake
2018-11-30 22:03 ` [Qemu-devel] [PATCH 14/14] iotests: Enhance 223, 233 to cover 'qemu-nbd --list' Eric Blake
2018-12-01 11:04   ` Richard W.M. Jones
2018-12-07 13:08   ` Vladimir Sementsov-Ogievskiy
2018-12-01  7:42 ` [Qemu-devel] [PATCH for-4.0 00/14] nbd: add qemu-nbd --list Richard W.M. Jones
2018-12-01 13:57   ` Eric Blake
2018-12-01 15:00     ` Richard W.M. Jones

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=20181130224114.GE27120@redhat.com \
    --to=rjones@redhat.com \
    --cc=eblake@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=nsoffer@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=vsementsov@virtuozzo.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 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.