From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Maxim Levitsky <mlevitsk@redhat.com>, eblake@redhat.com
Cc: Kevin Wolf <kwolf@redhat.com>,
qemu-block@nongnu.org, Markus Armbruster <armbru@redhat.com>,
qemu-devel@nongnu.org, Max Reitz <mreitz@redhat.com>,
Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [PATCH v3 08/13] monitor/hmp: move hmp_nbd_server* to block-hmp-cmds.c
Date: Tue, 28 Jan 2020 18:56:27 +0000 [thread overview]
Message-ID: <20200128185627.GD3215@work-vm> (raw)
In-Reply-To: <20200127103647.17761-9-mlevitsk@redhat.com>
* Maxim Levitsky (mlevitsk@redhat.com) wrote:
> Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Yes, I think that's OK; I can imagine nbd might want to move on it's own
somewhere since it's not really core block code; copying in Eric.
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> ---
> block/monitor/block-hmp-cmds.c | 88 ++++++++++++++++++++++++++++++
> include/block/block-hmp-commands.h | 5 ++
> include/monitor/hmp.h | 4 --
> monitor/hmp-cmds.c | 87 -----------------------------
> 4 files changed, 93 insertions(+), 91 deletions(-)
>
> diff --git a/block/monitor/block-hmp-cmds.c b/block/monitor/block-hmp-cmds.c
> index 9aa94ea6e0..df0178d0f9 100644
> --- a/block/monitor/block-hmp-cmds.c
> +++ b/block/monitor/block-hmp-cmds.c
> @@ -22,8 +22,10 @@
> #include "qapi/qmp/qerror.h"
> #include "qemu/config-file.h"
> #include "qemu/option.h"
> +#include "qemu/sockets.h"
> #include "sysemu/sysemu.h"
> #include "monitor/monitor.h"
> +#include "block/nbd.h"
> #include "block/block_int.h"
> #include "block/block-hmp-commands.h"
> #include "monitor/hmp.h"
> @@ -327,3 +329,89 @@ void hmp_snapshot_delete_blkdev_internal(Monitor *mon, const QDict *qdict)
> true, name, &err);
> hmp_handle_error(mon, err);
> }
> +
> +void hmp_nbd_server_start(Monitor *mon, const QDict *qdict)
> +{
> + const char *uri = qdict_get_str(qdict, "uri");
> + bool writable = qdict_get_try_bool(qdict, "writable", false);
> + bool all = qdict_get_try_bool(qdict, "all", false);
> + Error *local_err = NULL;
> + BlockInfoList *block_list, *info;
> + SocketAddress *addr;
> +
> + if (writable && !all) {
> + error_setg(&local_err, "-w only valid together with -a");
> + goto exit;
> + }
> +
> + /* First check if the address is valid and start the server. */
> + addr = socket_parse(uri, &local_err);
> + if (local_err != NULL) {
> + goto exit;
> + }
> +
> + nbd_server_start(addr, NULL, NULL, &local_err);
> + qapi_free_SocketAddress(addr);
> + if (local_err != NULL) {
> + goto exit;
> + }
> +
> + if (!all) {
> + return;
> + }
> +
> + /* Then try adding all block devices. If one fails, close all and
> + * exit.
> + */
> + block_list = qmp_query_block(NULL);
> +
> + for (info = block_list; info; info = info->next) {
> + if (!info->value->has_inserted) {
> + continue;
> + }
> +
> + qmp_nbd_server_add(info->value->device, false, NULL,
> + true, writable, false, NULL, &local_err);
> +
> + if (local_err != NULL) {
> + qmp_nbd_server_stop(NULL);
> + break;
> + }
> + }
> +
> + qapi_free_BlockInfoList(block_list);
> +
> +exit:
> + hmp_handle_error(mon, local_err);
> +}
> +
> +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, !!name, name, true, writable,
> + false, NULL, &local_err);
> + 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)
> +{
> + Error *err = NULL;
> +
> + qmp_nbd_server_stop(&err);
> + hmp_handle_error(mon, err);
> +}
> diff --git a/include/block/block-hmp-commands.h b/include/block/block-hmp-commands.h
> index 3fc2daf3a9..721b9a1978 100644
> --- a/include/block/block-hmp-commands.h
> +++ b/include/block/block-hmp-commands.h
> @@ -21,4 +21,9 @@ void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict);
> void hmp_snapshot_blkdev_internal(Monitor *mon, const QDict *qdict);
> void hmp_snapshot_delete_blkdev_internal(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);
> +
> #endif
> diff --git a/include/monitor/hmp.h b/include/monitor/hmp.h
> index 6d34e29bb6..736a969131 100644
> --- a/include/monitor/hmp.h
> +++ b/include/monitor/hmp.h
> @@ -94,10 +94,6 @@ void hmp_getfd(Monitor *mon, const QDict *qdict);
> void hmp_closefd(Monitor *mon, const QDict *qdict);
> 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);
> void hmp_chardev_remove(Monitor *mon, const QDict *qdict);
> diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
> index 46b46b6dd7..67d2ca8a4c 100644
> --- a/monitor/hmp-cmds.c
> +++ b/monitor/hmp-cmds.c
> @@ -45,7 +45,6 @@
> #include "qapi/string-output-visitor.h"
> #include "qom/object_interfaces.h"
> #include "ui/console.h"
> -#include "block/nbd.h"
> #include "block/qapi.h"
> #include "qemu-io.h"
> #include "qemu/cutils.h"
> @@ -2154,92 +2153,6 @@ void hmp_screendump(Monitor *mon, const QDict *qdict)
> hmp_handle_error(mon, err);
> }
>
> -void hmp_nbd_server_start(Monitor *mon, const QDict *qdict)
> -{
> - const char *uri = qdict_get_str(qdict, "uri");
> - bool writable = qdict_get_try_bool(qdict, "writable", false);
> - bool all = qdict_get_try_bool(qdict, "all", false);
> - Error *local_err = NULL;
> - BlockInfoList *block_list, *info;
> - SocketAddress *addr;
> -
> - if (writable && !all) {
> - error_setg(&local_err, "-w only valid together with -a");
> - goto exit;
> - }
> -
> - /* First check if the address is valid and start the server. */
> - addr = socket_parse(uri, &local_err);
> - if (local_err != NULL) {
> - goto exit;
> - }
> -
> - nbd_server_start(addr, NULL, NULL, &local_err);
> - qapi_free_SocketAddress(addr);
> - if (local_err != NULL) {
> - goto exit;
> - }
> -
> - if (!all) {
> - return;
> - }
> -
> - /* Then try adding all block devices. If one fails, close all and
> - * exit.
> - */
> - block_list = qmp_query_block(NULL);
> -
> - for (info = block_list; info; info = info->next) {
> - if (!info->value->has_inserted) {
> - continue;
> - }
> -
> - qmp_nbd_server_add(info->value->device, false, NULL,
> - true, writable, false, NULL, &local_err);
> -
> - if (local_err != NULL) {
> - qmp_nbd_server_stop(NULL);
> - break;
> - }
> - }
> -
> - qapi_free_BlockInfoList(block_list);
> -
> -exit:
> - hmp_handle_error(mon, local_err);
> -}
> -
> -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, !!name, name, true, writable,
> - false, NULL, &local_err);
> - 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)
> -{
> - Error *err = NULL;
> -
> - qmp_nbd_server_stop(&err);
> - hmp_handle_error(mon, err);
> -}
> -
> void hmp_chardev_add(Monitor *mon, const QDict *qdict)
> {
> const char *args = qdict_get_str(qdict, "args");
> --
> 2.17.2
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2020-01-28 19:47 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-27 10:36 [PATCH v3 00/13] RFC: [for 5.0]: HMP monitor handlers cleanups Maxim Levitsky
2020-01-27 10:36 ` [PATCH v3 01/13] usb/dev-storage: remove unused include Maxim Levitsky
2020-01-27 10:49 ` Philippe Mathieu-Daudé
2020-01-27 10:36 ` [PATCH v3 02/13] monitor/hmp: uninline add_init_drive Maxim Levitsky
2020-01-27 10:36 ` [PATCH v3 03/13] monitor/hmp: rename device-hotplug.c to block/monitor/block-hmp-cmds.c Maxim Levitsky
2020-01-28 16:56 ` Dr. David Alan Gilbert
2020-01-28 19:28 ` Maxim Levitsky
2020-01-29 10:19 ` Markus Armbruster
2020-01-29 11:31 ` Maxim Levitsky
2020-01-27 10:36 ` [PATCH v3 04/13] monitor/hmp: move hmp_drive_del and hmp_commit to block-hmp-cmds.c Maxim Levitsky
2020-01-28 17:51 ` Dr. David Alan Gilbert
2020-01-28 19:29 ` Maxim Levitsky
2020-01-27 10:36 ` [PATCH v3 05/13] monitor/hmp: move hmp_drive_mirror and hmp_drive_backup " Maxim Levitsky
2020-01-28 17:59 ` Dr. David Alan Gilbert
2020-01-27 10:36 ` [PATCH v3 06/13] monitor/hmp: move hmp_block_job* " Maxim Levitsky
2020-01-28 18:11 ` Dr. David Alan Gilbert
2020-01-28 18:15 ` Dr. David Alan Gilbert
2020-01-27 10:36 ` [PATCH v3 07/13] monitor/hmp: move hmp_snapshot_* " Maxim Levitsky
2020-01-28 18:53 ` Dr. David Alan Gilbert
2020-01-27 10:36 ` [PATCH v3 08/13] monitor/hmp: move hmp_nbd_server* " Maxim Levitsky
2020-01-28 18:56 ` Dr. David Alan Gilbert [this message]
2020-01-28 20:05 ` Eric Blake
2020-01-27 10:36 ` [PATCH v3 09/13] monitor/hmp: move remaining hmp_block* functions " Maxim Levitsky
2020-01-28 18:45 ` Dr. David Alan Gilbert
2020-01-28 18:51 ` Dr. David Alan Gilbert
2020-01-27 10:36 ` [PATCH v3 10/13] monitor/hmp: move hmp_info_block* " Maxim Levitsky
2020-01-28 19:00 ` Dr. David Alan Gilbert
2020-01-27 10:36 ` [PATCH v3 11/13] monitor: Move hmp_drive_add_node " Maxim Levitsky
2020-01-28 19:03 ` Dr. David Alan Gilbert
2020-01-28 19:30 ` Maxim Levitsky
2020-01-27 10:36 ` [PATCH v3 12/13] add 'error' prefix to vreport Maxim Levitsky
2020-01-28 19:30 ` Maxim Levitsky
2020-01-29 10:38 ` Markus Armbruster
2020-01-29 10:58 ` Maxim Levitsky
2020-01-27 10:36 ` [PATCH v3 13/13] monitor/hmp: Prefer to use hmp_handle_error for error reporting in block hmp commands Maxim Levitsky
2020-01-28 19:31 ` Maxim Levitsky
2020-01-29 10:27 ` Markus Armbruster
2020-01-29 11:05 ` Maxim Levitsky
2020-01-27 10:55 ` [PATCH v3 00/13] RFC: [for 5.0]: HMP monitor handlers cleanups no-reply
2020-01-27 10:59 ` Maxim Levitsky
2020-01-27 19:39 ` John Snow
2020-01-27 20:43 ` Peter Krempa
2020-01-27 21:01 ` John Snow
2020-01-28 9:13 ` Ján Tomko
2020-01-28 16:47 ` Dr. David Alan Gilbert
2020-02-05 23:25 ` John Snow
2020-02-06 9:35 ` Dr. David Alan Gilbert
2020-01-28 8:17 ` Markus Armbruster
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=20200128185627.GD3215@work-vm \
--to=dgilbert@redhat.com \
--cc=armbru@redhat.com \
--cc=eblake@redhat.com \
--cc=kraxel@redhat.com \
--cc=kwolf@redhat.com \
--cc=mlevitsk@redhat.com \
--cc=mreitz@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).