From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56707) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ef6LL-0005vh-4P for qemu-devel@nongnu.org; Fri, 26 Jan 2018 10:55:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ef6LK-00035d-3w for qemu-devel@nongnu.org; Fri, 26 Jan 2018 10:55:07 -0500 Date: Fri, 26 Jan 2018 12:16:38 +0000 From: "Dr. David Alan Gilbert" Message-ID: <20180126121637.GC2610@work-vm> References: <20180125144557.25502-1-eblake@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180125144557.25502-1-eblake@redhat.com> Subject: Re: [Qemu-devel] [PATCH] hmp: Add nbd_server_remove to mirror QMP command List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Blake Cc: qemu-devel@nongnu.org, vsementsov@virtuozzo.com, qemu-block@nongnu.org * Eric Blake (eblake@redhat.com) wrote: > Since everything else about the nbd-server-* QMP commands is > accessible from HMP, we might as well make removing an export > available as well. For now, I went with a bool flag rather > than a mode string for choosing between safe (default) and > hard modes. > > Signed-off-by: Eric Blake For the HMP side of things: Reviewed-by: Dr. David Alan Gilbert and yes, if you've already got the rest of it on your NBD queue just add this one into your queue. Dave > --- > > Based-on: <20180119135719.24745-1-vsementsov@virtuozzo.com> > ([PATCH v3 0/5] nbd export qmp interface) > > hmp.h | 1 + > hmp.c | 14 +++++++++++--- > hmp-commands.hx | 17 +++++++++++++++++ > 3 files changed, 29 insertions(+), 3 deletions(-) > > diff --git a/hmp.h b/hmp.h > index a6f56b1f29e..536cb91caa4 100644 > --- a/hmp.h > +++ b/hmp.h > @@ -101,6 +101,7 @@ void hmp_sendkey(Monitor *mon, const QDict *qdict); > void hmp_screendump(Monitor *mon, const QDict *qdict); > void hmp_nbd_server_start(Monitor *mon, const QDict *qdict); > void hmp_nbd_server_add(Monitor *mon, const QDict *qdict); > +void hmp_nbd_server_remove(Monitor *mon, const QDict *qdict); > void hmp_nbd_server_stop(Monitor *mon, const QDict *qdict); > void hmp_chardev_add(Monitor *mon, const QDict *qdict); > void hmp_chardev_change(Monitor *mon, const QDict *qdict); > diff --git a/hmp.c b/hmp.c > index 7a64dd59c5c..b3de32d219b 100644 > --- a/hmp.c > +++ b/hmp.c > @@ -2226,10 +2226,18 @@ void hmp_nbd_server_add(Monitor *mon, const QDict *qdict) > Error *local_err = NULL; > > qmp_nbd_server_add(device, !!name, name, true, writable, &local_err); > + hmp_handle_error(mon, &local_err); > +} > > - if (local_err != NULL) { > - hmp_handle_error(mon, &local_err); > - } > +void hmp_nbd_server_remove(Monitor *mon, const QDict *qdict) > +{ > + const char *name = qdict_get_str(qdict, "name"); > + bool force = qdict_get_try_bool(qdict, "force", false); > + Error *err = NULL; > + > + /* Rely on NBD_SERVER_REMOVE_MODE_SAFE being the default */ > + qmp_nbd_server_remove(name, force, NBD_SERVER_REMOVE_MODE_HARD, &err); > + hmp_handle_error(mon, &err); > } > > void hmp_nbd_server_stop(Monitor *mon, const QDict *qdict) > diff --git a/hmp-commands.hx b/hmp-commands.hx > index b8b6fb91848..8a59338bc20 100644 > --- a/hmp-commands.hx > +++ b/hmp-commands.hx > @@ -1565,6 +1565,23 @@ 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. The export name is controlled by @var{name}, > defaulting to @var{device}. > +ETEXI > + > + { > + .name = "nbd_server_remove", > + .args_type = "force:-f,name:s", > + .params = "nbd_server_remove [-f] name", > + .help = "remove an export previously exposed via NBD", > + .cmd = hmp_nbd_server_remove, > + }, > +STEXI > +@item nbd_server_remove [-f] @var{name} > +@findex nbd_server_remove > +Stop exporting a block device through QEMU's NBD server, which was > +previously started with @command{nbd_server_add}. The @option{-f} > +option forces the server to drop the export immediately even if > +clients are connected; otherwise the command fails unless there are no > +clients. > ETEXI > > { > -- > 2.14.3 > -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK