All of lore.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.