From: James Bottomley <James.Bottomley@SteelEye.com>
To: Albert Lee <albertcc@tw.ibm.com>
Cc: Tejun Heo <htejun@gmail.com>, Jeff Garzik <jgarzik@pobox.com>,
linux-ide@vger.kernel.org,
SCSI Mailing List <linux-scsi@vger.kernel.org>,
Doug Maxey <dwm@maxeymade.com>
Subject: Re: [RFC] libata new EH document
Date: Tue, 30 Aug 2005 09:27:02 -0500 [thread overview]
Message-ID: <1125412023.5037.15.camel@mulgrave> (raw)
In-Reply-To: <43142279.3070004@tw.ibm.com>
On Tue, 2005-08-30 at 17:10 +0800, Albert Lee wrote:
> Could we get the sense data before calling qc->scsidone()? (Using the
> proposed separate
> EH qc can keep the original qc intact.)
Well, the way most SCSI drivers do it today is to turn around the
command returning Check Condition from irq context. This is sort of
like ACA simulation. The reason it's done is because while a drive
holds a contingent allegiance condition it cannot accept other commands.
This effectively holds everything in abeyance until the sense is taken,
so for fast operation, SCSI drivers take the sense as soon as possible.
Ideally, though this mechanism should be deprecated because it causes us
to keep a complete copy of the old command and parameters around which
is a hit in the command allocation and set up fast path.
> The issue:
> When a DVD drive returns MEDIUM_ERROR in the sense data, libata doesn't
> retry the command.
>
> For libata, when scsi_softirq() calls scsi_decide_disposition() and
> scsi_check_sense() to determine
> how to handle the result, scsi_check_sense() always returns "fail" since
> the sense data is not there
> yet. The sense data is requested later in the libata error handler. But
> the command has already been
> considered as an "error".
>
> By having the sense data ready before calling qc->scsidone(), we can
> make the
> NEEDS_RETRY work in scsi_softirq(). So, for things like MEDIUM_ERROR,
> the device has
> a chance to retry/recover the error. This seems to be important for
> devices with built-in
> defect management system.
It sounds like the ATA error handler is missing the sense interpretation
part. If you look at the scsi error handler, we will request sense and
then redecide the disposition based on the return.
James
next prev parent reply other threads:[~2005-08-30 14:28 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-08-29 6:11 [RFC] libata new EH document Tejun Heo
2005-08-29 6:13 ` Tejun Heo
2005-08-30 9:10 ` Albert Lee
2005-08-30 10:26 ` Tejun Heo
2005-08-30 14:32 ` Luben Tuikov
2005-09-01 1:17 ` Tejun Heo
2005-09-01 2:22 ` Jeff Garzik
2005-09-01 2:42 ` Tejun Heo
2005-09-01 3:33 ` Luben Tuikov
2005-09-01 3:30 ` Luben Tuikov
2005-09-01 3:44 ` Tejun Heo
2005-09-01 4:38 ` Luben Tuikov
2005-09-01 5:44 ` Tejun Heo
2005-09-01 5:54 ` Jeff Garzik
2005-09-01 13:24 ` James Bottomley
2005-09-01 21:40 ` Luben Tuikov
2005-09-01 21:46 ` Jeff Garzik
2005-09-01 22:09 ` Luben Tuikov
2005-09-01 22:27 ` Jeff Garzik
2005-09-01 23:17 ` Luben Tuikov
2005-09-02 7:09 ` Stefan Richter
2005-09-01 22:22 ` Luben Tuikov
2005-09-01 22:31 ` Jeff Garzik
2005-09-01 21:55 ` James Bottomley
2005-09-01 22:07 ` Luben Tuikov
2005-09-01 22:23 ` James Bottomley
2005-09-01 22:36 ` Luben Tuikov
2005-09-01 23:01 ` James Bottomley
2005-09-01 23:03 ` Luben Tuikov
2005-09-01 23:27 ` Luben Tuikov
2005-09-01 2:22 ` Jeff Garzik
2005-08-30 14:27 ` James Bottomley [this message]
2005-09-07 8:25 ` 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=1125412023.5037.15.camel@mulgrave \
--to=james.bottomley@steeleye.com \
--cc=albertcc@tw.ibm.com \
--cc=dwm@maxeymade.com \
--cc=htejun@gmail.com \
--cc=jgarzik@pobox.com \
--cc=linux-ide@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;
as well as URLs for NNTP newsgroup(s).