public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/14] scsi: scsi_decide_dispostion update
@ 2008-09-02 16:05 Mike Anderson
  2008-09-02 16:05 ` [PATCH 01/14] block: separate failfast into multiple bits Mike Anderson
                   ` (14 more replies)
  0 siblings, 15 replies; 23+ messages in thread
From: Mike Anderson @ 2008-09-02 16:05 UTC (permalink / raw)
  To: linux-scsi

This patch series is an update to a previous set of patches posted by Mike
Christie in the thread referenced below.
http://thread.gmane.org/gmane.linux.scsi/44058/focus=4405

This patch series creates new return codes for scsi_decide_disposition and
scsi_check_sense so that retry restrictions and disposition can be implied
directly from the return code. Retry restrictions have also been moved
into the requeue function.

Mike C and I have tested a few of the return code types, but it would be
good to have other return types check with different hardware.

Change in behavior.
	- dm-mp fast fail on transport errors.
	- device busy and host busy limited by wait_for check.
	- A few more error cases will return DRIVER_TIMEOUT. Possibly should
	  add more DRIVER_ error codes.

A summary of the current disposition is shown below.

1.) Current disposition policy.
2.6.27 policy + DID_TRANSPORT patches

==============================================================================
scsi_queue_insert
==============================================================================
	SCSI_MLQUEUE_EH_RETRY		retry
	SCSI_MLQUEUE_DEVICE_BUSY 	retry, set device_blocked
	SCSI_MLQUEUE_HOST_BUSY		retry, set host_blocked

==============================================================================
scsi_softirq_done
==============================================================================
	disposition SUCCESS:
		scsi_finish_command
	disposition NEEDS_RETRY:
		scsi_queue_insert SCSI_MLQUEUE_EH_RETRY
	disposition ADD_TO_MLQUEUE:
		scsi_queue_insert SCSI_MLQUEUE_DEVICE_BUSY
	default:
		scsi_eh_scmd_add
	

==============================================================================
host_byte		
==============================================================================

DID_OK			goto status_byte
DID_NO_CONNECT		SUCCESS
DID_BUS_BUSY		allowed && !blk_noretry
DID_TIME_OUT		SUCCESS (TUR/INQ) / FAILED
DID_BAD_TARGET		SUCCESS
DID_ABORT		SUCCESS
DID_PARITY		allowed && !blk_noretry
DID_ERROR		allowed && !blk_noretry (status for RES)
DID_RESET		SUCCESS
DID_BAD_INTR		default
DID_PASSTHROUGH		SUCCESS
DID_SOFT_ERROR		allowed && !blk_noretry
DID_IMM_RETRY		NEEDS_RETRY
DID_REQUEUE		ADD_TO_MLQUEUE
DID_TRANSPORT_DISRUPTED ADD_TO_MLQUEUE
DID_TRANSPORT_FAILFAST	SUCCESS
default			FAILED


==============================================================================
status_byte
==============================================================================

QUEUE_FULL		ADD_TO_MLQUEUE
BUSY			ADD_TO_MLQUEUE
GOOD			SUCCESS
COMMAND_TERMINATED	SUCCESS
TASK_ABORTED		SUCCESS
CHECK_CONDITION		SEE SENSE
CONDITION_GOOD		SUCCESS
INTERMEDIATE_GOOD	SUCCESS
INTERMEDIATE_C_GOOD	SUCCESS
ACA_ACTIVE		SUCCESS
RESERVATION_CONFLICT	SUCCESS
default			FAILED

==============================================================================
sense
==============================================================================

!normalize_sense	FAILED
scsi_sense_is_deferred	NEEDS_RETRY (allowed && !blk_noretry)

scsi_dh->check_sense	handler return

FILEMARK, EOM or ILI	SUCCESS

NO_SENSE		SUCCESS
RECOVERED_ERROR		SUCCESS
ABORTED_COMMAND		SUCCESS (DIF) / NEEDS_RETRY
NOT_READY		NEEDS_RETRY (ua, bc rdy) / FAILED (restart) / SUCCESS
UNIT_ATTENTION		NEEDS_RETRY (ua, bc rdy) / FAILED (restart) / SUCCESS
COPY_ABORTED		SUCCESS
VOLUME_OVERFLOW		SUCCESS
MISCOMPARE		SUCCESS
MEDIUM_ERROR		SUCCESS (0x11, 0x13, 0x14) / NEEDS_RETRY
HARDWARE_ERROR		ADD_TO_MLQUEUE (retry_hwerror) / SUCCESS
ILLEGAL_REQUEST		SUCCESS
BLANK_CHECK		SUCCESS
DATA_PROTECT		SUCCESS
default			SUCCESS



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

end of thread, other threads:[~2008-09-04 21:21 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-02 16:05 [PATCH 0/14] scsi: scsi_decide_dispostion update Mike Anderson
2008-09-02 16:05 ` [PATCH 01/14] block: separate failfast into multiple bits Mike Anderson
2008-09-02 16:35   ` Grant Grundler
2008-09-02 16:59     ` Mike Christie
2008-09-02 17:31       ` Mike Anderson
2008-09-03  8:27         ` Boaz Harrosh
2008-09-02 16:05 ` [PATCH 02/14] scsi: add transport host byte errors (v3) Mike Anderson
2008-09-02 16:05 ` [PATCH 03/14] scsi: Move wait_for check Mike Anderson
2008-09-02 16:05 ` [PATCH 04/14] scsi: Move retries check Mike Anderson
2008-09-04 18:27   ` James Bottomley
2008-09-04 19:52     ` Mike Anderson
2008-09-04 21:21       ` James Bottomley
2008-09-02 16:05 ` [PATCH 05/14] scsi: Move blk_noretry_request Mike Anderson
2008-09-02 16:05 ` [PATCH 06/14] scsi: remove maybe_retry Mike Anderson
2008-09-02 16:05 ` [PATCH 07/14] scsi: change return codes in scsi_decide_disposition Mike Anderson
2008-09-02 16:05 ` [PATCH 08/14] scsi: rename scsi_queue_insert to scsi_attempt_requeue_command Mike Anderson
2008-09-02 16:05 ` [PATCH 09/14] scsi: have device handlers return SCSI_MLQUEUE error value Mike Anderson
2008-09-02 16:05 ` [PATCH 10/14] scsi: convert other scsi_check_sense users to new error codes Mike Anderson
2008-09-02 16:05 ` [PATCH 11/14] scsi: fix up SCSI_MLQUEUE defintions and add driver, device and transport ones Mike Anderson
2008-09-02 16:05 ` [PATCH 12/14] scsi: move device online check to scsi_attempt_requeue_command Mike Anderson
2008-09-02 16:05 ` [PATCH 13/14] scsi: remove scsi_device_online from scsi_decide_disposition Mike Anderson
2008-09-02 16:05 ` [PATCH 14/14] scsi: update scsi_log_completion disposition decoding Mike Anderson
2008-09-02 17:03 ` [PATCH 0/14] scsi: scsi_decide_dispostion update Mike Christie

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