Commit bf341919 authored by 's avatar Committed by James Bottomley
Browse files

scsi: add DID_REQUEUE to the error handling



We have a DID_IMM_RETRY to require a retry at once, but we could do with
a DID_REQUEUE to instruct the mid-layer to treat this command in the
same manner as QUEUE_FULL or BUSY (i.e. halt the submission until
another command returns ... or the queue pressure builds if there are no
outstanding commands).

Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 6f71d9bc
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1306,6 +1306,9 @@ int scsi_decide_disposition(struct scsi_cmnd *scmd)
	case DID_IMM_RETRY:
		return NEEDS_RETRY;

	case DID_REQUEUE:
		return ADD_TO_MLQUEUE;

	case DID_ERROR:
		if (msg_byte(scmd->result) == COMMAND_COMPLETE &&
		    status_byte(scmd->result) == RESERVATION_CONFLICT)
+2 −0
Original line number Diff line number Diff line
@@ -295,6 +295,8 @@ struct scsi_lun {
#define DID_PASSTHROUGH 0x0a	/* Force command past mid-layer            */
#define DID_SOFT_ERROR  0x0b	/* The low level driver just wish a retry  */
#define DID_IMM_RETRY   0x0c	/* Retry without decrementing retry count  */
#define DID_REQUEUE	0x0d	/* Requeue command (no immediate retry) also
				 * without decrementing the retry count	   */
#define DRIVER_OK       0x00	/* Driver status                           */

/*