From: Mike Anderson <andmike@us.ibm.com>
To: linux-scsi@vger.kernel.org
Cc: ishii.hironobu@jp.fujitsu.com
Subject: [PATCH] scsi_eh_flush_done_q return status
Date: Fri, 16 Jan 2004 12:11:17 -0800 [thread overview]
Message-ID: <20040116201117.GD1053@beaverton.ibm.com> (raw)
This is a refresh of a patch for a previously reported problem with the
scsi_eh_flush_done_q. The original thread is located here:
http://marc.theaimsgroup.com/?l=linux-scsi&m=107043398314649&w=2
This patch has a one line difference than the one previously posted in
response to the thread. In the previous patch I was unconditionally
setting result in the finish case.
I verified the patch using scsi_debug + gov, but could only cover the
retry path of the patch. I ran out of time to tweak scsi_debug to give
me the right failure signature. If Hironobu has some free time may be
the patch could be verified on the original failing system.
-andmike
--
Michael Anderson
andmike@us.ibm.com
DESC
This patch fixes a bug in scsi_eh_flush_done_q when the allowed count has
been exceeded and the command errored for a timeout. The bug is that the
result will be left at zero and the command finished.
author: Mike Anderson <andmike@us.ibm.com>
patch_version: Thu Jan 15 20:27:10 UTC 2004
EDESC
patched-scsi-misc-2.7-andmike/drivers/scsi/scsi_error.c | 28 +++++++---------
1 files changed, 13 insertions(+), 15 deletions(-)
diff -puN drivers/scsi/scsi_error.c~scsi_error_retry drivers/scsi/scsi_error.c
--- patched-scsi-misc-2.7/drivers/scsi/scsi_error.c~scsi_error_retry Thu Jan 15 22:14:40 2004
+++ patched-scsi-misc-2.7-andmike/drivers/scsi/scsi_error.c Thu Jan 15 22:14:40 2004
@@ -1420,23 +1420,21 @@ static void scsi_eh_flush_done_q(struct
list_for_each_safe(lh, lh_sf, done_q) {
scmd = list_entry(lh, struct scsi_cmnd, eh_entry);
list_del_init(lh);
- if (!scmd->device->online) {
- scmd->result |= (DRIVER_TIMEOUT << 24);
- } else {
- if (++scmd->retries < scmd->allowed) {
- SCSI_LOG_ERROR_RECOVERY(3,
- printk("%s: flush retry"
- " cmd: %p\n",
- current->comm,
- scmd));
+ if (scmd->device->online &&
+ (++scmd->retries < scmd->allowed)) {
+ SCSI_LOG_ERROR_RECOVERY(3, printk("%s: flush"
+ " retry cmd: %p\n",
+ current->comm,
+ scmd));
scsi_queue_insert(scmd, SCSI_MLQUEUE_EH_RETRY);
- continue;
- }
+ } else {
+ if (!scmd->result)
+ scmd->result |= (DRIVER_TIMEOUT << 24);
+ SCSI_LOG_ERROR_RECOVERY(3, printk("%s: flush finish"
+ " cmd: %p\n",
+ current->comm, scmd));
+ scsi_finish_command(scmd);
}
- SCSI_LOG_ERROR_RECOVERY(3, printk("%s: flush finish"
- " cmd: %p\n",
- current->comm, scmd));
- scsi_finish_command(scmd);
}
}
_
next reply other threads:[~2004-01-16 20:06 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-01-16 20:11 Mike Anderson [this message]
2004-02-02 10:29 ` [PATCH] scsi_eh_flush_done_q return status Hironobu Ishii
2004-02-02 15:59 ` Mike Anderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040116201117.GD1053@beaverton.ibm.com \
--to=andmike@us.ibm.com \
--cc=ishii.hironobu@jp.fujitsu.com \
--cc=linux-scsi@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.