Linux SCSI subsystem development
 help / color / mirror / Atom feed
* [PATCH 00/13] scsi: Support LUN/target based error handle
@ 2023-07-23 23:44 Wenchao Hao
  2023-07-23 23:44 ` [PATCH 01/13] scsi: Define basic framework for driver " Wenchao Hao
                   ` (16 more replies)
  0 siblings, 17 replies; 20+ messages in thread
From: Wenchao Hao @ 2023-07-23 23:44 UTC (permalink / raw)
  To: James E . J . Bottomley, Martin K . Petersen, Hannes Reinecke,
	linux-scsi, linux-kernel
  Cc: Dan Carpenter, louhongxiang, Wenchao Hao

The origin error handle would set host to recovery state and perform
error recovery operations, and makes all LUNs which share a same host
can not handle IOs. This phenomenon is unbearable for systems which
deploy many LUNs in one HBA.

This patchset introduce support for LUN/target based error handle,
drivers can chose if to implement it. They can implement LUN, target or
both of LUN and target based error handle by their own error handle
strategy. The first patch defined this framework, it abstract three
key operations which are: add error command, wake up error handle, block
ios when error command is added and recoverying. Drivers should
implement these three function callbacks and setup to SCSI middle level.

Besides the basic framework, this patchset also add a basic LUN/target
based error handle strategy.

For LUN based eh, it would try check sense, start unit and reset LUN,
if all above steps can not recovery all error commands, fallback to
further recovery like tartget based (if implemented) or host based error
handle.

It's same for tartget based eh, it would try check sense, start unit,
reset LUN and reset target. If all above steps can not recovery all error
commands, fallback to further recovery which is host based error handle.

This patchset is tested by scsi_debug which support single LUN error
injection, the scsi_debug patches is here:

https://lore.kernel.org/linux-scsi/20230723234105.1628982-1-haowenchao2@huawei.com/T/#t

Wenchao Hao (13):
  scsi: Define basic framework for driver LUN/target based error handle
  scsi:scsi_error: Move complete variable eh_action from shost to sdevice
  scsi:scsi_error: Check if to do reset in scsi_try_xxx_reset
  scsi:scsi_error: Add helper scsi_eh_sdev_stu to do START_UNIT
  scsi:scsi_error: Add helper scsi_eh_sdev_reset to do lun reset
  scsi:scsi_error: Add flags to mark error handle steps has done
  scsi:scsi_error: Define helper to perform LUN based error handle
  scsi:scsi_error: Add LUN based error handler based previous helper
  scsi:core: increase/decrease target_busy without check can_queue
  scsi:scsi_error: Define helper to perform target based error handle
  scsi:scsi_error: Add target based error handler based previous helper
  scsi:scsi_debug: Add param to control if setup LUN based error handle
  scsi:scsi_debug: Add param to control if setup target based error handle

 drivers/scsi/scsi_debug.c  |  19 +
 drivers/scsi/scsi_error.c  | 705 ++++++++++++++++++++++++++++++++++---
 drivers/scsi/scsi_lib.c    |  23 +-
 drivers/scsi/scsi_priv.h   |  20 ++
 include/scsi/scsi_device.h |  97 +++++
 include/scsi/scsi_eh.h     |   4 +
 include/scsi/scsi_host.h   |   2 -
 7 files changed, 813 insertions(+), 57 deletions(-)

-- 
2.35.3


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

end of thread, other threads:[~2023-08-30 18:38 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-23 23:44 [PATCH 00/13] scsi: Support LUN/target based error handle Wenchao Hao
2023-07-23 23:44 ` [PATCH 01/13] scsi: Define basic framework for driver " Wenchao Hao
2023-07-23 23:44 ` [PATCH 02/13] scsi:scsi_error: Move complete variable eh_action from shost to sdevice Wenchao Hao
2023-07-23 23:44 ` [PATCH 03/13] scsi:scsi_error: Check if to do reset in scsi_try_xxx_reset Wenchao Hao
2023-07-23 23:44 ` [PATCH 04/13] scsi:scsi_error: Add helper scsi_eh_sdev_stu to do START_UNIT Wenchao Hao
2023-07-23 23:44 ` [PATCH 05/13] scsi:scsi_error: Add helper scsi_eh_sdev_reset to do lun reset Wenchao Hao
2023-07-23 23:44 ` [PATCH 06/13] scsi:scsi_error: Add flags to mark error handle steps has done Wenchao Hao
2023-07-23 23:44 ` [PATCH 07/13] scsi:scsi_error: Define helper to perform LUN based error handle Wenchao Hao
2023-07-23 23:44 ` [PATCH 08/13] scsi:scsi_error: Add LUN based error handler based previous helper Wenchao Hao
2023-07-23 23:44 ` [PATCH 09/13] scsi:core: increase/decrease target_busy without check can_queue Wenchao Hao
2023-07-23 23:44 ` [PATCH 10/13] scsi:scsi_error: Define helper to perform target based error handle Wenchao Hao
2023-07-23 23:44 ` [PATCH 11/13] scsi:scsi_error: Add target based error handler based previous helper Wenchao Hao
2023-07-23 23:44 ` [PATCH 12/13] scsi:scsi_debug: Add param to control if setup LUN based error handle Wenchao Hao
2023-07-23 23:44 ` [PATCH 13/13] scsi:scsi_debug: Add param to control if setup target " Wenchao Hao
2023-08-15 14:08 ` [PATCH 00/13] scsi: Support LUN/target " haowenchao (C)
2023-08-15 14:17 ` haowenchao (C)
2023-08-15 15:48   ` Bart Van Assche
2023-08-16  2:14     ` haowenchao (C)
2023-08-21 13:31 ` haowenchao (C)
2023-08-30  9:45 ` haowenchao (C)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox