<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">2014-03-04 20:38 GMT+08:00 Daniel P. Berrange <span dir="ltr"><<a href="mailto:berrange@redhat.com" target="_blank">berrange@redhat.com</a>></span>:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div>On Sat, Mar 01, 2014 at 02:29:00PM +0800, Chunyan Liu wrote:<br>
><br>
> Signed-off-by: Chunyan Liu <<a href="mailto:cyliu@suse.com" target="_blank">cyliu@suse.com</a>><br>
> ---<br>
>  src/qemu/qemu_conf.h    |    8 --<br>
>  src/qemu/qemu_driver.c  |   74 +++++++++----------<br>
>  src/qemu/qemu_hostdev.c |  192 ++++++++++++++++++++++++++++-------------------<br>
>  src/qemu/qemu_hotplug.c |    1 +<br>
>  4 files changed, 151 insertions(+), 124 deletions(-)<br>
><br>
> diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h<br>
> index ece185b..2ac88fb 100644<br>
> --- a/src/qemu/qemu_conf.h<br>
> +++ b/src/qemu/qemu_conf.h<br>
> @@ -215,14 +215,6 @@ struct _virQEMUDriver {<br>
>      /* Immutable pointer. self-locking APIs */<br>
>      virSecurityManagerPtr securityManager;<br>
><br>
> -    /* Immutable pointers. Requires locks to be held before<br>
> -     * calling APIs. activePciHostdevs must be locked before<br>
> -     * inactivePciHostdevs */<br>
> -    virPCIDeviceListPtr activePciHostdevs;<br>
> -    virPCIDeviceListPtr inactivePciHostdevs;<br>
> -    virUSBDeviceListPtr activeUsbHostdevs;<br>
> -    virSCSIDeviceListPtr activeScsiHostdevs;<br>
> -<br>
>      /* Immutable pointer. Unsafe APIs. XXX */<br>
>      virHashTablePtr sharedDevices;<br>
><br>
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c<br>
> index f36a8b4..7d924b2 100644<br>
> --- a/src/qemu/qemu_driver.c<br>
> +++ b/src/qemu/qemu_driver.c<br>
> @@ -95,6 +95,7 @@<br>
>  #include "viraccessapicheck.h"<br>
>  #include "viraccessapicheckqemu.h"<br>
>  #include "storage/storage_driver.h"<br>
> +#include "virhostdev.h"<br>
><br>
>  #define VIR_FROM_THIS VIR_FROM_QEMU<br>
><br>
> @@ -695,18 +696,6 @@ qemuStateInitialize(bool privileged,<br>
>      if (qemuSecurityInit(qemu_driver) < 0)<br>
>          goto error;<br>
><br>
> -    if ((qemu_driver->activePciHostdevs = virPCIDeviceListNew()) == NULL)<br>
> -        goto error;<br>
> -<br>
> -    if ((qemu_driver->activeUsbHostdevs = virUSBDeviceListNew()) == NULL)<br>
> -        goto error;<br>
> -<br>
> -    if ((qemu_driver->inactivePciHostdevs = virPCIDeviceListNew()) == NULL)<br>
> -        goto error;<br>
> -<br>
> -    if ((qemu_driver->activeScsiHostdevs = virSCSIDeviceListNew()) == NULL) <br>
> -        goto error;<br>
> -<br>
<br>
</div></div>I think we should obtain the hostdev manager instance here, and save a<br>
reference to it, so that later functions do not need to worry about<br>
failure of virHostdevManagerGetDefault()<br>
<div><br></div></blockquote><div>we could:<br></div><div> add .hostdev_mgr to _virQEMUDriver, and add<br> qemu_driver->hostdev_mgr = virHostdevManagerGetDefault() here.<br></div><div> Is that OK?<br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<div>
<br>
> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c<br>
> index 5546693..eeb1f24 100644<br>
> --- a/src/qemu/qemu_hotplug.c<br>
> +++ b/src/qemu/qemu_hotplug.c<br>
> @@ -50,6 +50,7 @@<br>
>  #include "virstoragefile.h"<br>
>  #include "virstring.h"<br>
>  #include "virtime.h"<br>
> +#include "virhostdev.h"<br>
<br>
</div>This seems bogus as you're not adding any code to this file which would<br>
use those APIs<br>
<br>
Regards,<br>
Daniel<br>
<span><font color="#888888">--<br>
|: <a href="http://berrange.com" target="_blank">http://berrange.com</a>      -o-    <a href="http://www.flickr.com/photos/dberrange/" target="_blank">http://www.flickr.com/photos/dberrange/</a> :|<br>
|: <a href="http://libvirt.org" target="_blank">http://libvirt.org</a>              -o-             <a href="http://virt-manager.org" target="_blank">http://virt-manager.org</a> :|<br>
|: <a href="http://autobuild.org" target="_blank">http://autobuild.org</a>       -o-         <a href="http://search.cpan.org/~danberr/" target="_blank">http://search.cpan.org/~danberr/</a> :|<br>
|: <a href="http://entangle-photo.org" target="_blank">http://entangle-photo.org</a>       -o-       <a href="http://live.gnome.org/gtk-vnc" target="_blank">http://live.gnome.org/gtk-vnc</a> :|<br>
<br>
</font></span></blockquote></div><br></div></div>