linux/drivers/scsi/libsas
Jason Yan 1c393b970e scsi: libsas: Use dynamic alloced work to avoid sas event lost
Now libsas hotplug work is static, every sas event type has its own
static work, LLDD driver queues the hotplug work into shost->work_q.  If
LLDD driver burst posts lots hotplug events to libsas, the hotplug
events may pending in the workqueue like

shost->work_q
new work[PORTE_BYTES_DMAED] --> |[PHYE_LOSS_OF_SIGNAL][PORTE_BYTES_DMAED] -> processing
                                |<-------wait worker to process-------->|

In this case, a new PORTE_BYTES_DMAED event coming, libsas try to queue
it to shost->work_q, but this work is already pending, so it would be
lost. Finally, libsas delete the related sas port and sas devices, but
LLDD driver expect libsas add the sas port and devices(last sas event).

This patch use dynamic allocated work to avoid this issue.

Signed-off-by: Yijing Wang <wangyijing@huawei.com>
CC: John Garry <john.garry@huawei.com>
CC: Johannes Thumshirn <jthumshirn@suse.de>
CC: Ewan Milne <emilne@redhat.com>
CC: Christoph Hellwig <hch@lst.de>
CC: Tomas Henzl <thenzl@redhat.com>
CC: Dan Williams <dan.j.williams@intel.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Jason Yan <yanaijie@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-01-08 21:59:28 -05:00
..
Kconfig scsi: scsi_transport_sas: switch to bsg-lib for SMP passthrough 2017-08-29 21:51:45 -04:00
Makefile Merge branch 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6 2011-03-20 18:14:55 -07:00
sas_ata.c scsi: libsas: Annotate fall-through in a switch statement 2017-08-25 17:08:08 -04:00
sas_discover.c libsas: Fix Kernel Crash in smp_execute_task 2015-03-06 20:51:29 -08:00
sas_dump.c scsi: libsas: kill useless ha_event and do some cleanup 2017-09-15 21:32:58 -04:00
sas_dump.h scsi: libsas: kill useless ha_event and do some cleanup 2017-09-15 21:32:58 -04:00
sas_event.c scsi: libsas: Use dynamic alloced work to avoid sas event lost 2018-01-08 21:59:28 -05:00
sas_expander.c scsi: libsas: initialize sas_phy status according to response of DISCOVER 2018-01-08 21:43:05 -05:00
sas_host_smp.c scsi: scsi_transport_sas: switch to bsg-lib for SMP passthrough 2017-08-29 21:51:45 -04:00
sas_init.c scsi: libsas: Use dynamic alloced work to avoid sas event lost 2018-01-08 21:59:28 -05:00
sas_internal.h scsi: libsas: Use dynamic alloced work to avoid sas event lost 2018-01-08 21:59:28 -05:00
sas_phy.c scsi: libsas: Use dynamic alloced work to avoid sas event lost 2018-01-08 21:59:28 -05:00
sas_port.c scsi: libsas: Use dynamic alloced work to avoid sas event lost 2018-01-08 21:59:28 -05:00
sas_scsi_host.c scsi: libsas: remove private hex2bin() implementation 2018-01-03 22:40:52 -05:00
sas_task.c scsi: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:31:23 -04:00