On a Thursday in 2021, Peter Krempa wrote:
Hi,
this series started as an exploration in how we use
'query-command-line-options' and the way to possibly step away from
using it. The main problem is that query-command-line-options is using
old-style command line parsing infra in qemu and thus doesn't scale.
In an effor to help qemu developers identify what we still need to query
using the command I set to clean up the parsing.
This series consists of:
- removal of unneeded tests (covered by other cases or pointless)
- adding of comments which simplify lookup of capability string from
enum value name
- grouping of the queries by name
- refactor of probing of stuff which can be probed differently
- removal of some other probes
- cleanups of the driver code
In general we've got the following cases:
- good ones:
- can be queried differently
- this patchset has converted (probably) all of them
- the "bad" ones:
- stuff we can't replace yet and we need to probe it, few examples
are:
- pressence of seccomp
- support of 'fd=' for chardevs
- various VNC and spice config options
- the possibly "ugly":
- these are options which are supported by all qemu versions and are
unlikely to be removed, but there's no different way to probe
them, we can always assume them
- those are the QEMU_CAPS_NAME* and QEMU_CAPS_MSG_TIMESTAMP at the
end, these patches are RFC as it may be considered a backwards
step just to assume it's supported
Note that the removal of probing of -drive throttling caps can be
replaced in case something gets deprecated via probing the 'throttling'
object. This was added recently though. Since it's unlikely that pieces
would be removed in the groups they were added removal of these caps is
classified in the 'good' part.
Peter Krempa (22):
qemuxml2argvtest: Remove negative tests for (aes|dea)keywrap (s390)
property
virQEMUCapsCommandLine: Group by commandline argument name
alphabetically
virQEMUCapsQMPSchemaQueries: Group by queried object name
scripts: group-qemu-caps: Add capability name as comment to capability
string
qemu: capabilities: Note that basing probing on
'query-command-line-options' should be avoided
qemu: capabilities: Probe 'reconnect', 'logfile' and 'append'
from
'chardev-add'
qemu: capabilities: Rename QEMU_CAPS_CHARDEV_FD_PASS to
QEMU_CAPS_CHARDEV_FD_PASS_COMMANDLINE
qemu: capabilities: Probe 'discard' and 'detect-zeroes' from
'blockdev-add'
qemu: capabilities: Probe QEMU_CAPS_SMP_DIES from the QMP schema
qemu: Always assume that qemu supports drive throttling
qemu: capabilties: Retire QEMU_CAPS_DRIVE_IOTUNE_* caps
qemuMonitorJSONSetBlockIoThrottle: Refactor cleanup
qemuMonitorJSONSetBlockIoThrottle: Switch to standard error reporting
qemuMonitorSetBlockIoThrottle: Remove booleans controlling used fields
qemu: capabilities: Add alternative detection of QEMU_CAPS_NUMA
qemuxml2argvtest: Remove 'debug-threads' case
qemuxml2argvtest: Remove 'minimal-msg-timestamp'
qemuxml2argvtest: Remove 'minimal-sandbox' case
qemu: command: Always assume support for '-name guest=' and '-name
debug-threads=on'
qemu: capabilities: Retire QEMU_CAPS_NAME*
qemu: command: Always assume support for '-msg timestamp=on'
qemu: capabilities: Retire QEMU_CAPS_MSG_TIMESTAMP
scripts/group-qemu-caps.py | 43 +-
src/qemu/qemu_capabilities.c | 888 +++++++++---------
src/qemu/qemu_capabilities.h | 14 +-
[...]
tests/qemuxml2argvdata/watchdog.args | 5 +-
tests/qemuxml2argvdata/x86-kvm-32-on-64.args | 5 +-
tests/qemuxml2argvtest.c | 34 +-
630 files changed, 2232 insertions(+), 2259 deletions(-)
delete mode 100644 tests/qemuxml2argvdata/debug-threads.args
delete mode 100644 tests/qemuxml2argvdata/debug-threads.xml
delete mode 100644 tests/qemuxml2argvdata/machine-aeskeywrap-off-cap.err
delete mode 100644 tests/qemuxml2argvdata/machine-aeskeywrap-off-caps.err
delete mode 100644 tests/qemuxml2argvdata/machine-aeskeywrap-on-cap.err
delete mode 100644 tests/qemuxml2argvdata/machine-aeskeywrap-on-caps.err
delete mode 100644 tests/qemuxml2argvdata/machine-deakeywrap-off-cap.err
delete mode 100644 tests/qemuxml2argvdata/machine-deakeywrap-off-caps.err
delete mode 100644 tests/qemuxml2argvdata/machine-deakeywrap-on-cap.err
delete mode 100644 tests/qemuxml2argvdata/machine-deakeywrap-on-caps.err
delete mode 100644 tests/qemuxml2argvdata/minimal-msg-timestamp.args
delete mode 100644 tests/qemuxml2argvdata/minimal-msg-timestamp.xml
delete mode 100644 tests/qemuxml2argvdata/minimal-sandbox.args
delete mode 100644 tests/qemuxml2argvdata/minimal-sandbox.xml
Reviewed-by: Ján Tomko <jtomko(a)redhat.com>
Jano