5381837f12
There's a hotplug problem in the way libsas allocates ports: it loops over the available ports first trying to add to an existing for a wide port and otherwise allocating the next free port. This scheme only works if the port array is packed from zero, which fails if a port gets hot unplugged and the array becomes sparse. In that case, a new port is formed even if there's a wide port it should be part of. Fix this by creating two loops over all the ports: the first to see if the phy should be part of a wide port and the second to form a new port in an empty port slot. Signed-off-by: Tom Peng <tom_peng@usish.com> Signed-off-by: Jack Wang <jack_wang@usish.com> Signed-off-by: Lindar Liu <lindar_liu@usish.com> Cc: Stable Tree <stable@kernel.org> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com> |
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
sas_ata.c | ||
sas_discover.c | ||
sas_dump.c | ||
sas_dump.h | ||
sas_event.c | ||
sas_expander.c | ||
sas_host_smp.c | ||
sas_init.c | ||
sas_internal.h | ||
sas_phy.c | ||
sas_port.c | ||
sas_scsi_host.c | ||
sas_task.c |