提交 1fabf06c 编写于 作者: C Chunyan Liu 提交者: Daniel P. Berrange

move virHostdevNodeDevice* to virhostdev.c

上级 de4aace4
...@@ -1299,6 +1299,9 @@ virHookPresent; ...@@ -1299,6 +1299,9 @@ virHookPresent;
#util/virhostdev.h #util/virhostdev.h
virHostdevManagerGetDefault; virHostdevManagerGetDefault;
virHostdevPciNodeDeviceDetach;
virHostdevPciNodeDeviceReAttach;
virHostdevPciNodeDeviceReset;
virHostdevPreparePCIDevices; virHostdevPreparePCIDevices;
virHostdevPrepareSCSIDevices; virHostdevPrepareSCSIDevices;
virHostdevPrepareUSBDevices; virHostdevPrepareUSBDevices;
......
...@@ -11264,27 +11264,6 @@ out: ...@@ -11264,27 +11264,6 @@ out:
return ret; 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 static int
qemuNodeDeviceDetachFlags(virNodeDevicePtr dev, qemuNodeDeviceDetachFlags(virNodeDevicePtr dev,
const char *driverName, const char *driverName,
...@@ -11371,47 +11350,6 @@ qemuNodeDeviceDettach(virNodeDevicePtr dev) ...@@ -11371,47 +11350,6 @@ qemuNodeDeviceDettach(virNodeDevicePtr dev)
return qemuNodeDeviceDetachFlags(dev, NULL, 0); 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 static int
qemuNodeDeviceReAttach(virNodeDevicePtr dev) qemuNodeDeviceReAttach(virNodeDevicePtr dev)
{ {
...@@ -11450,25 +11388,6 @@ cleanup: ...@@ -11450,25 +11388,6 @@ cleanup:
return ret; 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 static int
qemuNodeDeviceReset(virNodeDevicePtr dev) qemuNodeDeviceReset(virNodeDevicePtr dev)
{ {
......
...@@ -1379,3 +1379,84 @@ virHostdevReAttachScsiHostdevs(virHostdevManagerPtr hostdev_mgr, ...@@ -1379,3 +1379,84 @@ virHostdevReAttachScsiHostdevs(virHostdevManagerPtr hostdev_mgr,
} }
virObjectUnlock(hostdev_mgr->activeScsiHostdevs); 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;
}
...@@ -103,4 +103,12 @@ virHostdevUpdateActiveScsiHostdevs(virHostdevManagerPtr mgr, ...@@ -103,4 +103,12 @@ virHostdevUpdateActiveScsiHostdevs(virHostdevManagerPtr mgr,
const char *drv_name, const char *drv_name,
virDomainDefPtr def); 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__ */ #endif /* __VIR_HOSTDEV_H__ */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册