Re: [PATCH v3 0/7] Enhance libsas hotplug feature

From: wangyijing
Date: Fri Jul 14 2017 - 04:20:40 EST

Hi, I'm sorry to say that I have to stop the libsas hotplug improvement work, I will resign from
Huawei, so I have no time and hardware to continue to work at this issue. John is very familiar with
this work, and provide a lot of good suggestions. So if John like, I am glad he could join to work
at this issues, And my colleague Jason Yan could also provide helps.


å 2017/7/10 15:06, Yijing Wang åé:
> This patchset is based Johannes's patch
> "scsi: sas: scsi_queue_work can fail, so make callers aware"
> Now the libsas hotplug has some issues, Dan Williams report
> a similar bug here before
> The issues we have found
> 1. if LLDD burst reports lots of phy-up/phy-down sas events, some events
> may lost because a same sas events is pending now, finally libsas topo
> may different the hardware.
> 2. receive a phy down sas event, libsas call sas_deform_port to remove
> devices, it would first delete the sas port, then put a destruction
> discovery event in a new work, and queue it at the tail of workqueue,
> once the sas port be deleted, its children device will be deleted too,
> when the destruction work start, it will found the target device has
> been removed, and report a sysfs warnning.
> 3. since a hotplug process will be devided into several works, if a phy up
> sas event insert into phydown works, like
> destruction work ---> PORTE_BYTES_DMAED (sas_form_port) ---->PHYE_LOSS_OF_SIGNAL
> the hot remove flow would broken by PORTE_BYTES_DMAED event, it's not
> we expected, and issues would occur.
> The first patch fix the sas events lost, and the second one introudce wait-complete
> to fix the hotplug order issues.
> v2->v3: some code improvements suggested by Johannes and John,
> split v2 patch 2 into several small pathes.
> v1->v2: some code improvements suggested by John Garry
> Yijing Wang (7):
> libsas: Use static sas event pool to appease sas event lost
> libsas: remove unused port_gone_completion
> libsas: Use new workqueue to run sas event
> libsas: add sas event wait-complete support
> libsas: add a new workqueue to run probe/destruct discovery event
> libsas: add wait-complete support to sync discovery event
> libsas: release disco mutex during waiting in sas_ex_discover_end_dev
> drivers/scsi/libsas/sas_discover.c | 58 +++++++---
> drivers/scsi/libsas/sas_event.c | 212 ++++++++++++++++++++++++++++++++-----
> drivers/scsi/libsas/sas_expander.c | 22 +++-
> drivers/scsi/libsas/sas_init.c | 21 ++--
> drivers/scsi/libsas/sas_internal.h | 64 +++++++++++
> drivers/scsi/libsas/sas_phy.c | 48 +++------
> drivers/scsi/libsas/sas_port.c | 22 ++--
> include/scsi/libsas.h | 27 +++--
> 8 files changed, 373 insertions(+), 101 deletions(-)