From: Kevin Wolf <kwolf@redhat.com>
To: qemu-block@nongnu.org
Cc: kwolf@redhat.com, peter.maydell@linaro.org, qemu-devel@nongnu.org
Subject: [PULL 29/30] hmp: Allow using qdev ID for qemu-io command
Date: Thu, 19 Dec 2019 18:24:40 +0100 [thread overview]
Message-ID: <20191219172441.7289-30-kwolf@redhat.com> (raw)
In-Reply-To: <20191219172441.7289-1-kwolf@redhat.com>
In order to issue requests on an existing BlockBackend with the
'qemu-io' HMP command, allow specifying the BlockBackend not only with a
BlockBackend name, but also with a qdev ID/QOM path for a device that
owns the (possibly anonymous) BlockBackend.
Because qdev names could be conflicting with BlockBackend and node
names, introduce a -d option to explicitly address a device. If the
option is not given, a BlockBackend or a node is addressed.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
monitor/hmp-cmds.c | 28 ++++++++++++++++++----------
hmp-commands.hx | 8 +++++---
2 files changed, 23 insertions(+), 13 deletions(-)
diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
index b2551c16d1..5f8941d298 100644
--- a/monitor/hmp-cmds.c
+++ b/monitor/hmp-cmds.c
@@ -2468,23 +2468,31 @@ void hmp_qemu_io(Monitor *mon, const QDict *qdict)
{
BlockBackend *blk;
BlockBackend *local_blk = NULL;
+ bool qdev = qdict_get_try_bool(qdict, "qdev", false);
const char* device = qdict_get_str(qdict, "device");
const char* command = qdict_get_str(qdict, "command");
Error *err = NULL;
int ret;
- blk = blk_by_name(device);
- if (!blk) {
- BlockDriverState *bs = bdrv_lookup_bs(NULL, device, &err);
- if (bs) {
- blk = local_blk = blk_new(bdrv_get_aio_context(bs),
- 0, BLK_PERM_ALL);
- ret = blk_insert_bs(blk, bs, &err);
- if (ret < 0) {
+ if (qdev) {
+ blk = blk_by_qdev_id(device, &err);
+ if (!blk) {
+ goto fail;
+ }
+ } else {
+ blk = blk_by_name(device);
+ if (!blk) {
+ BlockDriverState *bs = bdrv_lookup_bs(NULL, device, &err);
+ if (bs) {
+ blk = local_blk = blk_new(bdrv_get_aio_context(bs),
+ 0, BLK_PERM_ALL);
+ ret = blk_insert_bs(blk, bs, &err);
+ if (ret < 0) {
+ goto fail;
+ }
+ } else {
goto fail;
}
- } else {
- goto fail;
}
}
diff --git a/hmp-commands.hx b/hmp-commands.hx
index cfcc044ce4..dc23185de4 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -1875,9 +1875,11 @@ ETEXI
{
.name = "qemu-io",
- .args_type = "device:B,command:s",
- .params = "[device] \"[command]\"",
- .help = "run a qemu-io command on a block device",
+ .args_type = "qdev:-d,device:B,command:s",
+ .params = "[-d] [device] \"[command]\"",
+ .help = "run a qemu-io command on a block device\n\t\t\t"
+ "-d: [device] is a device ID rather than a "
+ "drive ID or node name",
.cmd = hmp_qemu_io,
},
--
2.20.1
next prev parent reply other threads:[~2019-12-19 17:43 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-19 17:24 [PULL 00/30] Block layer patches Kevin Wolf
2019-12-19 17:24 ` [PULL 01/30] iotests: Provide a function for checking the creation of huge files Kevin Wolf
2019-12-19 17:24 ` [PULL 02/30] iotests: Skip test 060 if it is not possible to create large files Kevin Wolf
2019-12-19 17:24 ` [PULL 03/30] iotests: Skip test 079 " Kevin Wolf
2019-12-19 17:24 ` [PULL 04/30] qapi: better document NVMe blockdev @device parameter Kevin Wolf
2019-12-19 17:24 ` [PULL 05/30] qemu-img: fix info --backing-chain --image-opts Kevin Wolf
2019-12-19 17:24 ` [PULL 06/30] block: Error out on image creation with conflicting size options Kevin Wolf
2019-12-19 17:24 ` [PULL 07/30] blockjob: Fix error message for negative speed Kevin Wolf
2019-12-19 17:24 ` [PULL 08/30] qcow2: Declare BDRV_REQ_NO_FALLBACK supported Kevin Wolf
2019-12-19 17:24 ` [PULL 09/30] iotests: Add qemu_io_log() Kevin Wolf
2019-12-19 17:24 ` [PULL 10/30] iotests: Fix timeout in run_job() Kevin Wolf
2019-12-19 17:24 ` [PULL 11/30] iotests: Support job-complete " Kevin Wolf
2019-12-19 17:24 ` [PULL 12/30] qcow2: Use offset_into_cluster() Kevin Wolf
2019-12-19 17:24 ` [PULL 13/30] MAINTAINERS: fix qcow2-bitmap.c under Dirty Bitmaps header Kevin Wolf
2019-12-19 17:24 ` [PULL 14/30] iotests: Add more "_require_drivers" checks to the shell-based tests Kevin Wolf
2019-12-19 17:24 ` [PULL 15/30] iotests/273: Filter format-specific information Kevin Wolf
2019-12-19 17:24 ` [PULL 16/30] iotests: Fix IMGOPTSSYNTAX for nbd Kevin Wolf
2019-12-19 17:24 ` [PULL 17/30] qcow2: Move error check of local_err near its assignment Kevin Wolf
2019-12-19 17:24 ` [PULL 18/30] iotests: Create VM.blockdev_create() Kevin Wolf
2019-12-19 17:24 ` [PULL 19/30] iotests: 255: Drop blockdev_create() Kevin Wolf
2019-12-19 17:24 ` [PULL 20/30] iotests: 206: Convert to VM.blockdev_create() Kevin Wolf
2019-12-19 17:24 ` [PULL 21/30] iotests: 210: " Kevin Wolf
2019-12-19 17:24 ` [PULL 22/30] iotests: 212: " Kevin Wolf
2019-12-19 17:24 ` [PULL 23/30] iotests: 213: " Kevin Wolf
2019-12-19 17:24 ` [PULL 24/30] iotests: 237: " Kevin Wolf
2019-12-19 17:24 ` [PULL 25/30] iotests: 266: " Kevin Wolf
2019-12-19 17:24 ` [PULL 26/30] iotests: 207: Remove duplication with VM.blockdev_create() Kevin Wolf
2019-12-19 17:24 ` [PULL 27/30] iotests: 211: " Kevin Wolf
2019-12-19 17:24 ` [PULL 28/30] block: Activate recursively even for already active nodes Kevin Wolf
2019-12-19 17:24 ` Kevin Wolf [this message]
2019-12-19 17:24 ` [PULL 30/30] iotests: Test external snapshot with VM state Kevin Wolf
2020-01-03 14:29 ` [PULL 00/30] Block layer patches Peter Maydell
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=20191219172441.7289-30-kwolf@redhat.com \
--to=kwolf@redhat.com \
--cc=peter.maydell@linaro.org \
--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.