linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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).