[libvirt] [RESEND][PATCHv5 3/4] change qemu driver to use hostdev common library

Daniel P. Berrange berrange at redhat.com
Mon Oct 14 16:15:36 UTC 2013


On Fri, Sep 13, 2013 at 11:34:36AM +0800, Chunyan Liu wrote:
> Change qemu driver to use hostdev common library instead of APIs in
> qemu_hostdev.[ch]
> 
> Signed-off-by: Chunyan Liu <cyliu at suse.com>
> ---
>  po/POTFILES.in          |    1 -
>  src/Makefile.am         |    1 -
>  src/qemu/qemu_command.c |    1 -
>  src/qemu/qemu_conf.h    |    9 +-
>  src/qemu/qemu_driver.c  |   72 +---
>  src/qemu/qemu_hostdev.c | 1289 -----------------------------------------------
>  src/qemu/qemu_hostdev.h |   72 ---
>  src/qemu/qemu_hotplug.c |  126 ++---
>  src/qemu/qemu_process.c |   34 +-
>  9 files changed, 87 insertions(+), 1518 deletions(-)
>  delete mode 100644 src/qemu/qemu_hostdev.c
>  delete mode 100644 src/qemu/qemu_hostdev.h
> 
> diff --git a/po/POTFILES.in b/po/POTFILES.in
> index d01cb99..2fc7e67 100644
> --- a/po/POTFILES.in
> +++ b/po/POTFILES.in
> @@ -99,7 +99,6 @@ src/qemu/qemu_command.c
>  src/qemu/qemu_conf.c
>  src/qemu/qemu_domain.c
>  src/qemu/qemu_driver.c
> -src/qemu/qemu_hostdev.c
>  src/qemu/qemu_hotplug.c
>  src/qemu/qemu_migration.c
>  src/qemu/qemu_monitor.c
> diff --git a/src/Makefile.am b/src/Makefile.am
> index e563960..c3a8ba0 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -654,7 +654,6 @@ QEMU_DRIVER_SOURCES =							\
>  		qemu/qemu_command.c qemu/qemu_command.h			\
>  		qemu/qemu_domain.c qemu/qemu_domain.h			\
>  		qemu/qemu_cgroup.c qemu/qemu_cgroup.h			\
> -		qemu/qemu_hostdev.c qemu/qemu_hostdev.h			\
>  		qemu/qemu_hotplug.c qemu/qemu_hotplug.h			\
>  		qemu/qemu_hotplugpriv.h					\
>  		qemu/qemu_conf.c qemu/qemu_conf.h			\
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 1521431..3abb88d 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -24,7 +24,6 @@
>  #include <config.h>
>  
>  #include "qemu_command.h"
> -#include "qemu_hostdev.h"
>  #include "qemu_capabilities.h"
>  #include "qemu_bridge_filter.h"
>  #include "cpu/cpu.h"
> diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h
> index 206f2c6..97c8501 100644
> --- a/src/qemu/qemu_conf.h
> +++ b/src/qemu/qemu_conf.h
> @@ -52,6 +52,7 @@
>  #  error "Port me"
>  # endif
>  
> +# define QEMU_DRIVER_NAME "QEMU"
>  typedef struct _virQEMUDriver virQEMUDriver;
>  typedef virQEMUDriver *virQEMUDriverPtr;
>  
> @@ -204,14 +205,6 @@ struct _virQEMUDriver {
>      /* Immutable pointer. self-locking APIs */
>      virSecurityManagerPtr securityManager;
>  
> -    /* Immutable pointers. Requires locks to be held before
> -     * calling APIs. activePciHostdevs must be locked before
> -     * inactivePciHostdevs */
> -    virPCIDeviceListPtr activePciHostdevs;
> -    virPCIDeviceListPtr inactivePciHostdevs;
> -    virUSBDeviceListPtr activeUsbHostdevs;
> -    virSCSIDeviceListPtr activeScsiHostdevs;
> -
>      /* Immutable pointer. Unsafe APIs. XXX */
>      virHashTablePtr sharedDevices;
>  
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index bbf2d23..b289a30 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -50,7 +50,6 @@
>  #include "qemu_capabilities.h"
>  #include "qemu_command.h"
>  #include "qemu_cgroup.h"
> -#include "qemu_hostdev.h"
>  #include "qemu_hotplug.h"
>  #include "qemu_monitor.h"
>  #include "qemu_bridge_filter.h"
> @@ -94,11 +93,10 @@
>  #include "virstring.h"
>  #include "viraccessapicheck.h"
>  #include "viraccessapicheckqemu.h"
> +#include "virhostdev.h"
>  
>  #define VIR_FROM_THIS VIR_FROM_QEMU
>  
> -#define QEMU_DRIVER_NAME "QEMU"
> -
>  #define QEMU_NB_MEM_PARAM  3
>  
>  #define QEMU_NB_BLOCK_IO_TUNE_PARAM  6
> @@ -691,18 +689,6 @@ qemuStateInitialize(bool privileged,
>      if (qemuSecurityInit(qemu_driver) < 0)
>          goto error;
>  
> -    if ((qemu_driver->activePciHostdevs = virPCIDeviceListNew()) == NULL)
> -        goto error;
> -
> -    if ((qemu_driver->activeUsbHostdevs = virUSBDeviceListNew()) == NULL)
> -        goto error;
> -
> -    if ((qemu_driver->inactivePciHostdevs = virPCIDeviceListNew()) == NULL)
> -        goto error;
> -
> -    if ((qemu_driver->activeScsiHostdevs = virSCSIDeviceListNew()) == NULL)
> -        goto error;
> -
>      if (!(qemu_driver->sharedDevices = virHashCreate(30, qemuSharedDeviceEntryFree)))
>          goto error;
>  
> @@ -983,9 +969,6 @@ qemuStateCleanup(void) {
>  
>      virNWFilterUnRegisterCallbackDriver(&qemuCallbackDriver);
>      virObjectUnref(qemu_driver->config);
> -    virObjectUnref(qemu_driver->activePciHostdevs);
> -    virObjectUnref(qemu_driver->inactivePciHostdevs);
> -    virObjectUnref(qemu_driver->activeUsbHostdevs);
>      virHashFree(qemu_driver->sharedDevices);
>      virObjectUnref(qemu_driver->caps);
>      virQEMUCapsCacheFree(qemu_driver->qemuCapsCache);
> @@ -10689,12 +10672,12 @@ qemuNodeDeviceDetachFlags(virNodeDevicePtr dev,
>                            const char *driverName,
>                            unsigned int flags)
>  {
> -    virQEMUDriverPtr driver = dev->conn->privateData;
>      virPCIDevicePtr pci = NULL;
>      unsigned domain = 0, bus = 0, slot = 0, function = 0;
>      int ret = -1;
>      virNodeDeviceDefPtr def = NULL;
>      char *xml = NULL;
> +    virHostdevManagerPtr hostdev_mgr;
>  
>      virCheckFlags(0, -1);
>  
> @@ -10728,18 +10711,12 @@ qemuNodeDeviceDetachFlags(virNodeDevicePtr dev,
>          goto cleanup;
>      }
>  
> -    virObjectLock(driver->activePciHostdevs);
> -    virObjectLock(driver->inactivePciHostdevs);
> -
> -    if (virPCIDeviceDetach(pci, driver->activePciHostdevs,
> -                           driver->inactivePciHostdevs) < 0) {
> -        goto out;
> +    hostdev_mgr = virHostdevManagerGetDefault();

Check for NULL, and other places throughout the file

> +    if (virHostdevPciNodeDeviceDetach(hostdev_mgr, pci) < 0) {
> +        goto cleanup;
>      }

While you're changing this, remove the {} since they are not
wanted for single-line blocks.

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list