Skip to contentSkip to conversation

ipr scsi busy io hang

PATCH New Brian King 1 participant 1 message May 24, 2004

Subsystems (2)
lore
Share & tools
lore

Brian King

author maintainer
#0 lore raw

PATCH 1/3 ipr scsi busy io hang

James,

Here are a couple more ipr bug fixes. Please apply.

Thanks

Signature · 3 lines
Brian King
eServer Storage I/O
IBM Linux Technology Center

This patch fixes a hang in io that can occur when a device returns scsi status other than a check condition.

---

 linux-2.6.6-bjking1/drivers/scsi/ipr.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletion(-)
drivers/scsi/ipr.c renamed from drivers/scsi/ipr.c~ipr_scsi_busy_io_hang +5 -1
diff -puN drivers/scsi/ipr.c~ipr_scsi_busy_io_hang drivers/scsi/ipr.c
@@ -2884,6 +2884,7 @@ static int ipr_slave_alloc(struct scsi_d
 		    (res->cfgte.res_addr.lun == sdev->lun)) {
 			res->sdev = sdev;
 			res->add_to_ml = 0;
+			res->in_erp = 0;
 			sdev->hostdata = res;
 			res->needs_sync_complete = 1;
 			break;
@@ -3435,8 +3436,10 @@ static void ipr_erp_done(struct ipr_cmnd
 		       SCSI_SENSE_BUFFERSIZE);
 	}
 
-	if (res)
+	if (res) {
 		res->needs_sync_complete = 1;
+		res->in_erp = 0;
+	}
 	ipr_unmap_sglist(ioa_cfg, ipr_cmd);
 	list_add_tail(&ipr_cmd->queue, &ioa_cfg->free_q);
 	scsi_cmd->scsi_done(scsi_cmd);
@@ -3756,6 +3759,7 @@ static void ipr_erp_start(struct ipr_ioa
 			ipr_erp_cancel_all(ipr_cmd);
 			return;
 		}
+		res->needs_sync_complete = 1;
 		break;
 	case IPR_IOASC_NR_INIT_CMD_REQUIRED:
 		break;

_