[SCSI] libsas: fix ata_eh clobbering ex_phys via smp_ata_check_ready
authorDan Williams <[email protected]>
Tue, 20 Mar 2012 20:24:29 +0000 (13:24 -0700)
committerJames Bottomley <[email protected]>
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 <[email protected]>
Tested-by: Maciej Patelczyk <[email protected]>
Tested-by: Bartek Nowakowski <[email protected]>
Tested-by: Jacek Danecki <[email protected]>
Signed-off-by: Dan Williams <[email protected]>
Signed-off-by: James Bottomley <[email protected]>
drivers/scsi/libsas/sas_expander.c