mpt3sas: Never block the Enclosure device
Never block the SEP device (i.e. Never invoke the scsi_internal_device_block() API for SEP device) even for the delay not responding events. Blocking the SEP device will create a deadlock while adding any device to the OS. Signed-off-by: Suganath prabu Subramani <suganath-prabu.subramani@avagotech.com> Signed-off-by: Chaitra P B <chaitra.basappa@avagotech.com> Reviewed-by: Tomas Henzl <thenzl@redhat.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
869817f9e9
commit
30158dc9bb
@ -398,6 +398,7 @@ struct MPT3SAS_DEVICE {
|
||||
u8 configured_lun;
|
||||
u8 block;
|
||||
u8 tlr_snoop_check;
|
||||
u8 ignore_delay_remove;
|
||||
};
|
||||
|
||||
#define MPT3_CMD_NOT_USED 0x8000 /* free */
|
||||
|
@ -1953,7 +1953,15 @@ scsih_slave_configure(struct scsi_device *sdev)
|
||||
if (sas_device->device_info & MPI2_SAS_DEVICE_INFO_SSP_TARGET) {
|
||||
qdepth = MPT3SAS_SAS_QUEUE_DEPTH;
|
||||
ssp_target = 1;
|
||||
ds = "SSP";
|
||||
if (sas_device->device_info &
|
||||
MPI2_SAS_DEVICE_INFO_SEP) {
|
||||
sdev_printk(KERN_WARNING, sdev,
|
||||
"set ignore_delay_remove for handle(0x%04x)\n",
|
||||
sas_device_priv_data->sas_target->handle);
|
||||
sas_device_priv_data->ignore_delay_remove = 1;
|
||||
ds = "SES";
|
||||
} else
|
||||
ds = "SSP";
|
||||
} else {
|
||||
qdepth = MPT3SAS_SATA_QUEUE_DEPTH;
|
||||
if (sas_device->device_info & MPI2_SAS_DEVICE_INFO_STP_TARGET)
|
||||
@ -2943,6 +2951,12 @@ _scsih_block_io_all_device(struct MPT3SAS_ADAPTER *ioc)
|
||||
continue;
|
||||
if (sas_device_priv_data->block)
|
||||
continue;
|
||||
if (sas_device_priv_data->ignore_delay_remove) {
|
||||
sdev_printk(KERN_INFO, sdev,
|
||||
"%s skip device_block for SES handle(0x%04x)\n",
|
||||
__func__, sas_device_priv_data->sas_target->handle);
|
||||
continue;
|
||||
}
|
||||
_scsih_internal_device_block(sdev, sas_device_priv_data);
|
||||
}
|
||||
}
|
||||
@ -2975,6 +2989,12 @@ _scsih_block_io_device(struct MPT3SAS_ADAPTER *ioc, u16 handle)
|
||||
continue;
|
||||
if (sas_device->pend_sas_rphy_add)
|
||||
continue;
|
||||
if (sas_device_priv_data->ignore_delay_remove) {
|
||||
sdev_printk(KERN_INFO, sdev,
|
||||
"%s skip device_block for SES handle(0x%04x)\n",
|
||||
__func__, sas_device_priv_data->sas_target->handle);
|
||||
continue;
|
||||
}
|
||||
_scsih_internal_device_block(sdev, sas_device_priv_data);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user