mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-03 11:35:19 +00:00
conf: Try controller add when searching hostdev bus for unit
If virDomainControllerSCSINextUnit failed to find a slot on the current VIR_DOMAIN_CONTROLLER_TYPE_SCSI controller(s), try to add a new controller; otherwise, there may be multiple unit=0 entries for the same "next" controller. Signed-off-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
83f2b62c1f
commit
0785966d03
@ -3985,7 +3985,7 @@ virDomainHostdevAssignAddress(virDomainXMLOptionPtr xmlopt,
|
|||||||
int next_unit = 0;
|
int next_unit = 0;
|
||||||
unsigned controller = 0;
|
unsigned controller = 0;
|
||||||
size_t i;
|
size_t i;
|
||||||
int ret;
|
int ret = -1;
|
||||||
|
|
||||||
for (i = 0; i < def->ncontrollers; i++) {
|
for (i = 0; i < def->ncontrollers; i++) {
|
||||||
if (def->controllers[i]->type != VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
|
if (def->controllers[i]->type != VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
|
||||||
@ -4004,6 +4004,17 @@ virDomainHostdevAssignAddress(virDomainXMLOptionPtr xmlopt,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If failed to find any VIR_DOMAIN_CONTROLLER_TYPE_SCSI or any space
|
||||||
|
* on existing VIR_DOMAIN_CONTROLLER_TYPE_SCSI controller(s), then
|
||||||
|
* try to add a new controller resulting in placement of this entry
|
||||||
|
* as unit=0
|
||||||
|
*/
|
||||||
|
if (ret == -1 &&
|
||||||
|
virDomainDefMaybeAddController((virDomainDefPtr) def,
|
||||||
|
VIR_DOMAIN_CONTROLLER_TYPE_SCSI,
|
||||||
|
controller, -1) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
hostdev->info->type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE;
|
hostdev->info->type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE;
|
||||||
hostdev->info->addr.drive.controller = controller;
|
hostdev->info->addr.drive.controller = controller;
|
||||||
hostdev->info->addr.drive.bus = 0;
|
hostdev->info->addr.drive.bus = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user