Re: Regarding ordered-tag support.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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
-
: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux