hmp: Add name parameter to nbd_server_add
authorEric Blake <eblake@redhat.com>
Tue, 9 Jan 2018 19:28:02 +0000 (13:28 -0600)
committerEric Blake <eblake@redhat.com>
Fri, 26 Jan 2018 15:37:20 +0000 (09:37 -0600)
Extend the flexibility of the previous QMP patch to also work
in HMP.

Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20180109192802.17167-1-eblake@redhat.com>

hmp-commands.hx
hmp.c

index 6d5ebdf6ab1d951ffedab6e49cef02a9e0c5ea0a..b8b6fb91848d4a47d9a641f7e6d5f0771606399a 100644 (file)
@@ -1553,17 +1553,18 @@ ETEXI
 
     {
         .name       = "nbd_server_add",
-        .args_type  = "writable:-w,device:B",
-        .params     = "nbd_server_add [-w] device",
+        .args_type  = "writable:-w,device:B,name:s?",
+        .params     = "nbd_server_add [-w] device [name]",
         .help       = "export a block device via NBD",
         .cmd        = hmp_nbd_server_add,
     },
 STEXI
-@item nbd_server_add @var{device}
+@item nbd_server_add @var{device} [ @var{name} ]
 @findex nbd_server_add
 Export a block device through QEMU's NBD server, which must be started
 beforehand with @command{nbd_server_start}.  The @option{-w} option makes the
-exported device writable too.
+exported device writable too.  The export name is controlled by @var{name},
+defaulting to @var{device}.
 ETEXI
 
     {
diff --git a/hmp.c b/hmp.c
index 5bcfc36de107e3307b6562a0fdea1d6064700e44..7a64dd59c5cd5fee9bcc2af326d052a08a8c5a34 100644 (file)
--- a/hmp.c
+++ b/hmp.c
@@ -2221,10 +2221,11 @@ exit:
 void hmp_nbd_server_add(Monitor *mon, const QDict *qdict)
 {
     const char *device = qdict_get_str(qdict, "device");
+    const char *name = qdict_get_try_str(qdict, "name");
     bool writable = qdict_get_try_bool(qdict, "writable", false);
     Error *local_err = NULL;
 
-    qmp_nbd_server_add(device, false, NULL, true, writable, &local_err);
+    qmp_nbd_server_add(device, !!name, name, true, writable, &local_err);
 
     if (local_err != NULL) {
         hmp_handle_error(mon, &local_err);