scsi: hpsa: correct device id issues
Correct a 'rare' race condition where a disk is failed after a device list has been obtained from the controller and before attempting to get the device id. Reviewed-by: Scott Teel <scott.teel@microsemi.com> Signed-off-by: Don Brace <don.brace@microsemi.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
49ea45cb1d
commit
a45bcc4e11
|
@ -3967,14 +3967,18 @@ static int hpsa_update_device_info(struct ctlr_info *h,
|
||||||
memset(this_device->device_id, 0,
|
memset(this_device->device_id, 0,
|
||||||
sizeof(this_device->device_id));
|
sizeof(this_device->device_id));
|
||||||
if (hpsa_get_device_id(h, scsi3addr, this_device->device_id, 8,
|
if (hpsa_get_device_id(h, scsi3addr, this_device->device_id, 8,
|
||||||
sizeof(this_device->device_id)) < 0)
|
sizeof(this_device->device_id)) < 0) {
|
||||||
dev_err(&h->pdev->dev,
|
dev_err(&h->pdev->dev,
|
||||||
"hpsa%d: %s: can't get device id for host %d:C0:T%d:L%d\t%s\t%.16s\n",
|
"hpsa%d: %s: can't get device id for [%d:%d:%d:%d]\t%s\t%.16s\n",
|
||||||
h->ctlr, __func__,
|
h->ctlr, __func__,
|
||||||
h->scsi_host->host_no,
|
h->scsi_host->host_no,
|
||||||
this_device->target, this_device->lun,
|
this_device->bus, this_device->target,
|
||||||
|
this_device->lun,
|
||||||
scsi_device_type(this_device->devtype),
|
scsi_device_type(this_device->devtype),
|
||||||
this_device->model);
|
this_device->model);
|
||||||
|
rc = HPSA_LV_FAILED;
|
||||||
|
goto bail_out;
|
||||||
|
}
|
||||||
|
|
||||||
if ((this_device->devtype == TYPE_DISK ||
|
if ((this_device->devtype == TYPE_DISK ||
|
||||||
this_device->devtype == TYPE_ZBC) &&
|
this_device->devtype == TYPE_ZBC) &&
|
||||||
|
|
Loading…
Reference in New Issue