[libvirt] [PATCH v14 00/49] write separate module for hostdev passthrough

Chunyan Liu cyliu at suse.com
Fri Mar 7 10:52:27 UTC 2014


These patches implements a separate module for hostdev passthrough so that it
could be shared by different drivers and can maintain a global state of a host
device.

Patch 1: fix memory leak in virscsi.c
Patch 2: improve virHostdevManager to use virOject wrapper and keep reference

Patches 3~7: switch existing qemu and lxc driver to use virHostdevManager's
lists, so that to maintain a global state of every host device.

Patches 8~45 are to extract general code from qemu_hostdev.c piece by piece,
make them reusable common APIs.

Patches 46: unit test for the virhostdev common library
Patches 47: add a hostdev backend type for xen
Patches 48: add pci passthrough to libxl driver based on the common library
Patches 49: change lxc to use common library APIs

---
changes to v13:
  * change virHostdevManager, use virObject and keep reference, solve 'free'
    problem
  * add .hostdevMgr to qemu/lxc/libxl driver, get virHostdevManager in
    StateInitialize for once and keep reference, instead of getting it every
    time virHostdevManager is used.
  * fix v13 3/49 "qemu-reuse-hostdev-interfaces-to-avoid-duplicate.patch":
    update qemuPrepareHostUSBDevices parameters to specify hostdevs and
    nhostdevs, so that could be reused in qemu_hotplug.
  * rebase left patches

Chunyan Liu (49):
  virscsi: fix memory leak
  virhostdev: use virObject to virHostdevManager to keep reference
  update qemuPrepareHostUSBDevices parameters to keep consistency
  qemu: reuse hostdev interfaces to avoid duplicate
  qemu: remove functions used internally only from qemu_hostdev.h
  qemu: use general virhostdev lists instead of its own
  lxc: use general virhostdev lists instead of its own
  qemu_hostdev: move cfg->relaxedACS as a flag
  qemu_hostdev: move ColdBoot as a flag
  qemu_hostdev: move netconfig file location to virhostdev stateDir
  extract general code from qemuPrepareHostdevPCIDevices
  rename qemu*NetConfigRestore/Replace to
    virHostdevNetConfigRestore/Replace
  rename qemuGet*PciHostDeviceList to virHostdevGet*PciHostDeviceList
  pass driver name as a parameter to virHostdevPrepareHostdevPCIDevices
  extract general code from qemuDomainReAttachHostdevDevices
  pass driver name as a parameter to virHostdevReAttachPCIDevices
  rename qemuReAttachPciDevice to virHostdevReAttachPciDevice
  move virHostdevPrepare(ReAttach)PCIDevices to virhostdev.c
  extract general code from qemuUpdateActivePciHostdevs
  extract general code from qemuUpdateActiveUsbHostdevs
  extract general code from qemuUpdateActiveScsiHostdevs
  pass driver_name as parameter of virHostdevUpdate*Hostdevs functions
  move virHostdevUpdate* functions to virhostdev.c
  extract general code from qemuPrepareHostUSBDevices
  rename qemu*USBDevices to virHostdev*USBDevices
  pass driver name to virHostdevPrepareUSBDevices
  move virHostdevPrepareHostUSBDevices to virhostdev.c
  extract general code from qemuPrepareHostSCSIDevices
  pass driver name as parameter to virHostdevPrepareSCSIDevices
  move virHostdevPrepareHostSCSIDevices to virhostdev.c
  extract general code from qemuDomainReAttachHostUsbDevices
  pass driver name as paramter to virHostdevReAttachUsbHostdevs
  move virHostdevReAttachUsbHostdevs to virhostdev.c
  extract general code from qemuDomainReAttachHostScsiDevices
  pass driver name as parameter to virHostdevReAttachScciHostdevs
  move virHostdevReAttachHostScsiDevices to virhostdev.c
  extract general code of NodeDeviceDetach
  extract general code of NodeDeviceReAttach
  extract general code of NodeDeviceReset
  move virHostdevNodeDevice* to virhostdev.c
  improve parameter name to let it more meaningful
  rename some function names to keep consistency
  improve virHostdevUpdate* parameters to make it more widely used
  add 3 wrapper functions for prepare/reattach/update domain hostdevs
  add parameter checks to common interfaces
  add unit test for new virhostdev common library
  change lxc_hostdev.c to use virhostdev common library APIs
  add hostdev pci backend type for xen
  add pci passthrough to libxl driver

 .gitignore                    |    1 +
 docs/schemas/domaincommon.rng |    1 +
 src/conf/domain_conf.c        |    3 +-
 src/conf/domain_conf.h        |    1 +
 src/libvirt_private.syms      |   15 +
 src/libxl/libxl_conf.c        |   63 ++
 src/libxl/libxl_conf.h        |    7 +-
 src/libxl/libxl_domain.c      |    9 +
 src/libxl/libxl_driver.c      |  454 +++++++++++-
 src/lxc/lxc_conf.h            |    5 +-
 src/lxc/lxc_driver.c          |   12 +-
 src/lxc/lxc_hostdev.c         |  307 +-------
 src/qemu/qemu_command.c       |    3 +-
 src/qemu/qemu_conf.h          |    9 +-
 src/qemu/qemu_driver.c        |   76 +-
 src/qemu/qemu_hostdev.c       | 1203 ++-----------------------------
 src/qemu/qemu_hostdev.h       |   29 +-
 src/qemu/qemu_hotplug.c       |   78 +-
 src/qemu/qemu_process.c       |    8 +-
 src/util/virhostdev.c         | 1565 ++++++++++++++++++++++++++++++++++++++++-
 src/util/virhostdev.h         |   96 +++
 src/util/virscsi.c            |   13 +-
 tests/Makefile.am             |    5 +
 tests/virhostdevtest.c        |  507 +++++++++++++
 24 files changed, 2832 insertions(+), 1638 deletions(-)
 create mode 100644 tests/virhostdevtest.c

-- 
1.9.0




More information about the libvir-list mailing list