All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/3] ipr duplicate ioa reset fix
@ 2004-05-24 14:39 Brian King
  0 siblings, 0 replies; only message in thread
From: Brian King @ 2004-05-24 14:39 UTC (permalink / raw)
  To: James.Bottomley; +Cc: linux-scsi

[-- Attachment #1: Type: text/plain, Size: 64 bytes --]


-- 
Brian King
eServer Storage I/O
IBM Linux Technology Center

[-- Attachment #2: ipr_duplicate_ioa_reset_fix.patch --]
[-- Type: text/plain, Size: 1058 bytes --]


This patch closes a window where if a device had a cancel all
outstanding as a result of a check condition and the adapter
was reset for some reason, a request sense would still be issued,
which would end up timing out and issuing an additional adapter
reset. It could also result in a leak of command blocks, depending
on when it timed out.


---

 linux-2.6.6-bjking1/drivers/scsi/ipr.c |    6 ++++++
 1 files changed, 6 insertions(+)

diff -puN drivers/scsi/ipr.c~ipr_duplicate_ioa_reset_fix drivers/scsi/ipr.c
--- linux-2.6.6/drivers/scsi/ipr.c~ipr_duplicate_ioa_reset_fix	2004-05-23 21:43:35.000000000 -0500
+++ linux-2.6.6-bjking1/drivers/scsi/ipr.c	2004-05-23 21:43:47.000000000 -0500
@@ -3482,6 +3482,12 @@ static void ipr_reinit_ipr_cmnd_for_erp(
 static void ipr_erp_request_sense(struct ipr_cmnd *ipr_cmd)
 {
 	struct ipr_cmd_pkt *cmd_pkt = &ipr_cmd->ioarcb.cmd_pkt;
+	u32 ioasc = be32_to_cpu(ipr_cmd->ioasa.ioasc);
+
+	if (IPR_IOASC_SENSE_KEY(ioasc) > 0) {
+		ipr_erp_done(ipr_cmd);
+		return;
+	}
 
 	ipr_reinit_ipr_cmnd_for_erp(ipr_cmd);
 

_

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2004-05-24 14:39 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-05-24 14:39 [PATCH 2/3] ipr duplicate ioa reset fix Brian King

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.