From: Thomas Huth <thuth@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>, qemu-block@nongnu.org
Cc: Hanna Reitz <hreitz@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
qemu-devel@nongnu.org
Subject: [PATCH v2] block: Print simple help text when calling "-blockdev help"
Date: Mon, 14 Sep 2026 11:00:36 +0200 [thread overview]
Message-ID: <20260914090036.125300-1-thuth@redhat.com> (raw)
Other command line options like "-chardev", "-netdev" or "-device"
already present the user with a list of available parameters, but
when running "-blockdev help", there is currently only an error
message. There is already the possibility to run "-drive format=help",
but it does not seem to be documented, so this is not very useful
for the average user. Thus let's improve this situation by providing
a proper list of available drivers when running QEMU with
"-blockdev help".
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
v2: Don't re-use the code from "-drive format=help" and print the
help in a better readable way instead
include/block/block-common.h | 1 +
block.c | 15 +++++++++++++++
system/vl.c | 7 +++++--
3 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/include/block/block-common.h b/include/block/block-common.h
index 895ea175413..c76a72c1220 100644
--- a/include/block/block-common.h
+++ b/include/block/block-common.h
@@ -583,5 +583,6 @@ char *path_combine(const char *base_path, const char *filename);
char *bdrv_get_full_backing_filename_from_filename(const char *backed,
const char *backing,
Error **errp);
+void bdrv_show_help(void);
#endif /* BLOCK_COMMON_H */
diff --git a/block.c b/block.c
index f0a6042e616..895d6db5acf 100644
--- a/block.c
+++ b/block.c
@@ -524,6 +524,21 @@ bool bdrv_uses_whitelist(void)
return use_bdrv_whitelist;
}
+static void bdrv_help_format_print(void *opaque, const char *name)
+{
+ if (bdrv_format_is_whitelisted(name, false)) {
+ printf("%s\n", name);
+ } else {
+ printf("%s (read-only)\n", name);
+ }
+}
+
+void bdrv_show_help(void)
+{
+ printf("Available blockdev drivers:\n");
+ bdrv_iterate_format(bdrv_help_format_print, NULL, true);
+}
+
typedef struct CreateCo {
BlockDriver *drv;
char *filename;
diff --git a/system/vl.c b/system/vl.c
index 9bd7664b85c..dc93e8737cb 100644
--- a/system/vl.c
+++ b/system/vl.c
@@ -2960,7 +2960,10 @@ void qemu_init(int argc, char **argv)
HD_OPTS);
break;
case QEMU_OPTION_blockdev:
- {
+ if (is_help_option(optarg)) {
+ bdrv_show_help();
+ exit(EXIT_SUCCESS);
+ } else {
Visitor *v;
BlockdevOptionsQueueEntry *bdo;
@@ -2973,8 +2976,8 @@ void qemu_init(int argc, char **argv)
visit_free(v);
loc_save(&bdo->loc);
QSIMPLEQ_INSERT_TAIL(&bdo_queue, bdo, entry);
- break;
}
+ break;
case QEMU_OPTION_drive:
if (!qemu_opts_parse_noisily(qemu_find_opts("drive"),
optarg, false)) {
--
2.55.0
next reply other threads:[~2026-09-14 9:01 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-14 9:00 Thomas Huth [this message]
2026-10-20 13:58 ` [PATCH v2] block: Print simple help text when calling "-blockdev help" Thomas Huth
2026-10-21 13:34 ` Eric Blake
2026-10-21 13:36 ` Eric Blake
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=20260914090036.125300-1-thuth@redhat.com \
--to=thuth@redhat.com \
--cc=hreitz@redhat.com \
--cc=kwolf@redhat.com \
--cc=pbonzini@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.