All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Blake <eblake@redhat.com>
To: qemu-devel@nongnu.org
Cc: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	"open list:Network Block Dev..." <qemu-block@nongnu.org>
Subject: [Qemu-devel] [PULL 02/11] nbd/server: nbd_negotiate: return 1 on NBD_OPT_ABORT
Date: Mon, 10 Jul 2017 07:14:25 -0500	[thread overview]
Message-ID: <20170710121434.5047-3-eblake@redhat.com> (raw)
In-Reply-To: <20170710121434.5047-1-eblake@redhat.com>

From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>

Separate the case when a client sends NBD_OPT_ABORT from all other
errors. It will be needed for the following patch, where errors will be
reported.
This particular case is not actually an error - it honestly follows the
NBD protocol. Therefore it should not be reported like an error.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20170707152918.23086-2-vsementsov@virtuozzo.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
---
 nbd/server.c | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/nbd/server.c b/nbd/server.c
index 8a70c05..3963972 100644
--- a/nbd/server.c
+++ b/nbd/server.c
@@ -349,9 +349,13 @@ static QIOChannel *nbd_negotiate_handle_starttls(NBDClient *client,
     return QIO_CHANNEL(tioc);
 }

-
-/* Process all NBD_OPT_* client option commands.
- * Return -errno on error, 0 on success. */
+/* nbd_negotiate_options
+ * Process all NBD_OPT_* client option commands.
+ * Return:
+ * -errno  on error
+ * 0       on successful negotiation
+ * 1       if client sent NBD_OPT_ABORT, i.e. on valid disconnect
+ */
 static int nbd_negotiate_options(NBDClient *client)
 {
     uint32_t flags;
@@ -459,7 +463,7 @@ static int nbd_negotiate_options(NBDClient *client)
                 }
                 /* Let the client keep trying, unless they asked to quit */
                 if (clientflags == NBD_OPT_ABORT) {
-                    return -EINVAL;
+                    return 1;
                 }
                 break;
             }
@@ -477,7 +481,7 @@ static int nbd_negotiate_options(NBDClient *client)
                  * disconnecting, but that we must also tolerate
                  * guests that don't wait for our reply. */
                 nbd_negotiate_send_rep(client->ioc, NBD_REP_ACK, clientflags);
-                return -EINVAL;
+                return 1;

             case NBD_OPT_EXPORT_NAME:
                 return nbd_negotiate_handle_export_name(client, length);
@@ -533,6 +537,12 @@ static int nbd_negotiate_options(NBDClient *client)
     }
 }

+/* nbd_negotiate
+ * Return:
+ * -errno  on error
+ * 0       on successful negotiation
+ * 1       if client sent NBD_OPT_ABORT, i.e. on valid disconnect
+ */
 static coroutine_fn int nbd_negotiate(NBDClient *client)
 {
     char buf[8 + 8 + 8 + 128];
-- 
2.9.4

  parent reply	other threads:[~2017-07-10 12:14 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-10 12:14 [Qemu-devel] [PULL 00/11] NBD patches Eric Blake
2017-07-10 12:14 ` [Qemu-devel] [PULL 01/11] MAINTAINERS: Promote NBD to supported, with new maintainer Eric Blake
2017-07-10 14:47   ` Eric Blake
2017-07-10 12:14 ` Eric Blake [this message]
2017-07-10 12:14 ` [Qemu-devel] [PULL 03/11] nbd/server: refactor nbd_negotiate Eric Blake
2017-07-10 12:14 ` [Qemu-devel] [PULL 04/11] nbd/server: use errp instead of LOG Eric Blake
2017-07-10 12:14 ` [Qemu-devel] [PULL 05/11] nbd/server: add errp to nbd_send_reply() Eric Blake
2017-07-10 12:14 ` [Qemu-devel] [PULL 06/11] nbd/common: nbd_tls_handshake: remove extra TRACE Eric Blake
2017-07-10 12:14 ` [Qemu-devel] [PULL 07/11] nbd/client: refactor TRACE of NBD_MAGIC Eric Blake
2017-07-10 12:14 ` [Qemu-devel] [PULL 08/11] nbd/server: fix TRACE in nbd_negotiate_send_rep_len Eric Blake
2017-07-10 12:14 ` [Qemu-devel] [PULL 09/11] nbd/server: rename clientflags var in nbd_negotiate_options Eric Blake
2017-07-10 12:14 ` [Qemu-devel] [PULL 10/11] nbd: refactor tracing Eric Blake
2017-07-10 12:14 ` [Qemu-devel] [PULL 11/11] nbd: use generic trace subsystem instead of TRACE macro Eric Blake
2017-07-10 14:24 ` [Qemu-devel] [PULL 00/11] NBD patches Peter Maydell
2017-07-10 14:44   ` Eric Blake

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=20170710121434.5047-3-eblake@redhat.com \
    --to=eblake@redhat.com \
    --cc=pbonzini@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.