Messages in this thread | | | Subject | Re: [PATCH v5 1/7] scsi: libsas: Use dynamic alloced work to avoid sas event lost | From | Hannes Reinecke <> | Date | Fri, 15 Dec 2017 13:14:08 +0100 |
| |
On 12/08/2017 10:42 AM, Jason Yan wrote: > 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> > Signed-off-by: Jason Yan <yanaijie@huawei.com> > --- > drivers/scsi/libsas/sas_event.c | 74 +++++++++++++++++++++++++++++--------- > drivers/scsi/libsas/sas_init.c | 27 ++++++++++++-- > drivers/scsi/libsas/sas_internal.h | 6 ++++ > drivers/scsi/libsas/sas_phy.c | 44 +++++------------------ > drivers/scsi/libsas/sas_port.c | 18 +++++----- > include/scsi/libsas.h | 17 +++++---- > 6 files changed, 115 insertions(+), 71 deletions(-) > Reviewed-by: Hannes Reinecke <hare@suse.com>
Cheers,
Hannes -- Dr. Hannes Reinecke Teamlead Storage & Networking hare@suse.de +49 911 74053 688 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton HRB 21284 (AG Nürnberg)
| |