From: Jeff Garzik <jgarzik@pobox.com>
To: Linux Kernel <linux-kernel@vger.kernel.org>,
linux-ide@vger.kernel.org,
SCSI Mailing List <linux-scsi@vger.kernel.org>
Subject: [PATCH/RFT] libata "DMA timeout" fix
Date: Sat, 28 Feb 2004 14:10:45 -0500 [thread overview]
Message-ID: <4040E7B5.4020709@pobox.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 645 bytes --]
The desired effect of a DMA timeout should be to throw an I/O error, but
that doesn't appear to be happening.
Those seeing DMA timeout messages, please test this patch.
Kernel hacker note: James B recommended that I implement my own
scsi_done() function, which duplicates the real scsi_done() but omits
the scsi_delete_timer() call. This is probably the best long term fix,
but doing so involves exporting several currently-private bits of SCSI
mid-layer, which I would rather not do. Probably best to create a
__scsi_done() inside the SCSI mid-layer, and call that.
Jeff, the only user of ->eh_strategy_handler() in any kernel
[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 624 bytes --]
===== drivers/scsi/libata-core.c 1.19 vs edited =====
--- 1.19/drivers/scsi/libata-core.c Wed Feb 25 22:41:13 2004
+++ edited/drivers/scsi/libata-core.c Sat Feb 28 14:03:18 2004
@@ -2130,6 +2130,14 @@
cmd->result = SAM_STAT_CHECK_CONDITION;
else
ata_to_sense_error(qc);
+
+ /* hack alert! we need this to get past the
+ * first check in scsi_done(). libata is the
+ * -only- user of ->eh_strategy_handler() in
+ * any kernel tree, which exposes some incorrect
+ * assumptions in the SCSI layer.
+ */
+ scsi_add_timer(cmd, 2000 * HZ, NULL);
} else {
cmd->result = SAM_STAT_GOOD;
}
next reply other threads:[~2004-02-28 19:11 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-02-28 19:10 Jeff Garzik [this message]
2004-02-28 20:49 ` [PATCH/RFT] libata "DMA timeout" fix James Bottomley
2004-02-28 21:23 ` Jeff Garzik
2004-02-28 21:28 ` James Bottomley
2004-02-29 17:26 ` Justin Cormack
2004-02-29 17:31 ` Jeff Garzik
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=4040E7B5.4020709@pobox.com \
--to=jgarzik@pobox.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox