mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 19:32:19 +00:00
add 3 wrapper functions for prepare/reattach/update domain hostdevs
This commit is contained in:
parent
4dd9f103fa
commit
e991b09ddd
@ -1297,20 +1297,24 @@ virHookInitialize;
|
|||||||
virHookPresent;
|
virHookPresent;
|
||||||
|
|
||||||
|
|
||||||
#util/virhostdev.h
|
# util/virhostdev.h
|
||||||
virHostdevManagerGetDefault;
|
virHostdevManagerGetDefault;
|
||||||
virHostdevPCINodeDeviceDetach;
|
virHostdevPCINodeDeviceDetach;
|
||||||
virHostdevPCINodeDeviceReAttach;
|
virHostdevPCINodeDeviceReAttach;
|
||||||
virHostdevPCINodeDeviceReset;
|
virHostdevPCINodeDeviceReset;
|
||||||
|
virHostdevPrepareDomainDevices;
|
||||||
virHostdevPreparePCIDevices;
|
virHostdevPreparePCIDevices;
|
||||||
virHostdevPrepareSCSIDevices;
|
virHostdevPrepareSCSIDevices;
|
||||||
virHostdevPrepareUSBDevices;
|
virHostdevPrepareUSBDevices;
|
||||||
|
virHostdevReAttachDomainDevices;
|
||||||
virHostdevReAttachPCIDevices;
|
virHostdevReAttachPCIDevices;
|
||||||
virHostdevReAttachSCSIDevices;
|
virHostdevReAttachSCSIDevices;
|
||||||
virHostdevReAttachUSBDevices;
|
virHostdevReAttachUSBDevices;
|
||||||
virHostdevUpdateActivePCIDevices;
|
virHostdevUpdateActivePCIDevices;
|
||||||
virHostdevUpdateActiveSCSIDevices;
|
virHostdevUpdateActiveSCSIDevices;
|
||||||
virHostdevUpdateActiveUSBDevices;
|
virHostdevUpdateActiveUSBDevices;
|
||||||
|
virHostdevUpdateDomainActiveDevices;
|
||||||
|
|
||||||
|
|
||||||
# util/viridentity.h
|
# util/viridentity.h
|
||||||
virIdentityGetAttr;
|
virIdentityGetAttr;
|
||||||
|
@ -1468,3 +1468,106 @@ out:
|
|||||||
virObjectUnlock(hostdev_mgr->activePCIHostdevs);
|
virObjectUnlock(hostdev_mgr->activePCIHostdevs);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
virHostdevPrepareDomainDevices(virHostdevManagerPtr mgr,
|
||||||
|
const char *driver,
|
||||||
|
virDomainDefPtr def,
|
||||||
|
unsigned int flags)
|
||||||
|
{
|
||||||
|
if (!def->nhostdevs)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (mgr == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (flags & VIR_HOSTDEV_SP_PCI) {
|
||||||
|
if (virHostdevPreparePCIDevices(mgr, driver,
|
||||||
|
def->name, def->uuid,
|
||||||
|
def->hostdevs,
|
||||||
|
def->nhostdevs,
|
||||||
|
flags) < 0)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flags & VIR_HOSTDEV_SP_USB) {
|
||||||
|
if (virHostdevPrepareUSBDevices(mgr, driver, def->name,
|
||||||
|
def->hostdevs, def->nhostdevs,
|
||||||
|
flags) < 0)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flags & VIR_HOSTDEV_SP_SCSI) {
|
||||||
|
if (virHostdevPrepareSCSIDevices(mgr, driver, def->name,
|
||||||
|
def->hostdevs, def->nhostdevs) < 0)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @oldStateDir
|
||||||
|
* For upgrade purpose: see virHostdevReAttachPciHostdevs
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
virHostdevReAttachDomainDevices(virHostdevManagerPtr mgr,
|
||||||
|
const char *driver,
|
||||||
|
virDomainDefPtr def,
|
||||||
|
unsigned int flags,
|
||||||
|
const char *oldStateDir)
|
||||||
|
{
|
||||||
|
if (!def->nhostdevs || !mgr)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (flags & VIR_HOSTDEV_SP_PCI) {
|
||||||
|
virHostdevReAttachPCIDevices(mgr, driver, def->name,
|
||||||
|
def->hostdevs, def->nhostdevs,
|
||||||
|
oldStateDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flags & VIR_HOSTDEV_SP_USB) {
|
||||||
|
virHostdevReAttachUSBDevices(mgr, driver, def->name,
|
||||||
|
def->hostdevs, def->nhostdevs);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flags & VIR_HOSTDEV_SP_SCSI) {
|
||||||
|
virHostdevReAttachSCSIDevices(mgr, driver, def->name,
|
||||||
|
def->hostdevs, def->nhostdevs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
virHostdevUpdateDomainActiveDevices(virHostdevManagerPtr mgr,
|
||||||
|
const char *driver,
|
||||||
|
virDomainDefPtr def,
|
||||||
|
unsigned int flags)
|
||||||
|
{
|
||||||
|
if (!def->nhostdevs)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (flags & VIR_HOSTDEV_SP_PCI) {
|
||||||
|
if (virHostdevUpdateActivePCIDevices(mgr,
|
||||||
|
def->hostdevs,
|
||||||
|
def->nhostdevs,
|
||||||
|
driver, def->name) < 0)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flags & VIR_HOSTDEV_SP_USB) {
|
||||||
|
if (virHostdevUpdateActiveUSBDevices(mgr,
|
||||||
|
def->hostdevs,
|
||||||
|
def->nhostdevs,
|
||||||
|
driver, def->name) < 0)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flags & VIR_HOSTDEV_SP_SCSI) {
|
||||||
|
if (virHostdevUpdateActiveSCSIDevices(mgr,
|
||||||
|
def->hostdevs,
|
||||||
|
def->nhostdevs,
|
||||||
|
driver, def->name) < 0)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@ -35,6 +35,10 @@
|
|||||||
typedef enum {
|
typedef enum {
|
||||||
VIR_HOSTDEV_STRICT_ACS_CHECK = (1 << 0), /* strict acs check */
|
VIR_HOSTDEV_STRICT_ACS_CHECK = (1 << 0), /* strict acs check */
|
||||||
VIR_HOSTDEV_COLD_BOOT = (1 << 1), /* cold boot */
|
VIR_HOSTDEV_COLD_BOOT = (1 << 1), /* cold boot */
|
||||||
|
|
||||||
|
VIR_HOSTDEV_SP_PCI = (1 << 8), /* support pci passthrough */
|
||||||
|
VIR_HOSTDEV_SP_USB = (1 << 9), /* support usb passthrough */
|
||||||
|
VIR_HOSTDEV_SP_SCSI = (1 << 10), /* support scsi passthrough */
|
||||||
} virHostdevFlag;
|
} virHostdevFlag;
|
||||||
|
|
||||||
|
|
||||||
@ -108,6 +112,22 @@ virHostdevUpdateActiveSCSIDevices(virHostdevManagerPtr mgr,
|
|||||||
int nhostdevs,
|
int nhostdevs,
|
||||||
const char *drv_name,
|
const char *drv_name,
|
||||||
const char *dom_name);
|
const char *dom_name);
|
||||||
|
int
|
||||||
|
virHostdevUpdateDomainActiveDevices(virHostdevManagerPtr mgr,
|
||||||
|
const char *driver,
|
||||||
|
virDomainDefPtr def,
|
||||||
|
unsigned int flags);
|
||||||
|
int
|
||||||
|
virHostdevPrepareDomainDevices(virHostdevManagerPtr mgr,
|
||||||
|
const char *driver,
|
||||||
|
virDomainDefPtr def,
|
||||||
|
unsigned int flags);
|
||||||
|
void
|
||||||
|
virHostdevReAttachDomainDevices(virHostdevManagerPtr mgr,
|
||||||
|
const char *driver,
|
||||||
|
virDomainDefPtr def,
|
||||||
|
unsigned int flags,
|
||||||
|
const char *oldStateDir);
|
||||||
|
|
||||||
/* functions used by NodeDevDetach/Reattach/Reset */
|
/* functions used by NodeDevDetach/Reattach/Reset */
|
||||||
int virHostdevPCINodeDeviceDetach(virHostdevManagerPtr mgr,
|
int virHostdevPCINodeDeviceDetach(virHostdevManagerPtr mgr,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user