Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c7dbb627 authored by Mike Anderson's avatar Mike Anderson Committed by James Bottomley
Browse files

[SCSI] scsi_dh: make check_sense return ADD_TO_MLQUEUE



Change scsi_dh check_sense functions to return ADD_TO_MLQUEUE
to allow retries to occur without restriction of blk_noretry_request
check.

Signed-off-by: default avatarMike Anderson <andmike@linux.vnet.ibm.com>
Acked-by: default avatarChandra Seetharaman <sekharan@us.ibm.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
parent 025270f0
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -425,7 +425,7 @@ static int alua_check_sense(struct scsi_device *sdev,
			/*
			 * LUN Not Accessible - ALUA state transition
			 */
			return NEEDS_RETRY;
			return ADD_TO_MLQUEUE;
		if (sense_hdr->asc == 0x04 && sense_hdr->ascq == 0x0b)
			/*
			 * LUN Not Accessible -- Target port in standby state
@@ -447,18 +447,18 @@ static int alua_check_sense(struct scsi_device *sdev,
			/*
			 * Power On, Reset, or Bus Device Reset, just retry.
			 */
			return NEEDS_RETRY;
			return ADD_TO_MLQUEUE;
		if (sense_hdr->asc == 0x2a && sense_hdr->ascq == 0x06) {
			/*
			 * ALUA state changed
			 */
			return NEEDS_RETRY;
			return ADD_TO_MLQUEUE;
		}
		if (sense_hdr->asc == 0x2a && sense_hdr->ascq == 0x07) {
			/*
			 * Implicit ALUA state transition failed
			 */
			return NEEDS_RETRY;
			return ADD_TO_MLQUEUE;
		}
		break;
	}
@@ -490,7 +490,7 @@ static int alua_stpg(struct scsi_device *sdev, int state,
		if (!err)
			return SCSI_DH_IO;
		err = alua_check_sense(sdev, &sense_hdr);
		if (retry > 0 && err == NEEDS_RETRY) {
		if (retry > 0 && err == ADD_TO_MLQUEUE) {
			retry--;
			goto retry;
		}
@@ -535,7 +535,7 @@ static int alua_rtpg(struct scsi_device *sdev, struct alua_dh_data *h)
			return SCSI_DH_IO;

		err = alua_check_sense(sdev, &sense_hdr);
		if (err == NEEDS_RETRY)
		if (err == ADD_TO_MLQUEUE)
			goto retry;
		sdev_printk(KERN_INFO, sdev,
			    "%s: rtpg sense code %02x/%02x/%02x\n",
+2 −2
Original line number Diff line number Diff line
@@ -439,7 +439,7 @@ static int clariion_check_sense(struct scsi_device *sdev,
			 * Unit Attention Code. This is the first IO
			 * to the new path, so just retry.
			 */
			return NEEDS_RETRY;
			return ADD_TO_MLQUEUE;
		break;
	}

@@ -514,7 +514,7 @@ static int clariion_send_inquiry(struct scsi_device *sdev,
			return SCSI_DH_IO;

		err = clariion_check_sense(sdev, &sshdr);
		if (retry > 0 && err == NEEDS_RETRY) {
		if (retry > 0 && err == ADD_TO_MLQUEUE) {
			retry--;
			goto retry;
		}
+2 −2
Original line number Diff line number Diff line
@@ -551,7 +551,7 @@ static int rdac_check_sense(struct scsi_device *sdev,
			 *
			 * Just retry and wait.
			 */
			return NEEDS_RETRY;
			return ADD_TO_MLQUEUE;
		break;
	case ILLEGAL_REQUEST:
		if (sense_hdr->asc == 0x94 && sense_hdr->ascq == 0x01) {
@@ -568,7 +568,7 @@ static int rdac_check_sense(struct scsi_device *sdev,
			/*
			 * Power On, Reset, or Bus Device Reset, just retry.
			 */
			return NEEDS_RETRY;
			return ADD_TO_MLQUEUE;
		break;
	}
	/* success just means we do not care what scsi-ml does */