On Do, 2016-10-06 at 11:40 +0200, Kevin Wolf wrote: > Recently we moved a few options from QemuOptsLists in blockdev.c to > bdrv_runtime_opts in block.c in order to make them accissble using > blockdev-add. However, this has the side effect that these options are > missing from query-command-line-options now, and libvirt consequently > disables the corresponding feature. > > This problem was reported as a regression for the 'discard' option, > introduced in commit 818584a4. However, it is more general than that. > > Fix it by adding bdrv_runtime_opts to the list of QemuOptsLists that are > returned in query-command-line-options. For the future, libvirt is > advised to use QMP schema introspection for block device options. > > Reported-by: Michal Privoznik <mpriv...@redhat.com> > Signed-off-by: Kevin Wolf <kw...@redhat.com>
Tested-by: Gerd Hoffmann <kra...@redhat.com> > --- > block.c | 2 +- > include/sysemu/sysemu.h | 1 + > util/qemu-config.c | 2 +- > vl.c | 1 + > 4 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/block.c b/block.c > index bb1f1ec..40eb570 100644 > --- a/block.c > +++ b/block.c > @@ -926,7 +926,7 @@ out: > g_free(gen_node_name); > } > > -static QemuOptsList bdrv_runtime_opts = { > +QemuOptsList bdrv_runtime_opts = { > .name = "bdrv_common", > .head = QTAILQ_HEAD_INITIALIZER(bdrv_runtime_opts.head), > .desc = { > diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h > index ef2c50b..b668833 100644 > --- a/include/sysemu/sysemu.h > +++ b/include/sysemu/sysemu.h > @@ -235,6 +235,7 @@ bool defaults_enabled(void); > extern QemuOptsList qemu_legacy_drive_opts; > extern QemuOptsList qemu_common_drive_opts; > extern QemuOptsList qemu_drive_opts; > +extern QemuOptsList bdrv_runtime_opts; > extern QemuOptsList qemu_chardev_opts; > extern QemuOptsList qemu_device_opts; > extern QemuOptsList qemu_netdev_opts; > diff --git a/util/qemu-config.c b/util/qemu-config.c > index fb97307..5527100 100644 > --- a/util/qemu-config.c > +++ b/util/qemu-config.c > @@ -6,7 +6,7 @@ > #include "qmp-commands.h" > > static QemuOptsList *vm_config_groups[48]; > -static QemuOptsList *drive_config_groups[4]; > +static QemuOptsList *drive_config_groups[5]; > > static QemuOptsList *find_list(QemuOptsList **lists, const char *group, > Error **errp) > diff --git a/vl.c b/vl.c > index f3abd99..9a2e7d5 100644 > --- a/vl.c > +++ b/vl.c > @@ -3035,6 +3035,7 @@ int main(int argc, char **argv, char **envp) > qemu_add_drive_opts(&qemu_legacy_drive_opts); > qemu_add_drive_opts(&qemu_common_drive_opts); > qemu_add_drive_opts(&qemu_drive_opts); > + qemu_add_drive_opts(&bdrv_runtime_opts); > qemu_add_opts(&qemu_chardev_opts); > qemu_add_opts(&qemu_device_opts); > qemu_add_opts(&qemu_netdev_opts);