Re: [PATCH/RFT] libata "DMA timeout" fix

From: Justin Cormack
Date: Sun Feb 29 2004 - 12:29:18 EST


Thanks, testing James's fix on one machine at the moment. Will have
another six or so machines as a libata test farm tomorrow.

Justin


On Sat, 2004-02-28 at 21:23, Jeff Garzik wrote:
> James Bottomley wrote:
> > On Sat, 2004-02-28 at 13:10, Jeff Garzik wrote:
> >
> >>===== 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;
> >> }
> >
> >
> > You can't do this. Supposing there command's delayed, the timer fires
> > and then the command returns with a sense error? The done will go
> > through automatically completing the command, but your strategy handler
> > will still think it has a failed command to handle.
>
> hmmm, yeah that will be a problem iff we are not already in the strategy
> handler.
>
>
> > The correct fix is this, I think (uncompiled, but you get the idea):
>
> Yeah, that's much better. That function is not exported though ;-)
>
> Jeff
>
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/