pc-bios/s390-ccw: Fix problem with invalid virtio-scsi LUN when rebooting
When rebooting a guest that has a virtio-scsi disk, the s390-ccw bios sometimes bails out with an error message like this: ! SCSI cannot report LUNs: STATUS=02 RSPN=70 KEY=05 CODE=25 QLFR=00, sure ! Enabling the scsi_req* tracing in QEMU shows that the ccw bios is trying to execute the REPORT LUNS SCSI command with a LUN != 0, and this causes the SCSI command to fail. Looks like we neither clear the BSS of the s390-ccw bios during reboot, nor do we explicitly set the default_scsi_device.lun value to 0, so this variable can contain random values from the OS after the reboot. By setting this variable explicitly to 0, the problem is fixed and the reboots always succeed. Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1514352 Signed-off-by: Thomas Huth <thuth@redhat.com> Message-Id: <1510942228-22822-1-git-send-email-thuth@redhat.com> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com> Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
This commit is contained in:
parent
7337c6eb98
commit
8775d91a0f
@ -223,7 +223,8 @@ static void virtio_scsi_locate_device(VDev *vdev)
|
||||
|
||||
for (target = 0; target <= vdev->config.scsi.max_target; target++) {
|
||||
sdev->channel = channel;
|
||||
sdev->target = target; /* sdev->lun will be 0 here */
|
||||
sdev->target = target;
|
||||
sdev->lun = 0; /* LUN has to be 0 for REPORT LUNS */
|
||||
if (!scsi_report_luns(vdev, data, sizeof(data))) {
|
||||
if (resp.response == VIRTIO_SCSI_S_BAD_TARGET) {
|
||||
continue;
|
||||
|
Loading…
Reference in New Issue
Block a user