Skip to contentSkip to conversation

lpfc 8.2.8 : Update driver to use new Host byte error code DID_TRANSPORT_DISRUPTED

PATCH In review James Smart 3 participants 3 messages Aug 25, 2008 – Sep 5, 2008

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 11/15 lpfc 8.2.8 : Update driver to use new Host byte error code DID_TRANSPORT_DISRUPTED

Update driver to use new Host byte error code DID_TRANSPORT_DISRUPTED.

This patch depends pending upstream patches described in:
http://marc.info/?l=linux-scsi&m=121263014808604&w=2

Particularly:
http://marc.info/?l=linux-scsi&m=121263014908607&w=2
which defines DID_TRANSPORT_DISRUPTED.

This patch supercedes the lpfc patch in that series:
http://marc.info/?l=linux-scsi&m=121263015008616&w=2

---

 lpfc_scsi.c |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
drivers/scsi/lpfc/lpfc_scsi.c +4 -3
diff -upNr a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
@@ -653,7 +653,7 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba 
 			break;
 		case IOSTAT_NPORT_BSY:
 		case IOSTAT_FABRIC_BSY:
-			cmd->result = ScsiResult(DID_BUS_BUSY, 0);
+			cmd->result = ScsiResult(DID_TRANSPORT_DISRUPTED, 0);
 			break;
 		case IOSTAT_LOCAL_REJECT:
 			if (lpfc_cmd->result == IOERR_INVALID_RPI ||
@@ -669,7 +669,8 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba 
 
 		if (!pnode || !NLP_CHK_NODE_ACT(pnode)
 		    || (pnode->nlp_state != NLP_STE_MAPPED_NODE))
-			cmd->result = ScsiResult(DID_BUS_BUSY, SAM_STAT_BUSY);
+			cmd->result = ScsiResult(DID_TRANSPORT_DISRUPTED,
+			SAM_STAT_BUSY);
 	} else {
 		cmd->result = ScsiResult(DID_OK, 0);
 	}
@@ -1071,7 +1072,7 @@ lpfc_queuecommand(struct scsi_cmnd *cmnd
 	 * transport is still transitioning.
 	 */
 	if (!ndlp || !NLP_CHK_NODE_ACT(ndlp)) {
-		cmnd->result = ScsiResult(DID_BUS_BUSY, 0);
+		cmnd->result = ScsiResult(DID_TRANSPORT_DISRUPTED, 0);
 		goto out_fail_command;
 	}
 	lpfc_cmd = lpfc_get_scsi_buf(phba);
maintainer
#1 lore raw
Quoted 11 lines · James Smart

Update driver to use new Host byte error code DID_TRANSPORT_DISRUPTED.

This patch depends pending upstream patches described in:
http://marc.info/?l=linux-scsi&m=121263014808604&w=2

Particularly:
http://marc.info/?l=linux-scsi&m=121263014908607&w=2
which defines DID_TRANSPORT_DISRUPTED.

This patch supercedes the lpfc patch in that series:
http://marc.info/?l=linux-scsi&m=121263015008616&w=2

I've got this one, but only partially. The third hunk doesn't apply:

--- 1072,1078 ----
* transport is still transitioning.
*/
if (!ndlp || !NLP_CHK_NODE_ACT(ndlp)) {
+ cmnd->result = ScsiResult(DID_TRANSPORT_DISRUPTED, 0);
goto out_fail_command;
}

It became a goto out_target_busy, which returns SCSI_MLQUEUE_TARGET_BUSY via a patch which you acked.

James

#2 lore raw
Quoted 6 lines · James Bottomley
Quoted 5 lines · James Smart

Update driver to use new Host byte error code DID_TRANSPORT_DISRUPTED.

This patch depends pending upstream patches described in:
http://marc.info/?l=linux-scsi&m=121263014808604&w=2

Quoted 9 lines
Quoted 6 lines

Particularly:
http://marc.info/?l=linux-scsi&m=121263014908607&w=2
which defines DID_TRANSPORT_DISRUPTED.

This patch supercedes the lpfc patch in that series:
http://marc.info/?l=linux-scsi&m=121263015008616&w=2

I've got this one, but only partially. The third hunk doesn't apply:

It is ok and better to drop this part below for target busy. If we return target busy in the queuecommand then the we will block it right away. If we return DID_TRANSPORT_DISRUPTED then it will not get blocked until the soft irq processes the command, which is a waste.

Quoted 11 lines

--- 1072,1078 ----
* transport is still transitioning.
*/
if (!ndlp || !NLP_CHK_NODE_ACT(ndlp)) {

drivers/scsi/lpfc/lpfc_scsi.c +1 -0
+ 		cmnd->result = ScsiResult(DID_TRANSPORT_DISRUPTED, 0);
  		goto out_fail_command;
  	}

It became a goto out_target_busy, which returns SCSI_MLQUEUE_TARGET_BUSY via a patch which you acked.

Sorry about that. We were not sure which parts of which patchset you were going to take so some wires got crossed.