mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +00:00
move virHostdevNodeDevice* to virhostdev.c
This commit is contained in:
parent
de4aace4b0
commit
1fabf06ca5
@ -1299,6 +1299,9 @@ virHookPresent;
|
||||
|
||||
#util/virhostdev.h
|
||||
virHostdevManagerGetDefault;
|
||||
virHostdevPciNodeDeviceDetach;
|
||||
virHostdevPciNodeDeviceReAttach;
|
||||
virHostdevPciNodeDeviceReset;
|
||||
virHostdevPreparePCIDevices;
|
||||
virHostdevPrepareSCSIDevices;
|
||||
virHostdevPrepareUSBDevices;
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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__ */
|
||||
|
Loading…
Reference in New Issue
Block a user