mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-22 22:13:18 +00:00
move virHostdevReAttachHostScsiDevices to virhostdev.c
This commit is contained in:
parent
1136b8c153
commit
a4797138ad
@ -1303,6 +1303,7 @@ virHostdevPreparePCIDevices;
|
|||||||
virHostdevPrepareSCSIDevices;
|
virHostdevPrepareSCSIDevices;
|
||||||
virHostdevPrepareUSBDevices;
|
virHostdevPrepareUSBDevices;
|
||||||
virHostdevReAttachPCIDevices;
|
virHostdevReAttachPCIDevices;
|
||||||
|
virHostdevReAttachScsiHostdevs;
|
||||||
virHostdevReAttachUsbHostdevs;
|
virHostdevReAttachUsbHostdevs;
|
||||||
virHostdevUpdateActivePciHostdevs;
|
virHostdevUpdateActivePciHostdevs;
|
||||||
virHostdevUpdateActiveScsiHostdevs;
|
virHostdevUpdateActiveScsiHostdevs;
|
||||||
|
@ -328,68 +328,6 @@ qemuDomainReAttachHostUsbDevices(virQEMUDriverPtr driver,
|
|||||||
name, hostdevs, nhostdevs);
|
name, hostdevs, nhostdevs);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
virHostdevReAttachScsiHostdevs(virHostdevManagerPtr hostdev_mgr,
|
|
||||||
const char *drv_name,
|
|
||||||
const char *name,
|
|
||||||
virDomainHostdevDefPtr *hostdevs,
|
|
||||||
int nhostdevs)
|
|
||||||
{
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
virObjectLock(hostdev_mgr->activeScsiHostdevs);
|
|
||||||
for (i = 0; i < nhostdevs; i++) {
|
|
||||||
virDomainHostdevDefPtr hostdev = hostdevs[i];
|
|
||||||
virSCSIDevicePtr scsi;
|
|
||||||
virSCSIDevicePtr tmp;
|
|
||||||
|
|
||||||
if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS ||
|
|
||||||
hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!(scsi = virSCSIDeviceNew(NULL,
|
|
||||||
hostdev->source.subsys.u.scsi.adapter,
|
|
||||||
hostdev->source.subsys.u.scsi.bus,
|
|
||||||
hostdev->source.subsys.u.scsi.target,
|
|
||||||
hostdev->source.subsys.u.scsi.unit,
|
|
||||||
hostdev->readonly,
|
|
||||||
hostdev->shareable))) {
|
|
||||||
VIR_WARN("Unable to reattach SCSI device %s:%d:%d:%d on domain %s",
|
|
||||||
hostdev->source.subsys.u.scsi.adapter,
|
|
||||||
hostdev->source.subsys.u.scsi.bus,
|
|
||||||
hostdev->source.subsys.u.scsi.target,
|
|
||||||
hostdev->source.subsys.u.scsi.unit,
|
|
||||||
name);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Only delete the devices which are marked as being used by @name,
|
|
||||||
* because qemuProcessStart could fail on the half way. */
|
|
||||||
|
|
||||||
if (!(tmp = virSCSIDeviceListFind(hostdev_mgr->activeScsiHostdevs, scsi))) {
|
|
||||||
VIR_WARN("Unable to find device %s:%d:%d:%d "
|
|
||||||
"in list of active SCSI devices",
|
|
||||||
hostdev->source.subsys.u.scsi.adapter,
|
|
||||||
hostdev->source.subsys.u.scsi.bus,
|
|
||||||
hostdev->source.subsys.u.scsi.target,
|
|
||||||
hostdev->source.subsys.u.scsi.unit);
|
|
||||||
virSCSIDeviceFree(scsi);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
VIR_DEBUG("Removing %s:%d:%d:%d dom=%s from activeScsiHostdevs",
|
|
||||||
hostdev->source.subsys.u.scsi.adapter,
|
|
||||||
hostdev->source.subsys.u.scsi.bus,
|
|
||||||
hostdev->source.subsys.u.scsi.target,
|
|
||||||
hostdev->source.subsys.u.scsi.unit,
|
|
||||||
name);
|
|
||||||
|
|
||||||
virSCSIDeviceListDel(hostdev_mgr->activeScsiHostdevs, tmp, drv_name, name);
|
|
||||||
virSCSIDeviceFree(scsi);
|
|
||||||
}
|
|
||||||
virObjectUnlock(hostdev_mgr->activeScsiHostdevs);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
qemuDomainReAttachHostScsiDevices(virQEMUDriverPtr driver,
|
qemuDomainReAttachHostScsiDevices(virQEMUDriverPtr driver,
|
||||||
const char *name,
|
const char *name,
|
||||||
|
@ -1317,3 +1317,65 @@ virHostdevReAttachUsbHostdevs(virHostdevManagerPtr hostdev_mgr,
|
|||||||
}
|
}
|
||||||
virObjectUnlock(hostdev_mgr->activeUsbHostdevs);
|
virObjectUnlock(hostdev_mgr->activeUsbHostdevs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
virHostdevReAttachScsiHostdevs(virHostdevManagerPtr hostdev_mgr,
|
||||||
|
const char *drv_name,
|
||||||
|
const char *name,
|
||||||
|
virDomainHostdevDefPtr *hostdevs,
|
||||||
|
int nhostdevs)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
virObjectLock(hostdev_mgr->activeScsiHostdevs);
|
||||||
|
for (i = 0; i < nhostdevs; i++) {
|
||||||
|
virDomainHostdevDefPtr hostdev = hostdevs[i];
|
||||||
|
virSCSIDevicePtr scsi;
|
||||||
|
virSCSIDevicePtr tmp;
|
||||||
|
|
||||||
|
if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS ||
|
||||||
|
hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!(scsi = virSCSIDeviceNew(NULL,
|
||||||
|
hostdev->source.subsys.u.scsi.adapter,
|
||||||
|
hostdev->source.subsys.u.scsi.bus,
|
||||||
|
hostdev->source.subsys.u.scsi.target,
|
||||||
|
hostdev->source.subsys.u.scsi.unit,
|
||||||
|
hostdev->readonly,
|
||||||
|
hostdev->shareable))) {
|
||||||
|
VIR_WARN("Unable to reattach SCSI device %s:%d:%d:%d on domain %s",
|
||||||
|
hostdev->source.subsys.u.scsi.adapter,
|
||||||
|
hostdev->source.subsys.u.scsi.bus,
|
||||||
|
hostdev->source.subsys.u.scsi.target,
|
||||||
|
hostdev->source.subsys.u.scsi.unit,
|
||||||
|
name);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Only delete the devices which are marked as being used by @name,
|
||||||
|
* because qemuProcessStart could fail on the half way. */
|
||||||
|
|
||||||
|
if (!(tmp = virSCSIDeviceListFind(hostdev_mgr->activeScsiHostdevs, scsi))) {
|
||||||
|
VIR_WARN("Unable to find device %s:%d:%d:%d "
|
||||||
|
"in list of active SCSI devices",
|
||||||
|
hostdev->source.subsys.u.scsi.adapter,
|
||||||
|
hostdev->source.subsys.u.scsi.bus,
|
||||||
|
hostdev->source.subsys.u.scsi.target,
|
||||||
|
hostdev->source.subsys.u.scsi.unit);
|
||||||
|
virSCSIDeviceFree(scsi);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
VIR_DEBUG("Removing %s:%d:%d:%d dom=%s from activeScsiHostdevs",
|
||||||
|
hostdev->source.subsys.u.scsi.adapter,
|
||||||
|
hostdev->source.subsys.u.scsi.bus,
|
||||||
|
hostdev->source.subsys.u.scsi.target,
|
||||||
|
hostdev->source.subsys.u.scsi.unit,
|
||||||
|
name);
|
||||||
|
|
||||||
|
virSCSIDeviceListDel(hostdev_mgr->activeScsiHostdevs, tmp, drv_name, name);
|
||||||
|
virSCSIDeviceFree(scsi);
|
||||||
|
}
|
||||||
|
virObjectUnlock(hostdev_mgr->activeScsiHostdevs);
|
||||||
|
}
|
||||||
|
@ -84,6 +84,12 @@ virHostdevReAttachUsbHostdevs(virHostdevManagerPtr hostdev_mgr,
|
|||||||
const char *name,
|
const char *name,
|
||||||
virDomainHostdevDefPtr *hostdevs,
|
virDomainHostdevDefPtr *hostdevs,
|
||||||
int nhostdevs);
|
int nhostdevs);
|
||||||
|
void
|
||||||
|
virHostdevReAttachScsiHostdevs(virHostdevManagerPtr hostdev_mgr,
|
||||||
|
const char *drv_name,
|
||||||
|
const char *name,
|
||||||
|
virDomainHostdevDefPtr *hostdevs,
|
||||||
|
int nhostdevs);
|
||||||
int
|
int
|
||||||
virHostdevUpdateActivePciHostdevs(virHostdevManagerPtr mgr,
|
virHostdevUpdateActivePciHostdevs(virHostdevManagerPtr mgr,
|
||||||
const char *drv_name,
|
const char *drv_name,
|
||||||
|
Loading…
Reference in New Issue
Block a user