[SCSI] libsas: don't recover 'gone' devices in sas_ata_hard_reset()
The commands that timeout when a disk is forcibly removed may trigger libata to attempt recovery of the device. If libsas has decided to remove the device don't permit ata to continue to issue resets to its last known phy. The primary motivation for this patch is hotplug testing by writing 0 to /sys/class/sas_phy/phyX/enable. Without this check this test leads to libata issuing a reset and re-enabling the device that wants to be torn down. Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
f41a0c441c
commit
cb48d672bf
1 changed files with 3 additions and 0 deletions
|
@ -326,6 +326,9 @@ static int sas_ata_hard_reset(struct ata_link *link, unsigned int *class,
|
||||||
struct domain_device *dev = ap->private_data;
|
struct domain_device *dev = ap->private_data;
|
||||||
struct sas_internal *i = dev_to_sas_internal(dev);
|
struct sas_internal *i = dev_to_sas_internal(dev);
|
||||||
|
|
||||||
|
if (test_bit(SAS_DEV_GONE, &dev->state))
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
res = i->dft->lldd_I_T_nexus_reset(dev);
|
res = i->dft->lldd_I_T_nexus_reset(dev);
|
||||||
|
|
||||||
if (res != TMF_RESP_FUNC_COMPLETE)
|
if (res != TMF_RESP_FUNC_COMPLETE)
|
||||||
|
|
Loading…
Reference in a new issue