]> xenbits.xensource.com Git - libvirt.git/commitdiff
move virHostdevNodeDevice* to virhostdev.c
authorChunyan Liu <cyliu@suse.com>
Thu, 6 Mar 2014 07:20:14 +0000 (15:20 +0800)
committerDaniel P. Berrange <berrange@redhat.com>
Wed, 12 Mar 2014 16:03:06 +0000 (16:03 +0000)
src/libvirt_private.syms
src/qemu/qemu_driver.c
src/util/virhostdev.c
src/util/virhostdev.h

index d061f2c607838469812d9c8631af1725b4b308aa..d15c6a7488819fbc711b0c6831f197330dea366d 100644 (file)
@@ -1299,6 +1299,9 @@ virHookPresent;
 
 #util/virhostdev.h
 virHostdevManagerGetDefault;
+virHostdevPciNodeDeviceDetach;
+virHostdevPciNodeDeviceReAttach;
+virHostdevPciNodeDeviceReset;
 virHostdevPreparePCIDevices;
 virHostdevPrepareSCSIDevices;
 virHostdevPrepareUSBDevices;
index 8756329ce5d0ded4c8a81cd86bc841257bb38d82..46cbb44a4be970208367d5d4a76885f916594372 100644 (file)
@@ -11264,27 +11264,6 @@ out:
     return ret;
 }
 
-static int
-virHostdevPciNodeDeviceDetach(virHostdevManagerPtr hostdev_mgr,
-                              virPCIDevicePtr pci)
-{
-    int ret = -1;
-
-    virObjectLock(hostdev_mgr->activePciHostdevs);
-    virObjectLock(hostdev_mgr->inactivePciHostdevs);
-
-    if (virPCIDeviceDetach(pci, hostdev_mgr->activePciHostdevs,
-                           hostdev_mgr->inactivePciHostdevs) < 0) {
-        goto out;
-    }
-
-    ret = 0;
-out:
-    virObjectUnlock(hostdev_mgr->inactivePciHostdevs);
-    virObjectUnlock(hostdev_mgr->activePciHostdevs);
-    return ret;
-}
-
 static int
 qemuNodeDeviceDetachFlags(virNodeDevicePtr dev,
                           const char *driverName,
@@ -11371,47 +11350,6 @@ qemuNodeDeviceDettach(virNodeDevicePtr dev)
     return qemuNodeDeviceDetachFlags(dev, NULL, 0);
 }
 
-static int
-virHostdevPciNodeDeviceReAttach(virHostdevManagerPtr hostdev_mgr,
-                                virPCIDevicePtr pci)
-{
-    virPCIDevicePtr other;
-    int ret = -1;
-
-    virObjectLock(hostdev_mgr->activePciHostdevs);
-    virObjectLock(hostdev_mgr->inactivePciHostdevs);
-    other = virPCIDeviceListFind(hostdev_mgr->activePciHostdevs, pci);
-    if (other) {
-        const char *other_drvname = NULL;
-        const char *other_domname = NULL;
-        virPCIDeviceGetUsedBy(other, &other_drvname, &other_domname);
-
-        if (other_drvname && other_domname)
-            virReportError(VIR_ERR_OPERATION_INVALID,
-                           _("PCI device %s is still in use by "
-                             "driver %s, domain %s"),
-                           virPCIDeviceGetName(pci),
-                           other_drvname, other_domname);
-        else
-            virReportError(VIR_ERR_OPERATION_INVALID,
-                           _("PCI device %s is still in use"),
-                           virPCIDeviceGetName(pci));
-        goto out;
-    }
-
-    virPCIDeviceReattachInit(pci);
-
-    if (virPCIDeviceReattach(pci, hostdev_mgr->activePciHostdevs,
-                             hostdev_mgr->inactivePciHostdevs) < 0)
-        goto out;
-
-    ret = 0;
-out:
-    virObjectUnlock(hostdev_mgr->inactivePciHostdevs);
-    virObjectUnlock(hostdev_mgr->activePciHostdevs);
-    return ret;
-}
-
 static int
 qemuNodeDeviceReAttach(virNodeDevicePtr dev)
 {
@@ -11450,25 +11388,6 @@ cleanup:
     return ret;
 }
 
