From: Tejun <htejun@gmail.com>
To: James.Smart@Emulex.Com
Cc: James Bottomley <James.Bottomley@SteelEye.com>,
SCSI Mailing List <linux-scsi@vger.kernel.org>
Subject: Re: Regarding ordered-tag support.
Date: Thu, 09 Feb 2006 01:57:55 +0900 [thread overview]
Message-ID: <43EA2313.9030506@gmail.com> (raw)
In-Reply-To: <43EA1B75.40008@emulex.com>
Hello,
James Smart wrote:
>>>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?
>
> This isn't a driver thing - this is a SCSI device thing. The disk array
> is temporarily out of resources so it BUSY's, or QUEUE_FULL's. But the
> next i/o may not encounter it.
I intentionally wrote 'driver' because if a SCSI device determines that
it's busy, it would report via CHECK CONDITION. Depending on QErr, the
whole task set will be terminated, and such case falls into EH
requeueing case (would require changes in scsi_softirq though).
So, I thought this case was driver/controller thing where they report
busy condition after issue for a command while accepting later commands.
>>>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).
>
> You're making the assumption that you can set QErr... It's under device control.
>
Was it ro field? Didn't know that. I will check it tomorrow. If a
device doesn't abort whole taskset, we just can't use ordered-tag for
barriers.
Thanks for your comment.
--
tejun
next prev parent reply other threads:[~2006-02-08 16:58 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
2006-02-08 16:25 ` James Smart
2006-02-08 16:57 ` Tejun [this message]
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=43EA2313.9030506@gmail.com \
--to=htejun@gmail.com \
--cc=James.Bottomley@SteelEye.com \
--cc=James.Smart@Emulex.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 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).