Re: [PATCH v2 0/5] Re-order scsi_remove_host and sas_remove_host in SAS HBA LLDDs

From: John Garry
Date: Fri Apr 21 2017 - 04:36:27 EST


Thanks Johannes.

@wangyijing, can you test this patchset please (specifically 3/5)? I know that you have the modified version of libsas which you dabbled with upstreaming.

On 21/04/2017 09:04, Johannes Thumshirn wrote:
This series re-orders the calls to scsi_remove_host() and sas_remove_host() in
all SAS HBA drivers (apart from mpt3sas which is doing it correctly). This is
for two reasons:
1) After the change to recursive removal of sysfs entries, we're
trying to remove already removed kobjects when doing a
sas_remove_host() _after_ a scsi_remove_host()
2) the documentation mandates it even (becuase of 1)

Unfortunately this does not completely solve issues with recursive sysfs
removals in SAS, as libsas has asynchronous behaviour where strong ordering
would be needed. But I am working on it and I do know other do as well. So if
anyone else (James, Christoph, Bart, I'm looking at you) has an idea, I do
have test setups and I'm willing to take input in form of ideas and patches.


wangyijing already sent an RFC for fixing this issue (mentioned above), which was a signifiagnt rewrite of some of libsas.
I am hoping that he would retry, and that community would support/shepherd this activity, or at least say it will be accepted so effort is not wasted.

I also dropped the SDEV_CANCEL state change for now. We re-evaluate it once we
have an idea how to tackle the ordering issues and place it into
sas_unregister_ha() as per James' comment.

Thanks,
Johannes

Thanks


Johannes Thumshirn (5):
scsi: isci: remove the SAS host after the SCSI host
aic94xx: remove the SAS host after the SCSI host
scsi: hisi_sas: remove the SAS host after the SCSI host
mvsas: remove the SAS host after the SCSI host
scsi: pm8001: remove the SAS host after the SCSI host

drivers/scsi/aic94xx/aic94xx_init.c | 7 ++++---
drivers/scsi/hisi_sas/hisi_sas_main.c | 4 ++--
drivers/scsi/isci/init.c | 3 ++-
drivers/scsi/mvsas/mv_init.c | 6 ++++--
drivers/scsi/pm8001/pm8001_init.c | 8 ++++++--
5 files changed, 18 insertions(+), 10 deletions(-)