From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Antonio Ospite <ospite@studenti.unina.it>,
USB list <linux-usb@vger.kernel.org>,
Boaz Harrosh <bharrosh@panasas.com>,
Alan Jenkins <alan-jenkins@tuffmail.co.uk>,
Hans de Goede <j.w.r.degoede@hhs.nl>,
SCSI development list <linux-scsi@vger.kernel.org>
Subject: Re: [PATCH] Fix handling of failed requests in scsi_io_completion
Date: Sat, 20 Sep 2008 16:09:15 -0500 [thread overview]
Message-ID: <1221944955.3152.58.camel@localhost.localdomain> (raw)
In-Reply-To: <Pine.LNX.4.44L0.0809201640160.16873-100000@netrider.rowland.org>
On Sat, 2008-09-20 at 16:49 -0400, Alan Stern wrote:
> On Sat, 20 Sep 2008, James Bottomley wrote:
>
> > What I mean is that I can't find an error case that's currently shown
> > scsi_end_request(cmd, -EIO, this_count, 1) where requeuing after
> > completing only the currently attempted transfer is valid. If this had
> > all been done as a single transaction, we'd have killed everything at
> > this point. Just because we split the request into multiple
> > transactions doesn't mean we should go back around and try a new
> > transaction after we hit an error.
>
> Yes, that makes sense.
>
> > > They end up doing this:
> > >
> > > scsi_end_request(cmd, -EIO, this_count, 1);
> > >
> > > when in fact they should do this:
> > >
> > > scsi_end_request(cmd, -EIO, 0, 1);
> > >
> > > (where the -EIO value is ignored).
> >
> > Actually, no ... that's just equivalent to scsi_requeue_command(q, cmd)
> > which is done at several places in the code (correctly) for sense errors
> > that imply the whole lot should be retried (actually, it's assuming
> > good_bytes is zero).
>
> Except that those places don't do the blk_noretry_request test. Should
> they? And even if they do, what's to prevent an infinite retry loop?
Well, that's another oddity ... the retries occur at a lower level
(scsi_decide_disposition) ... there's no reason to make that check if
all the error paths complete everything. Now if we find an error where
we should be moving on to the next transaction, then we'd need to do
that test. However, I think I've demonstrated so far that there isn't
one. I also don't think we want to make the test for the obviously
retryable conditions like UNIT_ATTENTION because that will cause paths
to flip on irrelevant AEN conditions.
> > OK, so look at the current code in scsi_io_completion where we call
> > scsi_end_request(cmd, -EIO, this_count, 1):
> >
> > UNIT ATTENTION for removable medium (means medium changed)
> > ILLEGAL REQUEST where there's no command resize fallback
> > NOT READY for unknown (non retryable) reasons
> > VOLUME OVERFLOW
> >
> > In none of these cases do we want any form of requeuing, we want to kill
> > the entire request.
>
> I take your point. Which leads to the question: Why was the code ever
> calling scsi_end_request(cmd, -EIO, this_count, 1) in the first place?
> Apparently all of these paths should be setting the last argument to 0,
> always.
Yes, that was the question I asked in my first reply (where I said the
requeue looks superfluous). I think the answer is that there's no
point ... that's why I advocated simply eliminating scsi_end_request()
in favour of either scsi_requeue_request/blk_run_queue or
end_dequeued_request().
So are you happy with the simple fix proposal ... I think rearranging
this code needs more debate and discussion.
James
next prev parent reply other threads:[~2008-09-20 21:09 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-11 17:03 BUG in handling of last_sector_bug flag Alan Stern
[not found] ` <Pine.LNX.4.44L0.0808111209100.2142-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2008-08-12 9:08 ` Alan Jenkins
[not found] ` <48A15318.30600-cCz0Lq7MMjm9FHfhHBbuYA@public.gmane.org>
2008-08-12 15:24 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.0808121120130.2248-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2008-08-12 16:33 ` Boaz Harrosh
[not found] ` <48A1BB71.5050905-C4P08NqkoRlBDgjK7y7TUQ@public.gmane.org>
2008-08-12 21:00 ` Alan Stern
2008-08-13 11:13 ` Boaz Harrosh
[not found] ` <48A2C1F5.6000708-C4P08NqkoRlBDgjK7y7TUQ@public.gmane.org>
2008-08-13 14:50 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.0808131036310.2455-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2008-08-13 16:37 ` Boaz Harrosh
[not found] ` <48A30DC7.8070501-C4P08NqkoRlBDgjK7y7TUQ@public.gmane.org>
2008-08-13 16:45 ` Boaz Harrosh
2008-08-13 19:17 ` Alan Stern
2008-08-14 19:41 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.0808141535350.2148-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2008-08-15 8:31 ` Alan Jenkins
2008-08-15 17:43 ` Antonio Ospite
2008-08-26 21:13 ` Antonio Ospite
[not found] ` <20080826231301.aac6f0e5.ospite-aNJ+ML1ZbiP93QAQaVx+gl6hYfS7NtTn@public.gmane.org>
2008-08-27 14:21 ` Alan Stern
2008-08-27 14:33 ` James Bottomley
2008-08-27 15:54 ` Alan Stern
[not found] ` <1219847626.3292.17.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2008-08-27 18:50 ` [PATCH] Fix handling of failed requests in scsi_io_completion Alan Stern
2008-09-05 19:35 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.0809051533280.4482-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2008-09-19 7:17 ` Antonio Ospite
[not found] ` <20080919091748.9438726b.ospite-aNJ+ML1ZbiP93QAQaVx+gl6hYfS7NtTn@public.gmane.org>
2008-09-19 15:53 ` Alan Stern
2008-09-20 0:31 ` James Bottomley
2008-09-20 17:06 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.0809201241160.13839-100000-pYrvlCTfrz9XsRXLowluHWD2FQJk+8+b@public.gmane.org>
2008-09-20 17:55 ` James Bottomley
2008-09-20 20:49 ` Alan Stern
2008-09-20 21:09 ` James Bottomley [this message]
2008-09-21 12:55 ` Boaz Harrosh
[not found] ` <48D64459.2010802-C4P08NqkoRlBDgjK7y7TUQ@public.gmane.org>
2008-09-21 19:57 ` James Bottomley
[not found] ` <1221944955.3152.58.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2008-09-21 16:30 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.0809211201470.1154-100000-pYrvlCTfrz9XsRXLowluHWD2FQJk+8+b@public.gmane.org>
2008-09-21 19:59 ` James Bottomley
[not found] ` <1222027177.3152.121.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2008-09-21 21:03 ` Alan Stern
2008-09-22 7:24 ` Boaz Harrosh
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=1221944955.3152.58.camel@localhost.localdomain \
--to=james.bottomley@hansenpartnership.com \
--cc=alan-jenkins@tuffmail.co.uk \
--cc=bharrosh@panasas.com \
--cc=j.w.r.degoede@hhs.nl \
--cc=linux-scsi@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=ospite@studenti.unina.it \
--cc=stern@rowland.harvard.edu \
/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