On 5/10/22 10:19 AM, Peter Krempa wrote:
> This series modifies qemuFDPass to be a bit more convenient to use by
> e.g. remembering the maximum fd set index currently used across libvirtd
> restarts so that we can avoid having to pass the FDs before actually
> constructing the device properties.
>
> Along with that this code refactors the handling of FDs used for network
> interfaces. There was a substantial amount of duplicated code with
> plethora of helper variables and such. By converting to qemuFDPass
> stored in the private data we can simplify the functions.
Aside from the two minor comments that I sent separately, the series
looks good to me.
Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
>
> Peter Krempa (37):
> qemu_fd: Add return value handling for qemuFDPassTransfer* APIs
> qemu_fd: Add validation before transferring file descriptors
> qemu_fd: Remove error checking from qemuFDPassAddFD
> qemuDomainAttachNetDevice: Use 'qemuFDPass' for the vdpa file
> descriptor
> qemu: monitor: Don't parse actual fd's from query-fdsets/add-fd
> replies
> qemuMonitorJSONQueryFdsets: Ensure that JSON arrays are valid before
> using them
> qemu: domain: Store and update 'fdsetindex' across libvirtd restarts
> qemu_fd: Don't rely on fdset id allocation by qemu
> qemuMonitorAddFileHandleToSet: Remove return of 'qemuMonitorAddFdInfo'
> qemuFDPassTransferMonitor: Close local copy of the FD as soon as it's
> passed to qemu
> qemu: Clear 'qemuFDPass' helpers of char devices when no longer needed
> qemu: domain: Add qemuFDPass helpers into network private data
> qemu: command: Introduce 'qemuBuildInterfaceConnect' helper
> qemuBuildInterfaceConnect: Connect to 'vdpa' netdev
> qemuBuildHostNetProps: Move all 'tap' code together
> qemuBuildHostNetProps: Refactor construction of tapfd/vhostfd
> arguments
> qemuDomainAttachNetDevice: Don't construct network device properties
> under monitor lock
> qemu: Prepare netdev code for use of qemuFDPass for tapfd/vhostfd
> passing
> qemuBuildNicDevProps: Don't pass 'vhostfdSize'
> qemuInterfaceOpenVhostNet: Reformat error messages per new guidelines
> qemu: Move opening of vhost file descriptors for net devices into
> qemuBuildInterfaceConnect
> qemuDomainAttachNetDevice: Remove 'vhostfd' machinery
> qemuBuildInterfaceCommandLine: Remove 'vhostfd' machinery
> qemuBuildHostNetProps: Remove 'vhostfd' machinery
> qemuMonitorAddNetdev: Remove 'vhostfd' machinery
> qemu: Move opening of tap file descriptors for net devices into
> qemuBuildInterfaceConnect
> qemuBuildInterfaceCommandLine: Remove 'tapfd' infrastructure
> qemuDomainAttachNetDevice: Remove unused 'tapfd' infrastructure
> qemuBuildNicDevProps: Remove unused 'tapfd' infrastructure
> qemuMonitorAddNetdev: Remove unused 'tapfd' infrastructure
> qemuInterfacePrepareSlirp: Directly populate the 'slirp' variable in
> network private data
> qemuSlirpStart: Simplify parameters
> qemu: slirp: Call qemuSlirpOpen directly from qemuSlirpStart
> qemu: slirp: Pass FDs to qemu via qemuFDPass in the network private
> data
> qemuDomainAttachNetDevice: Clean up unneeded 'slirp' helper variables
> qemuMonitorAddNetdev: Remove unneeded 'slirp' variables and useless
> debug
> qemu: slirp: Remove unused 'qemuSlirpGetFD'
>
> src/qemu/qemu_command.c | 393 +++++++++---------
> src/qemu/qemu_command.h | 15 +-
> src/qemu/qemu_domain.c | 34 +-
> src/qemu/qemu_domain.h | 14 +-
> src/qemu/qemu_extdevice.c | 13 +-
> src/qemu/qemu_fd.c | 118 +++---
> src/qemu/qemu_fd.h | 7 +-
> src/qemu/qemu_hotplug.c | 172 ++------
> src/qemu/qemu_interface.c | 83 ++--
> src/qemu/qemu_interface.h | 9 +-
> src/qemu/qemu_monitor.c | 50 +--
> src/qemu/qemu_monitor.h | 14 +-
> src/qemu/qemu_monitor_json.c | 78 +---
> src/qemu/qemu_monitor_json.h | 3 +-
> src/qemu/qemu_process.c | 47 ++-
> src/qemu/qemu_slirp.c | 30 +-
> src/qemu/qemu_slirp.h | 10 +-
> tests/qemuhotplugtest.c | 1 +
> tests/qemumonitorjsontest.c | 3 -
> .../qemustatusxml2xmldata/backup-pull-in.xml | 1 +
> .../blockjob-blockdev-in.xml | 1 +
> .../blockjob-mirror-in.xml | 1 +
> .../migration-in-params-in.xml | 1 +
> .../migration-out-nbd-bitmaps-in.xml | 1 +
> .../migration-out-nbd-out.xml | 1 +
> .../migration-out-nbd-tls-out.xml | 1 +
> .../migration-out-params-in.xml | 1 +
> tests/qemustatusxml2xmldata/modern-in.xml | 1 +
> tests/qemustatusxml2xmldata/upgrade-out.xml | 1 +
> .../qemustatusxml2xmldata/vcpus-multi-in.xml | 1 +
> .../net-eth-unmanaged-tap.args | 2 +-
> tests/qemuxml2argvdata/user-aliases.args | 2 +-
> tests/qemuxml2argvmock.c | 28 +-
> tests/testutilsqemu.c | 6 +-
> 34 files changed, 502 insertions(+), 641 deletions(-)
>