-static int
-virHostdevPciNodeDeviceReset(virHostdevManagerPtr hostdev_mgr,
-                             virPCIDevicePtr pci)
-{
-    int ret = -1;
-
-    virObjectLock(hostdev_mgr->activePciHostdevs);
-    virObjectLock(hostdev_mgr->inactivePciHostdevs);
-    if (virPCIDeviceReset(pci, hostdev_mgr->activePciHostdevs,
-                          hostdev_mgr->inactivePciHostdevs) < 0)
-        goto out;
-
-    ret = 0;
-out:
-    virObjectUnlock(hostdev_mgr->inactivePciHostdevs);
-    virObjectUnlock(hostdev_mgr->activePciHostdevs);
-    return ret;
-}
-
 static int
 qemuNodeDeviceReset(virNodeDevicePtr dev)
 {
index cc1ce07dd39f6b0caedd797016215199c10516b5..151408fab858f1dedd0c313dd017cd09821be4f2 100644 (file)
@@ -1379,3 +1379,84 @@ virHostdevReAttachScsiHostdevs(virHostdevManagerPtr hostdev_mgr,
     }
     virObjectUnlock(hostdev_mgr->activeScsiHostdevs);
 }
+
+int
+virHostdevPciNodeDeviceDetach(virHostdevManagerPtr hostdev_mgr,
+                              virPCIDevicePtr pci)
+{
+    int ret = -1;
+
+    virObjectLock(hostdev_mgr->activePciHostdevs);
+    virObjectLock(hostdev_mgr->inactivePciHostdevs);
+
+    if (virPCIDeviceDetach(pci, hostdev_mgr->activePciHostdevs,
+                           hostdev_mgr->inactivePciHostdevs) < 0) {
+        goto out;
+    }
+
+    ret = 0;
+out:
+    virObjectUnlock(hostdev_mgr->inactivePciHostdevs);
+    virObjectUnlock(hostdev_mgr->activePciHostdevs);
+    return ret;
+}
+
+int
+virHostdevPciNodeDeviceReAttach(virHostdevManagerPtr hostdev_mgr,
+                                virPCIDevicePtr pci)
+{
+    virPCIDevicePtr other;
+    int ret = -1;
+
+    virObjectLock(hostdev_mgr->activePciHostdevs);
+    virObjectLock(hostdev_mgr->inactivePciHostdevs);
+    other = virPCIDeviceListFind(hostdev_mgr->activePciHostdevs, pci);
+    if (other) {
+        const char *other_drvname = NULL;
+        const char *other_domname = NULL;
+        virPCIDeviceGetUsedBy(other, &other_drvname, &other_domname);
+
+        if (other_drvname && other_domname)
+            virReportError(VIR_ERR_OPERATION_INVALID,
+                           _("PCI device %s is still in use by "
+                             "driver %s, domain %s"),
+                           virPCIDeviceGetName(pci),
+                           other_drvname, other_domname);
+        else
+            virReportError(VIR_ERR_OPERATION_INVALID,
+                           _("PCI device %s is still in use"),
+                           virPCIDeviceGetName(pci));
+        goto out;
+    }
+
+    virPCIDeviceReattachInit(pci);
+
+    if (virPCIDeviceReattach(pci, hostdev_mgr->activePciHostdevs,
+                             hostdev_mgr->inactivePciHostdevs) < 0)
+        goto out;
+
+    ret = 0;
+out:
+    virObjectUnlock(hostdev_mgr->inactivePciHostdevs);
+    virObjectUnlock(hostdev_mgr->activePciHostdevs);
+    return ret;
+}
+
+int
+virHostdevPciNodeDeviceReset(virHostdevManagerPtr hostdev_mgr,
+                             virPCIDevicePtr pci)
+{
+    int ret = -1;
+
+    virObjectLock(hostdev_mgr->activePciHostdevs);
+    virObjectLock(hostdev_mgr->inactivePciHostdevs);
+    if (virPCIDeviceReset(pci, hostdev_mgr->activePciHostdevs,
+                          hostdev_mgr->inactivePciHostdevs) < 0)
+        goto out;
+
+    ret = 0;
+out:
+    virObjectUnlock(hostdev_mgr->inactivePciHostdevs);
+    virObjectUnlock(hostdev_mgr->activePciHostdevs);
+    return ret;
+}
index 809996c228df1d260de038f08d4cd2d5e6615cab..a502cfc7b465602cb64c833f4b396df8aa3d0583 100644 (file)
@@ -103,4 +103,12 @@ virHostdevUpdateActiveScsiHostdevs(virHostdevManagerPtr mgr,
                                    const char *drv_name,
                                    virDomainDefPtr def);
 
+/* functions used by NodeDevDetach/Reattach/Reset */
+int virHostdevPciNodeDeviceDetach(virHostdevManagerPtr mgr,
+                                  virPCIDevicePtr pci);
+int virHostdevPciNodeDeviceReAttach(virHostdevManagerPtr mgr,
+                                    virPCIDevicePtr pci);
+int virHostdevPciNodeDeviceReset(virHostdevManagerPtr mgr,
+                                 virPCIDevicePtr pci);
+
 #endif /* __VIR_HOSTDEV_H__ */