From nobody Mon Feb 9 00:42:19 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1516371660861208.5112559836508; Fri, 19 Jan 2018 06:21:00 -0800 (PST) Received: from localhost ([::1]:51673 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ecXXO-0007lE-S1 for importer@patchew.org; Fri, 19 Jan 2018 09:20:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51748) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ecXAe-0004Vl-H8 for qemu-devel@nongnu.org; Fri, 19 Jan 2018 08:57:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ecXAZ-0004NQ-JU for qemu-devel@nongnu.org; Fri, 19 Jan 2018 08:57:28 -0500 Received: from new-relay.sw.ru ([195.214.232.40]:36412) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ecXAZ-0004Lt-Bj; Fri, 19 Jan 2018 08:57:23 -0500 Received: from msk-vpn.virtuozzo.com ([195.214.232.6] helo=kvm.sw.ru) by new-relay.sw.ru with esmtp (Exim 4.89) (envelope-from ) id 1ecXAW-0005fT-25; Fri, 19 Jan 2018 16:57:20 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Fri, 19 Jan 2018 16:57:15 +0300 Message-Id: <20180119135719.24745-2-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.11.1 In-Reply-To: <20180119135719.24745-1-vsementsov@virtuozzo.com> References: <20180119135719.24745-1-vsementsov@virtuozzo.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 195.214.232.40 Subject: [Qemu-devel] [PATCH v3 1/5] qapi: add name parameter to nbd-server-add X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, vsementsov@virtuozzo.com, armbru@redhat.com, mreitz@redhat.com, den@openvz.org, pbonzini@redhat.com, dgilbert@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Allow user to specify name for new export, to not reuse internal node name and to not show it to clients. This also allows creating several exports per device. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- qapi/block.json | 9 +++++++-- blockdev-nbd.c | 14 +++++++++----- hmp.c | 5 +++-- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/qapi/block.json b/qapi/block.json index f093fa3f27..353e3a45bd 100644 --- a/qapi/block.json +++ b/qapi/block.json @@ -213,14 +213,19 @@ # # @device: The device name or node name of the node to be exported # +# @name: Export name. If unspecified, the @device parameter is used as the +# export name. (Since 2.12) +# # @writable: Whether clients should be able to write to the device via the # NBD connection (default false). # -# Returns: error if the device is already marked for export. +# Returns: error if the server is not running, or export with the same name +# already exists. # # Since: 1.3.0 ## -{ 'command': 'nbd-server-add', 'data': {'device': 'str', '*writable': 'boo= l'} } +{ 'command': 'nbd-server-add', + 'data': {'device': 'str', '*name': 'str', '*writable': 'bool'} } =20 ## # @nbd-server-stop: diff --git a/blockdev-nbd.c b/blockdev-nbd.c index 9e3c22109c..104789e521 100644 --- a/blockdev-nbd.c +++ b/blockdev-nbd.c @@ -140,8 +140,8 @@ void qmp_nbd_server_start(SocketAddressLegacy *addr, qapi_free_SocketAddress(addr_flat); } =20 -void qmp_nbd_server_add(const char *device, bool has_writable, bool writab= le, - Error **errp) +void qmp_nbd_server_add(const char *device, bool has_name, const char *nam= e, + bool has_writable, bool writable, Error **errp) { BlockDriverState *bs =3D NULL; BlockBackend *on_eject_blk; @@ -152,8 +152,12 @@ void qmp_nbd_server_add(const char *device, bool has_w= ritable, bool writable, return; } =20 - if (nbd_export_find(device)) { - error_setg(errp, "NBD server already exporting device '%s'", devic= e); + if (!has_name) { + name =3D device; + } + + if (nbd_export_find(name)) { + error_setg(errp, "NBD server already has export named '%s'", name); return; } =20 @@ -177,7 +181,7 @@ void qmp_nbd_server_add(const char *device, bool has_wr= itable, bool writable, return; } =20 - nbd_export_set_name(exp, device); + nbd_export_set_name(exp, name); =20 /* The list of named exports has a strong reference to this export now= and * our only way of accessing it is through nbd_export_find(), so we ca= n drop diff --git a/hmp.c b/hmp.c index c6bab5373b..37972f8322 100644 --- a/hmp.c +++ b/hmp.c @@ -2218,7 +2218,8 @@ void hmp_nbd_server_start(Monitor *mon, const QDict *= qdict) continue; } =20 - qmp_nbd_server_add(info->value->device, true, writable, &local_err= ); + qmp_nbd_server_add(info->value->device, false, NULL, + true, writable, &local_err); =20 if (local_err !=3D NULL) { qmp_nbd_server_stop(NULL); @@ -2238,7 +2239,7 @@ void hmp_nbd_server_add(Monitor *mon, const QDict *qd= ict) bool writable =3D qdict_get_try_bool(qdict, "writable", false); Error *local_err =3D NULL; =20 - qmp_nbd_server_add(device, true, writable, &local_err); + qmp_nbd_server_add(device, false, NULL, true, writable, &local_err); =20 if (local_err !=3D NULL) { hmp_handle_error(mon, &local_err); --=20 2.11.1