From: Tejun <htejun@gmail.com>
To: James Bottomley <James.Bottomley@SteelEye.com>
Cc: SCSI Mailing List <linux-scsi@vger.kernel.org>
Subject: Re: Regarding ordered-tag support.
Date: Thu, 09 Feb 2006 01:10:14 +0900 [thread overview]
Message-ID: <43EA17E6.4000800@gmail.com> (raw)
In-Reply-To: <1139413766.3003.19.camel@mulgrave.il.steeleye.com>
James Bottomley wrote:
> On Wed, 2006-02-08 at 15:40 +0900, Tejun Heo wrote:
>
>>Now that new ordered implementation is in the mainline, we can properly
>>use ordered-tag during barrier sequence. As noted in the barrier doc,
>>the problem with the current SCSI midlayer is that scsi_request_fn() is
>>not atomic w.r.t. q->queuelock, so even if ordered-tag requests leave
>>request queue in the correct order, they can be reordered while they are
>>being issued by SCSI midlayer.
>
>
> Unfortunately, though, this is only half the problem.
>
> The other half is busy/queue_full processing and error recovery
>
> For the first: busy/queue_full processing, the issue is that when we
> send out a command, we could get a BUSY or QUEUE_FULL return which comes
> back to us via IRQ context. Unfortunately, we could have multiple
> commands that do this and a command will be accepted as soon as the busy
> condition alleviates, so we could see say two commands go down in order,
> the first one will get BUSY, the second is accepted and only then do we
> get the IRQ that says BUSY to the first ... now we have out of order
> execution.
Oh... I see. How many drivers do that? I can't think of good reasons
to report BUSY via IRQ for simpler transports (SATA/SPI). Maybe enable
ordered-tag selectively?
>
> For the second: Depending on the mode page (the QErr bit of the
> queueing page), most devices fail only a single command. We can set the
> QErr bit to return every command after the failing one (thus ensuring
> execution order), but the error handler would have to take them all back
> and resort them for submission.
Actually blk layer will do the sorting part (this is what req->ordcolor
is for). Block drivers are only required to not successfully complete
later requests while retrying earlier ones, so setting QErr and retrying
all on-the-fly requests should do it (no EH code change).
> I think the first problem has to be solved before we can turn on ordered
> tag based barriers. I'm ambivalent on the second; we could probably
> mark ordered tag based barriers as "caveat emptor" while we work on the
> EH problem in parallel.
--
tejun
next prev parent reply other threads:[~2006-02-08 16:10 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-08 6:40 Regarding ordered-tag support Tejun Heo
2006-02-08 15:49 ` James Bottomley
2006-02-08 16:10 ` Tejun [this message]
2006-02-08 16:25 ` James Smart
2006-02-08 16:57 ` Tejun
2006-02-08 17:07 ` James Bottomley
2006-02-08 17:18 ` Tejun
2006-02-08 17:27 ` James Bottomley
2006-02-08 18:04 ` Jeff Garzik
2006-02-09 4:12 ` Tejun Heo
2006-02-09 17:20 ` James Bottomley
2006-02-10 0:45 ` Tejun Heo
2006-02-08 16:26 ` James Bottomley
2006-02-08 16:22 ` James Smart
2006-02-08 20:50 ` James Bottomley
2006-02-08 20:59 ` James Bottomley
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=43EA17E6.4000800@gmail.com \
--to=htejun@gmail.com \
--cc=James.Bottomley@SteelEye.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.