mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 04:25:18 +00:00
conf: Use existing SCSI hostdev model to create new
In virDomainDefMaybeAddHostdevSCSIcontroller when we add a new controller because someone neglected to add one or we're adding one because the existing one is full, we should copy over the model number from the existing controller since whatever we create should at least have the same characteristics as the one we cannot use because it's full. NB: This affects the existing hostdev-scsi-autogen-address test which would add a default ('lsi') SCSI controller for the various scsi_host's that would create a controller for the hostdev.
This commit is contained in:
parent
07beea6ca2
commit
c52dbafe9f
@ -17727,12 +17727,23 @@ virDomainDefMaybeAddHostdevSCSIcontroller(virDomainDefPtr def)
|
||||
size_t i;
|
||||
int maxController = -1;
|
||||
virDomainHostdevDefPtr hostdev;
|
||||
int newModel = -1;
|
||||
|
||||
for (i = 0; i < def->nhostdevs; i++) {
|
||||
hostdev = def->hostdevs[i];
|
||||
if (virHostdevIsSCSIDevice(hostdev) &&
|
||||
(int)hostdev->info->addr.drive.controller > maxController) {
|
||||
int model = -1;
|
||||
|
||||
maxController = hostdev->info->addr.drive.controller;
|
||||
/* We may be creating a new controller because this one is full.
|
||||
* So let's grab the model from it and update the model we're
|
||||
* going to add as long as this one isn't undefined. The premise
|
||||
* being keeping the same controller model for all SCSI hostdevs. */
|
||||
model = virDomainDeviceFindControllerModel(def, hostdev->info,
|
||||
VIR_DOMAIN_CONTROLLER_TYPE_SCSI);
|
||||
if (model != -1)
|
||||
newModel = model;
|
||||
}
|
||||
}
|
||||
|
||||
@ -17740,7 +17751,8 @@ virDomainDefMaybeAddHostdevSCSIcontroller(virDomainDefPtr def)
|
||||
return 0;
|
||||
|
||||
for (i = 0; i <= maxController; i++) {
|
||||
if (virDomainDefMaybeAddController(def, VIR_DOMAIN_CONTROLLER_TYPE_SCSI, i, -1) < 0)
|
||||
if (virDomainDefMaybeAddController(def, VIR_DOMAIN_CONTROLLER_TYPE_SCSI,
|
||||
i, newModel) < 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
|
||||
</controller>
|
||||
<controller type='pci' index='0' model='pci-root'/>
|
||||
<controller type='scsi' index='1'>
|
||||
<controller type='scsi' index='1' model='virtio-scsi'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
|
||||
</controller>
|
||||
<input type='mouse' bus='ps2'/>
|
||||
|
Loading…
x
Reference in New Issue
Block a user