Skip to content

Commit

Permalink
[SCSI] libsas: don't recover 'gone' devices in sas_ata_hard_reset()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Dan Williams authored and James Bottomley committed Feb 29, 2012
1 parent f41a0c4 commit cb48d67
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions drivers/scsi/libsas/sas_ata.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 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);

if (res != TMF_RESP_FUNC_COMPLETE)
Expand Down

0 comments on commit cb48d67

Please sign in to comment.