mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-03 12:55:45 +00:00
qemu: fix setting of scsi-id for ESP SCSI controllers
The ESP SCSI controllers (NCR53C90, DC390, AM53C974) have the same requirement as the LSI Logic controller for each disk to be set via the scsi-id=NNN property, not the lun=NNN property. Switching the code to use an enum will force authors to pay attention to this difference when adding future SCSI controllers. Reviewed-by: Laine Stump <laine@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
cbf33fbaf6
commit
24ce5a6cd2
@ -1625,17 +1625,39 @@ qemuBuildDiskDeviceStr(const virDomainDef *def,
|
|||||||
disk->info.addr.drive.controller)))
|
disk->info.addr.drive.controller)))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (controllerModel == VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC) {
|
switch ((virDomainControllerModelSCSI)controllerModel) {
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_NCR53C90:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DC390:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AM53C974:
|
||||||
virBufferAsprintf(&opt, ",bus=%s.%d,scsi-id=%d",
|
virBufferAsprintf(&opt, ",bus=%s.%d,scsi-id=%d",
|
||||||
contAlias,
|
contAlias,
|
||||||
disk->info.addr.drive.bus,
|
disk->info.addr.drive.bus,
|
||||||
disk->info.addr.drive.unit);
|
disk->info.addr.drive.unit);
|
||||||
} else {
|
break;
|
||||||
|
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_TRANSITIONAL:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_NON_TRANSITIONAL:
|
||||||
virBufferAsprintf(&opt, ",bus=%s.0,channel=%d,scsi-id=%d,lun=%d",
|
virBufferAsprintf(&opt, ",bus=%s.0,channel=%d,scsi-id=%d,lun=%d",
|
||||||
contAlias,
|
contAlias,
|
||||||
disk->info.addr.drive.bus,
|
disk->info.addr.drive.bus,
|
||||||
disk->info.addr.drive.target,
|
disk->info.addr.drive.target,
|
||||||
disk->info.addr.drive.unit);
|
disk->info.addr.drive.unit);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST:
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
|
_("Unexpected SCSI controller model %d"),
|
||||||
|
controllerModel);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scsiVPDDeviceId)
|
if (scsiVPDDeviceId)
|
||||||
|
@ -26,9 +26,8 @@ path=/tmp/lib/domain--1-redhat62sparc/monitor.sock,server,nowait \
|
|||||||
-usb \
|
-usb \
|
||||||
-drive file=/home/berrange/VirtualMachines/redhat-6.2-sparc.img,format=qcow2,\
|
-drive file=/home/berrange/VirtualMachines/redhat-6.2-sparc.img,format=qcow2,\
|
||||||
if=none,id=drive-scsi0-0-0-0 \
|
if=none,id=drive-scsi0-0-0-0 \
|
||||||
-device scsi-hd,bus=scsi.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0-0-0-0,\
|
-device scsi-hd,bus=scsi.0,scsi-id=0,drive=drive-scsi0-0-0-0,id=scsi0-0-0-0,\
|
||||||
id=scsi0-0-0-0,bootindex=1 \
|
bootindex=1 \
|
||||||
-drive file=/home/berrange/VirtualMachines/redhat-6.2-sparc.iso,format=raw,\
|
-drive file=/home/berrange/VirtualMachines/redhat-6.2-sparc.iso,format=raw,\
|
||||||
if=none,id=drive-scsi0-0-0-1,readonly=on \
|
if=none,id=drive-scsi0-0-0-1,readonly=on \
|
||||||
-device scsi-cd,bus=scsi.0,channel=0,scsi-id=0,lun=1,drive=drive-scsi0-0-0-1,\
|
-device scsi-cd,bus=scsi.0,scsi-id=1,drive=drive-scsi0-0-0-1,id=scsi0-0-0-1
|
||||||
id=scsi0-0-0-1
|
|
||||||
|
Loading…
Reference in New Issue
Block a user