libsas-fixes for 3.4-rc4
Regression fixes to stabilize the new workqueue and ata asynchronous
error handling implementation that was merged for v3.4-rc1.
1/ fix regression in sas_drain_work() which was stomping on 'work'
entries while the workqueue was manipulating them. User sees
random crashes when trying to use scsi_transport_sas attributes for
resets, or during discovery.
2/ (2) longstanding bugs related to the fact that libata (inventor and
primary host_eh_scheduled user) had built-in assumptions of 1:1
Scsi_Host-to-ata_port relationship. The libsas 1:N arrangement
magnified these problems when it gained async eh and began scheduling
eh in more scenarios (sas-transports resets) in 3.4-rc1.
3/ lifetime fixes for the rphy since code that has a domain_device
reference expects to be able to de-reference rphy parameters.
4/ (3) fixes for expander discovery bugs, one a recent regression with
ata-eh clobbering expander-phy data as it polled leading to system
crashes, a long standing bug that caused libsas to be
incompatible with expanders that advertised "PHY_VACANT" in low order
phy indexes, and a quirk for expanders that sometimes fail to zero
the sas address when no device is attached.
5/ fix for a long-standing bug whereby hotunplug events during initial
host scan can cause a system crash
6/ fix for a mvsas regression caused by the new end-device naming in
libsas making the incorrect assumption that at all phy ids
exported by an lldd are unique.
Revert "[SCSI] libsas: fix sas port naming"
This reverts commit a692b0eec5efae382dfa800e8b4b083f172921a7.
[ 8.741033] ------------[ cut here ]------------
[ 8.741038] WARNING: at fs/sysfs/dir.c:508 sysfs_add_one+0xc1/0xf0()
[ 8.741040] Hardware name: To Be Filled By O.E.M.
[ 8.741041] sysfs: cannot create duplicate filename
...and missing 2 out of 4 drives connected to mvsas. Commit a692b0ee
made the assumption that all the phy ids an lldd registers to libsas are
unique. However, in the "multi-chip" case mvsas does a rather annoying
duplication of phy ids in the array passed to libsas. So, for example,
chip0 has phy0-3 at ha phy index 0-3 and chip1 has its phy0-3 at ha phy
index 4-7. The more natural model would be to create a scsi_host (and
sas_ha) per chip (controller), but for now revert the naming fix which
unfortunately means dealing with unpredictable end-device names for a
Cc: Xiangliang Yu <email@example.com>
Cc: Patrick Thomson <firstname.lastname@example.org>
Reported-by: Tom Rini <email@example.com>
Tested-by: Tom Rini <firstname.lastname@example.org>
Signed-off-by: Dan Williams <email@example.com>
1 file changed