[libvirt] [Qemu-devel][resend] fix/re-do query-command-line-options

Amos Kong akong at redhat.com
Mon Jan 27 10:24:41 UTC 2014

Hi QEMU/Libvirt list,

When I worked on query-command-line-options, I first used some marcos [1] to
generate two config & option tables. This will cover all the options,
but it returns a string, it's difficult for libvirt to parse and use

| {"execute": "query-config", "arguments" : {"name": "boot"}}
| {"return": {"config": "-boot [order=drives][,once=drives][,menu=on|off]\n
|   ....
|   'rb_timeout': the timeout before guest reboot when boot failed, unit is ms\n"}}

Finally I got a suggestion to read info from new interface (QemuOpts),
We add opts info to vm_config_groups[], query-command-line-options
will visit the array. It doesn't conver all the options, but the
latest options are covered, so this implementation is acceptable.

* QemuOpts was designed just for options _have parameter_, some new option
  without parameters is lost in query output (eg: -enable-fips)
* block drive uses three QemuOpts, it's legacy issue. it's fixed by 968854c8.
* QemuOpts of some options aren't updated, it might be difficult to
  updated when we add some new parameters
* other

We discussed to reimplement this command, but it seems DEF maroc is the
only point to cover all the options, all the options are described in

I'm considering to reuse the DEF marocs to generate a table, try to
return the crude info if QemuOpts doesn't cover it.
Or maintain a split array (like vm_config_groups[]), it only contains
the option without parameter (option name & help info).

If you touched some problem of the query-command-line-options, welcome
to reply it, I will try to satisfy your requests.

Thanks, Amos

[1] http://www.redhat.com/archives/libvir-list/2013-January/msg01656.html

|#define DEF(option, opt_arg, opt_enum, opt_help, arch_mask)    \
|      opt_help,
|#define DEFHEADING(text)
|#define ARCHHEADING(text, arch_mask)
|#define DEF(option, opt_arg, opt_enum, opt_help, arch_mask)    \
|      option,
|#define DEFHEADING(text)
|#define ARCHHEADING(text, arch_mask)

    char const *optionstr[] = {
#include "qemu-options-wrapper.h"

    char const *configstr[] = {
#include "qemu-options-wrapper.h"

More information about the libvir-list mailing list