linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 00/11] Enhance libsas hotplug feature
@ 2017-09-06  9:15 Jason Yan
  2017-09-06  9:15 ` [PATCH v4 01/11] libsas: kill useless ha_event and do some cleanup Jason Yan
                   ` (13 more replies)
  0 siblings, 14 replies; 28+ messages in thread
From: Jason Yan @ 2017-09-06  9:15 UTC (permalink / raw)
  To: martin.petersen, jejb
  Cc: linux-scsi, linux-kernel, john.garry, chenweilong, zhaohongjiang,
	hare, dan.j.williams, jthumshirn, Raj.Dinesh, hch, huangdaode,
	chenxiang66, yanaijie

Hello all, Yijing Wang handed over this topic to me. We are working
on it the last two months. We have tested the patchset for a long
time. Here is the new version.

Now the libsas hotplug has some issues, Dan Williams report
a similar bug here before
https://www.mail-archive.com/linux-scsi@vger.kernel.org/msg39187.html

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 divided 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.

v3->v4: -get rid of unused ha event and do some cleanup
        -use dynamic alloced work and support shutting down the phy if active event reached the threshold
		-use flush_workqueue instead of wait-completion to process discover events synchronously
		-direct call probe and destruct function
		-other small code improvements 
v2->v3: some code improvements suggested by Johannes and John,
	    split v2 patch 2 into several small patches.
v1->v2: some code improvements suggested by John Garry

Jason Yan (10):
  libsas: kill useless ha_event and do some cleanup
  libsas: remove the numbering for each event enum
  libsas: remove unused port_gone_completion and DISCE_PORT_GONE
  libsas: rename notify_port_event() for consistency
  libsas: Use dynamic alloced work to avoid sas event lost
  libsas: shut down the PHY if events reached the threshold
  libsas: make the event threshold configurable
  libsas: Use new workqueue to run sas event and disco event
  libsas: libsas: use flush_workqueue to process disco events
    synchronously
  libsas: direct call probe and destruct

chenxiang (1):
  libsas: add event to defer list tail instead of head when draining

 drivers/scsi/aic94xx/aic94xx_hwi.c    |   3 -
 drivers/scsi/hisi_sas/hisi_sas_main.c |   7 ++-
 drivers/scsi/libsas/sas_ata.c         |   1 -
 drivers/scsi/libsas/sas_discover.c    |  36 +++++++-----
 drivers/scsi/libsas/sas_dump.c        |  10 ----
 drivers/scsi/libsas/sas_dump.h        |   1 -
 drivers/scsi/libsas/sas_event.c       |  97 +++++++++++++++++++-------------
 drivers/scsi/libsas/sas_expander.c    |   2 +-
 drivers/scsi/libsas/sas_init.c        | 101 +++++++++++++++++++++++++++++-----
 drivers/scsi/libsas/sas_internal.h    |   7 +++
 drivers/scsi/libsas/sas_phy.c         |  73 ++++++++++++------------
 drivers/scsi/libsas/sas_port.c        |  25 +++++----
 include/scsi/libsas.h                 |  81 ++++++++++++---------------
 include/scsi/scsi_transport_sas.h     |   1 +
 14 files changed, 270 insertions(+), 175 deletions(-)

-- 
2.5.0

^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2017-09-18 12:54 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-06  9:15 [PATCH v4 00/11] Enhance libsas hotplug feature Jason Yan
2017-09-06  9:15 ` [PATCH v4 01/11] libsas: kill useless ha_event and do some cleanup Jason Yan
2017-09-06 12:38   ` Johannes Thumshirn
2017-09-06 13:20   ` Christoph Hellwig
2017-09-06  9:15 ` [PATCH v4 02/11] libsas: remove the numbering for each event enum Jason Yan
2017-09-06 12:41   ` Johannes Thumshirn
2017-09-06 13:20   ` Christoph Hellwig
2017-09-06  9:15 ` [PATCH v4 03/11] libsas: remove unused port_gone_completion and DISCE_PORT_GONE Jason Yan
2017-09-06 12:43   ` Johannes Thumshirn
2017-09-06 13:21   ` Christoph Hellwig
2017-09-06  9:15 ` [PATCH v4 04/11] libsas: rename notify_port_event() for consistency Jason Yan
2017-09-06 12:44   ` Johannes Thumshirn
2017-09-06 13:21   ` Christoph Hellwig
2017-09-06  9:15 ` [PATCH v4 05/11] libsas: Use dynamic alloced work to avoid sas event lost Jason Yan
2017-09-07  8:22   ` Jack Wang
2017-09-06  9:15 ` [PATCH v4 06/11] libsas: shut down the PHY if events reached the threshold Jason Yan
2017-09-06  9:15 ` [PATCH v4 07/11] libsas: make the event threshold configurable Jason Yan
2017-09-07  8:15   ` Jack Wang
2017-09-06  9:15 ` [PATCH v4 08/11] libsas: Use new workqueue to run sas event and disco event Jason Yan
2017-09-06  9:15 ` [PATCH v4 09/11] libsas: libsas: use flush_workqueue to process disco events synchronously Jason Yan
2017-09-06  9:15 ` [PATCH v4 10/11] libsas: direct call probe and destruct Jason Yan
2017-09-06  9:15 ` [PATCH v4 11/11] libsas: add event to defer list tail instead of head when draining Jason Yan
2017-09-06 13:21   ` Christoph Hellwig
2017-09-06 13:07 ` [PATCH v4 00/11] Enhance libsas hotplug feature John Garry
2017-09-06 13:22   ` Christoph Hellwig
2017-09-07  1:15     ` Jason Yan
2017-09-16  1:43 ` Martin K. Petersen
2017-09-18 12:54 ` John Garry

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).