[SCSI] libsas: fix ata_eh clobbering ex_phys via smp_ata_check_ready
authorDan Williams <dan.j.williams@intel.com>
Tue, 20 Mar 2012 20:24:29 +0000 (13:24 -0700)
committerJames Bottomley <JBottomley@Parallels.com>
Mon, 23 Apr 2012 11:10:34 +0000 (12:10 +0100)
commit0f3fce5cc77e1f35758ef0e46a989e76e5046a7b
treea167f2e1403dd7e2e61d4423cc2ac0a6e1bc35a2
parent9487669fc225092cf315e1291ece28e23e6754f3
[SCSI] libsas: fix ata_eh clobbering ex_phys via smp_ata_check_ready

The check_ready implementation in the expander-attached ata device case
polls on sas_ex_phy_discover().  The effect is that the ex_phy fields
(critically ->attached_sas_addr) can change.  When ata_eh ends and
libsas comes along to revalidate the domain
sas_unregister_devs_sas_addr() can fail to lookup devices to remove, or
fail to re-add an ata device that ata_eh marked as disabled.  So change
the code to skip the sas_address and change count updates when ata_eh is
active.

Cc: Jack Wang <jack_wang@usish.com>
Tested-by: Maciej Patelczyk <maciej.patelczyk@intel.com>
Tested-by: Bartek Nowakowski <bartek.nowakowski@intel.com>
Tested-by: Jacek Danecki <jacek.danecki@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/libsas/sas_expander.c