Re: [PATCH 00/37] qemu: Improve 'qemuFDPass' usability and refactor interface code to use it

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>



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(-)





[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux