]> xenbits.xensource.com Git - libvirt.git/commitdiff
improve virHostdevUpdate* parameters to make it more widely used
authorChunyan Liu <cyliu@suse.com>
Thu, 6 Mar 2014 07:48:49 +0000 (15:48 +0800)
committerDaniel P. Berrange <berrange@redhat.com>
Wed, 12 Mar 2014 16:41:32 +0000 (16:41 +0000)
Changes parameter from vm def to specific hostdevs info and name info, so that
it could be used more widely, e.g, could be used without full vm def info.

src/qemu/qemu_hostdev.c
src/util/virhostdev.c
src/util/virhostdev.h

index 0b6cb3e49262b9d0c3c72f7d37fb771939a2357e..2b4d9f2e1081a07bfd4df7475a6e3dafc0f15a81 100644 (file)
@@ -50,7 +50,8 @@ qemuUpdateActivePCIHostdevs(virQEMUDriverPtr driver,
     if (!def->nhostdevs)
         return 0;
 
-    return virHostdevUpdateActivePCIDevices(mgr, QEMU_DRIVER_NAME, def);
+    return virHostdevUpdateActivePCIDevices(mgr, def->hostdevs, def->nhostdevs,
+                                            QEMU_DRIVER_NAME, def->name);
 }
 
 int
@@ -62,7 +63,8 @@ qemuUpdateActiveUSBHostdevs(virQEMUDriverPtr driver,
     if (!def->nhostdevs)
         return 0;
 
-    return virHostdevUpdateActiveUSBDevices(mgr, QEMU_DRIVER_NAME, def);
+    return virHostdevUpdateActiveUSBDevices(mgr, def->hostdevs, def->nhostdevs,
+                                            QEMU_DRIVER_NAME, def->name);
 }
 
 int
@@ -74,7 +76,8 @@ qemuUpdateActiveSCSIHostdevs(virQEMUDriverPtr driver,
     if (!def->nhostdevs)
         return 0;
 
-    return virHostdevUpdateActiveSCSIDevices(mgr, QEMU_DRIVER_NAME, def);
+    return virHostdevUpdateActiveSCSIDevices(mgr, def->hostdevs, def->nhostdevs,
+                                             QEMU_DRIVER_NAME, def->name);
 }
 
 
index 58d3d60e13f47fa50bbc715c507b0dad340331b0..1cfba82ffc1911bc61e21a4a43eb5230cda14572 100644 (file)
@@ -776,8 +776,10 @@ cleanup:
 
 int
 virHostdevUpdateActivePCIDevices(virHostdevManagerPtr mgr,
+                                 virDomainHostdevDefPtr *hostdevs,
+                                 int nhostdevs,
                                  const char *drv_name,
-                                 virDomainDefPtr def)
+                                 const char *dom_name)
 {
     virDomainHostdevDefPtr hostdev = NULL;
     virPCIDevicePtr dev = NULL;
@@ -787,8 +789,8 @@ virHostdevUpdateActivePCIDevices(virHostdevManagerPtr mgr,
     virObjectLock(mgr->activePCIHostdevs);
     virObjectLock(mgr->inactivePCIHostdevs);
 
-    for (i = 0; i < def->nhostdevs; i++) {
-        hostdev = def->hostdevs[i];
+    for (i = 0; i < nhostdevs; i++) {
+        hostdev = hostdevs[i];
 
         if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS)
             continue;
@@ -813,7 +815,7 @@ virHostdevUpdateActivePCIDevices(virHostdevManagerPtr mgr,
                 goto cleanup;
 
         }
-        virPCIDeviceSetUsedBy(dev, drv_name, def->name);
+        virPCIDeviceSetUsedBy(dev, drv_name, dom_name);
 
         /* Setup the original states for the PCI device */
         virPCIDeviceSetUnbindFromStub(dev, hostdev->origstates.states.pci.unbind_from_stub);
@@ -835,17 +837,19 @@ cleanup:
 
 int
 virHostdevUpdateActiveUSBDevices(virHostdevManagerPtr mgr,
+                                 virDomainHostdevDefPtr *hostdevs,
+                                 int nhostdevs,
                                  const char *drv_name,
-                                 virDomainDefPtr def)
+                                 const char *dom_name)
 {
     virDomainHostdevDefPtr hostdev = NULL;
     size_t i;
     int ret = -1;
 
     virObjectLock(mgr->activeUSBHostdevs);
-    for (i = 0; i < def->nhostdevs; i++) {
+    for (i = 0; i < nhostdevs; i++) {
         virUSBDevicePtr usb = NULL;
-        hostdev = def->hostdevs[i];
+        hostdev = hostdevs[i];
 
         if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS)
             continue;
@@ -859,11 +863,11 @@ virHostdevUpdateActiveUSBDevices(virHostdevManagerPtr mgr,
             VIR_WARN("Unable to reattach USB device %03d.%03d on domain %s",
                      hostdev->source.subsys.u.usb.bus,
                      hostdev->source.subsys.u.usb.device,
-                     def->name);
+                     dom_name);
             continue;
         }
 
-        virUSBDeviceSetUsedBy(usb, drv_name, def->name);
+        virUSBDeviceSetUsedBy(usb, drv_name, dom_name);
 
         if (virUSBDeviceListAdd(mgr->activeUSBHostdevs, usb) < 0) {
             virUSBDeviceFree(usb);
@@ -878,8 +882,10 @@ cleanup:
 
 int
 virHostdevUpdateActiveSCSIDevices(virHostdevManagerPtr mgr,
+                                  virDomainHostdevDefPtr *hostdevs,
+                                  int nhostdevs,
                                   const char *drv_name,
-                                  virDomainDefPtr def)
+                                  const char *dom_name)
 {
     virDomainHostdevDefPtr hostdev = NULL;
     size_t i;
@@ -888,8 +894,8 @@ virHostdevUpdateActiveSCSIDevices(virHostdevManagerPtr mgr,
     virSCSIDevicePtr tmp = NULL;
 
     virObjectLock(mgr->activeSCSIHostdevs);
-    for (i = 0; i < def->nhostdevs; i++) {
-        hostdev = def->hostdevs[i];
+    for (i = 0; i < nhostdevs; i++) {
+        hostdev = hostdevs[i];
 
         if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS ||
             hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI)
@@ -905,13 +911,13 @@ virHostdevUpdateActiveSCSIDevices(virHostdevManagerPtr mgr,
             goto cleanup;
 
         if ((tmp = virSCSIDeviceListFind(mgr->activeSCSIHostdevs, scsi))) {
-            if (virSCSIDeviceSetUsedBy(tmp, drv_name, def->name) < 0) {
+            if (virSCSIDeviceSetUsedBy(tmp, drv_name, dom_name) < 0) {
                 virSCSIDeviceFree(scsi);
                 goto cleanup;
             }
             virSCSIDeviceFree(scsi);
         } else {
-            if (virSCSIDeviceSetUsedBy(scsi, drv_name, def->name) < 0 ||
+            if (virSCSIDeviceSetUsedBy(scsi, drv_name, dom_name) < 0 ||
                 virSCSIDeviceListAdd(mgr->activeSCSIHostdevs, scsi) < 0) {
                 virSCSIDeviceFree(scsi);
                 goto cleanup;
index 580f4fe6675230ef15a3869608701458960dda6c..f2ba0effc3409e4fb5c99552c1e4089396942eca 100644 (file)
@@ -92,16 +92,22 @@ virHostdevReAttachSCSIDevices(virHostdevManagerPtr hostdev_mgr,
                               int nhostdevs);
 int
 virHostdevUpdateActivePCIDevices(virHostdevManagerPtr mgr,
+                                 virDomainHostdevDefPtr *hostdevs,
+                                 int nhostdevs,
                                  const char *drv_name,
-                                 virDomainDefPtr def);
+                                 const char *dom_name);
 int
 virHostdevUpdateActiveUSBDevices(virHostdevManagerPtr mgr,
+                                 virDomainHostdevDefPtr *hostdevs,
+                                 int nhostdevs,
                                  const char *drv_name,
-                                 virDomainDefPtr def);
+                                 const char *dom_name);
 int
 virHostdevUpdateActiveSCSIDevices(virHostdevManagerPtr mgr,
+                                  virDomainHostdevDefPtr *hostdevs,
+                                  int nhostdevs,
                                   const char *drv_name,
-                                  virDomainDefPtr def);
+                                  const char *dom_name);
 
 /* functions used by NodeDevDetach/Reattach/Reset */
 int virHostdevPCINodeDeviceDetach(virHostdevManagerPtr mgr,