All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrange" <berrange@redhat.com>
To: qemu-devel@nongnu.org
Cc: Paolo Bonzini <pbonzini@redhat.com>, qemu-block@nongnu.org
Subject: [Qemu-devel] [PATCH v4 08/14] nbd: allow setting of an export name for qemu-nbd server
Date: Thu, 21 Jan 2016 16:37:21 +0000	[thread overview]
Message-ID: <1453394247-2267-9-git-send-email-berrange@redhat.com> (raw)
In-Reply-To: <1453394247-2267-1-git-send-email-berrange@redhat.com>

The qemu-nbd server currently always uses the old style protocol
since it never sets any export name. This is a problem because
future TLS support will require use of the new style protocol
negotiation.

This adds "--exportname NAME" / "-x NAME" arguments to qemu-nbd
which allow the user to set an explicit export name. When an
export name is set the server will always use the new style
NBD protocol.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
---
 qemu-nbd.c    | 14 ++++++++++++--
 qemu-nbd.texi |  3 +++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/qemu-nbd.c b/qemu-nbd.c
index 45eb416..d494112 100644
--- a/qemu-nbd.c
+++ b/qemu-nbd.c
@@ -47,6 +47,7 @@
 #define QEMU_NBD_OPT_IMAGE_OPTS    261
 
 static NBDExport *exp;
+static bool newproto;
 static int verbose;
 static char *srcpath;
 static SocketAddress *saddr;
@@ -342,7 +343,7 @@ static gboolean nbd_accept(QIOChannel *ioc, GIOCondition cond, gpointer opaque)
 
     nb_fds++;
     nbd_update_server_watch();
-    nbd_client_new(exp, cioc, nbd_client_closed);
+    nbd_client_new(newproto ? NULL : exp, cioc, nbd_client_closed);
     object_unref(OBJECT(cioc));
 
     return TRUE;
@@ -445,7 +446,7 @@ int main(int argc, char **argv)
     off_t fd_size;
     QemuOpts *sn_opts = NULL;
     const char *sn_id_or_name = NULL;
-    const char *sopt = "hVb:o:p:rsnP:c:dvk:e:f:tl:";
+    const char *sopt = "hVb:o:p:rsnP:c:dvk:e:f:tl:x:";
     struct option lopt[] = {
         { "help", no_argument, NULL, 'h' },
         { "version", no_argument, NULL, 'V' },
@@ -471,6 +472,7 @@ int main(int argc, char **argv)
         { "verbose", no_argument, NULL, 'v' },
         { "object", required_argument, NULL, QEMU_NBD_OPT_OBJECT },
         { "image-opts", no_argument, NULL, QEMU_NBD_OPT_IMAGE_OPTS },
+        { "export-name", required_argument, NULL, 'x' },
         { NULL, 0, NULL, 0 }
     };
     int ch;
@@ -489,6 +491,7 @@ int main(int argc, char **argv)
     QDict *options = NULL;
     QemuOpts *opts;
     bool imageOpts = false;
+    const char *export_name = NULL;
 
     /* The client thread uses SIGTERM to interrupt the server.  A signal
      * handler ensures that "qemu-nbd -v -c" exits with a nice status code.
@@ -640,6 +643,9 @@ int main(int argc, char **argv)
         case 't':
             persistent = 1;
             break;
+        case 'x':
+            export_name = optarg;
+            break;
         case 'v':
             verbose = 1;
             break;
@@ -840,6 +846,10 @@ int main(int argc, char **argv)
         error_report_err(local_err);
         exit(EXIT_FAILURE);
     }
+    if (export_name) {
+        nbd_export_set_name(exp, export_name);
+        newproto = true;
+    }
 
     server_ioc = qio_channel_socket_new();
     if (qio_channel_socket_listen_sync(server_ioc, saddr, &local_err) < 0) {
diff --git a/qemu-nbd.texi b/qemu-nbd.texi
index 9f9daca..5fbe486 100644
--- a/qemu-nbd.texi
+++ b/qemu-nbd.texi
@@ -63,6 +63,9 @@ Export QEMU disk image using NBD protocol.
   force block driver for format @var{fmt} instead of auto-detecting
 @item -t, --persistent
   don't exit on the last connection
+@item -x NAME, --export-name=NAME
+  set the NDB volume export name. This switches the server to use
+  the new style NBD protocol negotiation
 @item -v, --verbose
   display extra debugging information
 @item -h, --help
-- 
2.5.0

  parent reply	other threads:[~2016-01-21 16:37 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-21 16:37 [Qemu-devel] [PATCH v4 00/14] Implement TLS support to QEMU NBD server & client Daniel P. Berrange
2016-01-21 16:37 ` [Qemu-devel] [PATCH v4 01/14] nbd: convert block client to use I/O channels for connection setup Daniel P. Berrange
2016-01-21 16:37 ` [Qemu-devel] [PATCH v4 02/14] nbd: convert qemu-nbd server " Daniel P. Berrange
2016-01-21 16:37 ` [Qemu-devel] [PATCH v4 03/14] nbd: convert blockdev NBD " Daniel P. Berrange
2016-01-21 16:37 ` [Qemu-devel] [PATCH v4 04/14] nbd: convert to using I/O channels for actual socket I/O Daniel P. Berrange
2016-01-21 16:37 ` [Qemu-devel] [PATCH v4 05/14] nbd: invert client logic for negotiating protocol version Daniel P. Berrange
2016-01-21 16:37 ` [Qemu-devel] [PATCH v4 06/14] nbd: make server compliant with fixed newstyle spec Daniel P. Berrange
2016-01-21 16:37 ` [Qemu-devel] [PATCH v4 07/14] nbd: make client request fixed new style if advertized Daniel P. Berrange
2016-01-21 16:37 ` Daniel P. Berrange [this message]
2016-01-21 16:37 ` [Qemu-devel] [PATCH v4 09/14] nbd: always query export list in fixed new style protocol Daniel P. Berrange
2016-01-21 16:37 ` [Qemu-devel] [PATCH v4 10/14] nbd: use "" as a default export name if none provided Daniel P. Berrange
2016-01-21 16:37 ` [Qemu-devel] [PATCH v4 11/14] nbd: implement TLS support in the protocol negotiation Daniel P. Berrange
2016-01-21 16:37 ` [Qemu-devel] [PATCH v4 12/14] nbd: enable use of TLS with NBD block driver Daniel P. Berrange
2016-01-21 16:37 ` [Qemu-devel] [PATCH v4 13/14] nbd: enable use of TLS with qemu-nbd server Daniel P. Berrange
2016-01-21 16:37 ` [Qemu-devel] [PATCH v4 14/14] nbd: enable use of TLS with nbd-server-start command Daniel P. Berrange
2016-01-26 12:56 ` [Qemu-devel] [PATCH v4 00/14] Implement TLS support to QEMU NBD server & client Paolo Bonzini

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=1453394247-2267-9-git-send-email-berrange@redhat.com \
    --to=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.