This series addresses the following issues: - hot-unplug of chardevs leaks the FDset in qemu - hot-plug of chardev doesn't use virtlogd even when configured - the name of the FD used for vdpa doesn't really tie it to the device There's also improvement in the common code handling the FD passing and few other drive-by fixes. Peter Krempa (27): scripts/moc-noinline: Use full name of the required annotation in error message qemuProcessPrepareHostBackendChardevFileHelper: Always use FD passing qemuProcessPrepareHostBackendChardev: Drop unneeded arguments qemuMonitorJSONQueryFdsetsParse: Don't check value passed to g_strdup qemuMonitorRemoveFdset: Convert @fdset to unsigned int to avoid error qemu: monitor: Make 'id' in 'struct _qemuMonitorFdsetInfo' unsigned qemu: domain: Move and unexport 'qemuDomainStorageIdReset' qemu: domain: Add helper for generating 'fdset' ids for VM startup qemu: Introduce helper functions for passing FDs to qemu qemuBuildInterfaceCommandLine: Use qemuFDPass for the vdpa fd qemu: hotplug: Extract code for unplugging fdsets qemuHotplugRemoveFDSet: Prepare for proper FD unplug handling qemuBuildInterfaceCommandLine: Use new pattern for naming the VDPA fdset qemu: Rewrite chardev startup code to use qemuFDPass qemuDomainRemoveChrDevice: Detach fdset after chardev hot-unplug qemumonitorjsontest: chardev: Remove need to allow unused commands qemumonitorjsontest: Refactor chardev hotplug testing qemuMonitorJSONTestAttachChardev: Add test for TLS-secured TCP chardev qemuMonitorJSONTestAttachChardev: Add logfile to some tests qemuMonitorJSONAttachCharDevGetProps: Properly handle private data tests: Move testPrepareHostBackendChardevOne into test utils qemuMonitorJSONTestAttachChardev: Add tests for FD passing of file backend qemu: process: Add a hotplug version of qemuProcessPrepareHostBackendChardev qemu: Honour 'virtlogd' use when hotplugging chardevs virTPMCreateCancelPath: Refactor value returning qemuBuildTPMOpenBackendFDs: Construct 'cancel_path' internally qemuBuildTPMCommandLine: Use 'qemuPassFD' infrastructure po/POTFILES.in | 1 + scripts/mock-noinline.py | 2 +- src/qemu/meson.build | 1 + src/qemu/qemu_command.c | 260 +++++---------- src/qemu/qemu_command.h | 4 +- src/qemu/qemu_domain.c | 94 +++--- src/qemu/qemu_domain.h | 13 +- src/qemu/qemu_driver.c | 3 +- src/qemu/qemu_fd.c | 296 ++++++++++++++++++ src/qemu/qemu_fd.h | 56 ++++ src/qemu/qemu_hotplug.c | 100 ++++-- src/qemu/qemu_hotplug.h | 2 +- src/qemu/qemu_monitor.c | 14 +- src/qemu/qemu_monitor.h | 4 +- src/qemu/qemu_monitor_json.c | 82 +++-- src/qemu/qemu_monitor_json.h | 2 +- src/qemu/qemu_process.c | 102 ++++-- src/qemu/qemu_process.h | 6 + src/util/virtpm.c | 13 +- tests/qemuhotplugmock.c | 11 + tests/qemuhotplugtest.c | 6 +- tests/qemumonitorjsontest.c | 253 +++++++++------ .../qemuxml2argvdata/aarch64-pci-serial.args | 3 +- .../name-escape.x86_64-2.11.0.args | 3 +- .../name-escape.x86_64-latest.args | 4 +- .../net-vdpa.x86_64-latest.args | 4 +- .../qemuxml2argvdata/serial-file-chardev.args | 3 +- .../serial-file-chardev.x86_64-latest.args | 4 +- tests/qemuxml2argvdata/serial-file-log.args | 4 +- .../serial-file-log.x86_64-latest.args | 6 +- .../qemuxml2argvdata/serial-many-chardev.args | 3 +- .../serial-many-chardev.x86_64-latest.args | 4 +- .../tpm-passthrough-crb.x86_64-latest.args | 6 +- .../tpm-passthrough.x86_64-latest.args | 6 +- tests/qemuxml2argvmock.c | 1 - tests/qemuxml2argvtest.c | 87 +---- tests/testutilsqemu.c | 106 +++++++ tests/testutilsqemu.h | 3 + 38 files changed, 1011 insertions(+), 561 deletions(-) create mode 100644 src/qemu/qemu_fd.c create mode 100644 src/qemu/qemu_fd.h -- 2.34.1