From: Jeff Cody <jcody@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, jdurgin@redhat.com, kwolf@redhat.com,
mreitz@redhat.com, eblake@redhat.com
Subject: Re: [Qemu-devel] [PATCH RFC v3 for-2.9 06/11] rbd: Clean up runtime_opts, fix -drive to reject filename
Date: Mon, 27 Mar 2017 22:16:32 -0400 [thread overview]
Message-ID: <20170328021632.GN15423@localhost.localdomain> (raw)
In-Reply-To: <1490621195-2228-7-git-send-email-armbru@redhat.com>
On Mon, Mar 27, 2017 at 03:26:30PM +0200, Markus Armbruster wrote:
> runtime_opts is used for three different purposes:
>
> * qemu_rbd_open() uses it to accept options it recognizes, such as
> "pool" and "image". Other .bdrv_open() methods do it similarly.
>
> * qemu_rbd_open() accepts additional list-valued options
> auth-supported and server, with the help of qemu_rbd_array_opts().
> The list elements are again dictionaries. qemu_rbd_array_opts()
> uses runtime_opts to accept their members. Thus, runtime_opts
> contains recognized sub-sub-options "auth", "host", "port" in
> addition to recognized options. No other block driver does that.
>
> * qemu_rbd_create() uses it to convert the QDict produced by
> qemu_rbd_parse_filename() to QemuOpts. No other block driver does
> that. The keys produced by qemu_rbd_parse_filename() are "pool",
> "image", "snapshot", "conf", "user" and "keyvalue-pairs".
> qemu_rbd_open() accepts these, so no additional ones here.
>
> This is a confusing mess. Dates back to commit 0f9d252. First step
> to clean it up is documenting runtime_opts.desc[]:
>
> * Reorder entries to match the QAPI schema, like we do in other block
> drivers.
>
> * Document why the schema's "server" and "auth-supported" aren't in
> .desc[].
>
> * Document why "keyvalue-pairs", "host", "port" and "auth" are in
> .desc[], but not the schema.
>
> * Delete "filename", because none of the three users actually uses it.
> This fixes -drive to reject parameter filename instead of silently
> ignoring it.
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Jeff Cody <jcody@redhat.com>
> ---
> block/rbd.c | 40 +++++++++++++++++++++++++---------------
> 1 file changed, 25 insertions(+), 15 deletions(-)
>
> diff --git a/block/rbd.c b/block/rbd.c
> index 2632533..b2afe07 100644
> --- a/block/rbd.c
> +++ b/block/rbd.c
> @@ -294,21 +294,6 @@ static QemuOptsList runtime_opts = {
> .head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head),
> .desc = {
> {
> - .name = "filename",
> - .type = QEMU_OPT_STRING,
> - .help = "Specification of the rbd image",
> - },
> - {
> - .name = "password-secret",
> - .type = QEMU_OPT_STRING,
> - .help = "ID of secret providing the password",
> - },
> - {
> - .name = "conf",
> - .type = QEMU_OPT_STRING,
> - .help = "Rados config file location",
> - },
> - {
> .name = "pool",
> .type = QEMU_OPT_STRING,
> .help = "Rados pool name",
> @@ -319,6 +304,11 @@ static QemuOptsList runtime_opts = {
> .help = "Image name in the pool",
> },
> {
> + .name = "conf",
> + .type = QEMU_OPT_STRING,
> + .help = "Rados config file location",
> + },
> + {
> .name = "snapshot",
> .type = QEMU_OPT_STRING,
> .help = "Ceph snapshot name",
> @@ -329,6 +319,19 @@ static QemuOptsList runtime_opts = {
> .type = QEMU_OPT_STRING,
> .help = "Rados id name",
> },
> + /*
> + * server.* and auth-supported.* extracted manually, see
> + * qemu_rbd_array_opts()
> + */
> + {
> + .name = "password-secret",
> + .type = QEMU_OPT_STRING,
> + .help = "ID of secret providing the password",
> + },
> +
> + /*
> + * Keys for qemu_rbd_parse_filename(), not in the QAPI schema
> + */
> {
> /*
> * HACK: name starts with '=' so that qemu_opts_parse()
> @@ -338,6 +341,13 @@ static QemuOptsList runtime_opts = {
> .type = QEMU_OPT_STRING,
> .help = "Legacy rados key/value option parameters",
> },
> +
> + /*
> + * The remainder aren't option keys, but option sub-sub-keys,
> + * so that qemu_rbd_array_opts() can abuse runtime_opts for
> + * its own purposes
> + * TODO clean this up
> + */
> {
> .name = "host",
> .type = QEMU_OPT_STRING,
> --
> 2.7.4
>
next prev parent reply other threads:[~2017-03-28 2:16 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-27 13:26 [Qemu-devel] [PATCH RFC v3 for-2.9 00/11] rbd: Clean up API and code Markus Armbruster
2017-03-27 13:26 ` [Qemu-devel] [PATCH RFC v3 for-2.9 01/11] rbd: Reject -blockdev server.*.{numeric, to, ipv4, ipv6} Markus Armbruster
2017-03-27 16:03 ` Max Reitz
2017-03-27 19:56 ` Jeff Cody
2017-03-27 13:26 ` [Qemu-devel] [PATCH RFC v3 for-2.9 02/11] rbd: Fix to cleanly reject -drive without pool or image Markus Armbruster
2017-03-27 16:10 ` Max Reitz
2017-03-27 16:12 ` Max Reitz
2017-03-27 18:23 ` Markus Armbruster
2017-03-27 18:58 ` Markus Armbruster
2017-03-27 21:33 ` Jeff Cody
2017-03-28 7:54 ` Markus Armbruster
2017-03-28 11:56 ` Jeff Cody
2017-03-28 12:16 ` Jeff Cody
2017-03-27 21:34 ` Jeff Cody
2017-03-28 7:31 ` Markus Armbruster
2017-03-27 13:26 ` [Qemu-devel] [PATCH RFC v3 for-2.9 03/11] rbd: Don't limit length of parameter values Markus Armbruster
2017-03-27 16:22 ` Max Reitz
2017-03-28 2:12 ` Jeff Cody
2017-03-28 8:14 ` Markus Armbruster
2017-03-27 13:26 ` [Qemu-devel] [PATCH RFC v3 for-2.9 04/11] rbd: Clean up after the previous commit Markus Armbruster
2017-03-27 16:27 ` Max Reitz
2017-03-28 2:13 ` Jeff Cody
2017-03-27 13:26 ` [Qemu-devel] [PATCH RFC v3 for-2.9 05/11] rbd: Don't accept -drive driver=rbd, keyvalue-pairs= Markus Armbruster
2017-03-27 16:29 ` Max Reitz
2017-03-27 18:26 ` Markus Armbruster
2017-03-28 2:15 ` Jeff Cody
2017-03-27 13:26 ` [Qemu-devel] [PATCH RFC v3 for-2.9 06/11] rbd: Clean up runtime_opts, fix -drive to reject filename Markus Armbruster
2017-03-27 16:38 ` Max Reitz
2017-03-28 2:16 ` Jeff Cody [this message]
2017-03-27 13:26 ` [Qemu-devel] [PATCH RFC v3 for-2.9 07/11] rbd: Clean up qemu_rbd_create()'s detour through QemuOpts Markus Armbruster
2017-03-27 16:42 ` Max Reitz
2017-03-27 18:27 ` Markus Armbruster
2017-03-27 13:26 ` [Qemu-devel] [PATCH RFC v3 for-2.9 08/11] rbd: Revert -blockdev and -drive parameter auth-supported Markus Armbruster
2017-03-27 16:51 ` Max Reitz
2017-03-27 17:03 ` Eric Blake
2017-03-27 18:31 ` Markus Armbruster
2017-03-27 19:00 ` Eric Blake
2017-03-27 19:14 ` Markus Armbruster
2017-03-27 19:27 ` Eric Blake
2017-03-27 19:30 ` Eric Blake
2017-03-28 8:24 ` Markus Armbruster
2017-03-28 13:26 ` Eric Blake
2017-03-28 2:23 ` Jeff Cody
2017-03-27 13:26 ` [Qemu-devel] [PATCH RFC v3 for-2.9 09/11] rbd: Revert -blockdev parameter password-secret Markus Armbruster
2017-03-27 16:52 ` Max Reitz
2017-03-27 17:10 ` Eric Blake
2017-03-28 2:32 ` Jeff Cody
2017-03-28 3:51 ` Jeff Cody
2017-03-28 7:58 ` Markus Armbruster
2017-04-03 11:37 ` Daniel P. Berrange
2017-04-03 12:42 ` Max Reitz
2017-04-03 13:04 ` Daniel P. Berrange
2017-04-03 13:06 ` Jeff Cody
2017-04-03 13:06 ` Max Reitz
2017-04-11 13:11 ` Markus Armbruster
2017-03-27 13:26 ` [Qemu-devel] [PATCH RFC v3 for-2.9 10/11] Revert "rbd: add support for getting password from QCryptoSecret object" Markus Armbruster
2017-03-27 17:15 ` Eric Blake
2017-03-27 18:36 ` Markus Armbruster
2017-03-27 13:26 ` [Qemu-devel] [PATCH RFC v3 for-2.9 11/11] rbd: Fix bugs around -drive parameter "server" Markus Armbruster
2017-03-27 17:25 ` 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=20170328021632.GN15423@localhost.localdomain \
--to=jcody@redhat.com \
--cc=armbru@redhat.com \
--cc=eblake@redhat.com \
--cc=jdurgin@redhat.com \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--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.