Message ID | 1490266548-22500-2-git-send-email-armbru@redhat.com |
---|---|
State | New |
Headers | show |
On 03/23/2017 05:55 AM, 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 converts the QDict produced by s/converts/convert/ > 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 That commit is unreleased, so we are still free to improve it before 2.9 is finalized. > 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. > > Signed-off-by: Markus Armbruster <armbru@redhat.com> > --- > block/rbd.c | 39 ++++++++++++++++++++++++--------------- > 1 file changed, 24 insertions(+), 15 deletions(-) > Reviewed-by: Eric Blake <eblake@redhat.com>
Am 23.03.2017 um 11:55 hat Markus Armbruster geschrieben: > 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 converts 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. > > Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com>
diff --git a/block/rbd.c b/block/rbd.c index ee13f3d..6562fbd 100644 --- a/block/rbd.c +++ b/block/rbd.c @@ -365,21 +365,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", @@ -390,6 +375,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", @@ -400,11 +390,30 @@ 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", + }, + /* + * Legacy keys accepted by qemu_rbd_parse_filename(), not in + * the QAPI schema + */ { .name = "keyvalue-pairs", .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,
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 converts 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. Signed-off-by: Markus Armbruster <armbru@redhat.com> --- block/rbd.c | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-)