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

Chun Yan Liu cyliu at suse.com
Fri Mar 7 11:05:58 UTC 2014


The whole patch series could be get from here:
https://github.com/chunyanliu/libvirt/commits/hostdev_passthrough

-Chunyan

>>> On 3/7/2014 at 06:52 PM, in message
<1394189596-22994-1-git-send-email-cyliu at suse.com>, Chunyan Liu
<cyliu at suse.com> wrote: 
> 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 
 





More information about the libvir-list mailing list