All of lore.kernel.org
 help / color / mirror / Atom feed
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



  reply	other threads:[~2020-01-28 19:47 UTC|newest]

Thread overview: 49+ 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: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 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.