From: James Bottomley <James.Bottomley@SteelEye.com>
To: James Bottomley <James.Bottomley@SteelEye.com>,
axboe@suse.de, linux-scsi@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: Proposed changes to generic blk tag for use in SCSI (1/3)
Date: Thu, 13 Jun 2002 18:09:46 -0400 [thread overview]
Message-ID: <200206132209.g5DM9kF25073@localhost.localdomain> (raw)
In-Reply-To: Message from Doug Ledford <dledford@redhat.com> of "Thu, 13 Jun 2002 17:50:19 EDT." <20020613175019.A4515@redhat.com>
dledford@redhat.com said:
> This I'm not following. If you get a QUEUE_FULL from the adaptec
> driver, then the commands you are pushing back should still be tagged
> and no stall should be required beyond just waiting for any
> outstanding command on the drive to complete or for a timeout to
> pass. It should not require any untagged type stall where you have
> to drain the entire pipeline...
Ah, but that was the problem in the blk generic tagging. only requests of
type REQ_CMD get tagged, so say the SD driver gets a block read request as a
REQ_CMD, translates it into a SCSI READ, sends it through the mid-layer to the
low layer driver which requests a block layer tag but eventually responds
QUEUE_FULL. Now the command gets pushed back to the blk queue head as a
REQ_SPECIAL (and as part of the push back, we have to finish the tag since
command moves from the tag queue to the blk queue), which to the scsi mid
layer means request with already formulated SCSI command so don't go back
through the upper layer driver again. The problem is that when this command
comes back again into the scsi mid layer for execution it would now do so as
an untagged command because the blk_queue_start_tag() code will only tag
REQ_CMD requests, and hence we get a queue stall every time the low level
driver responds QUEUE_FULL.
This was the behaviour (in the blk layer) I was objecting to---on the second
go around, we request a tag using blk_queue_start_tag() but get denied because
the request isn't of the correct type---and why I think the
blk_generic_start_tag() needs to allow REQ_SPECIAL requests to be tagged.
> I would think that, eventually, the bio layer will support I/O fencing
> via tagged commands (aka, ext3 needs an I/O fence and the bio layer
> does as needed to enforce that, which on scsi may mean an ordered
> queue tag is generated instead of a regular tag and on IDE it may
> mean something else). It will have to be able to tell that some of
> these conditions have been satisfied in those cases, so I see no
> reason why it shouldn't be made aware of them now. Just my $.02
I've actually already put this code into the mid layer patch (the
scsi_populate_tag_msg() function in scsi.h) to generate an ordered tag for the
case where the request is marked REQ_BARRIER.
James
next prev parent reply other threads:[~2002-06-13 22:10 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-06-11 2:46 James Bottomley
2002-06-11 5:50 ` Jens Axboe
2002-06-11 14:29 ` James Bottomley
2002-06-11 14:45 ` Jens Axboe
2002-06-11 16:39 ` James Bottomley
2002-06-13 21:01 ` Doug Ledford
2002-06-13 21:26 ` James Bottomley
2002-06-13 21:50 ` Doug Ledford
2002-06-13 22:09 ` James Bottomley [this message]
2002-09-03 14:35 aic7xxx sets CDR offline, how to reset? James Bottomley
2002-09-03 18:23 ` Doug Ledford
2002-09-03 19:09 ` James Bottomley
2002-09-03 20:59 ` Alan Cox
2002-09-03 21:32 ` James Bottomley
2002-09-03 21:54 ` Alan Cox
2002-09-03 22:50 ` Doug Ledford
2002-09-03 23:28 ` Alan Cox
2002-09-04 7:40 ` Jeremy Higdon
2002-09-04 16:24 ` James Bottomley
2002-09-04 17:13 ` Mike Anderson
2002-09-05 9:50 ` Jeremy Higdon
2002-09-04 16:13 ` James Bottomley
2002-09-04 16:50 ` Justin T. Gibbs
2002-09-05 9:39 ` Jeremy Higdon
2002-09-05 13:35 ` Justin T. Gibbs
2002-09-03 21:13 ` Doug Ledford
2002-09-03 21:48 ` James Bottomley
2002-09-03 22:42 ` Doug Ledford
2002-09-03 22:52 ` Doug Ledford
2002-09-03 23:29 ` Alan Cox
2002-09-04 21:16 ` Luben Tuikov
2002-09-04 10:37 ` Andries Brouwer
2002-09-04 10:48 ` Doug Ledford
2002-09-04 11:23 ` Alan Cox
2002-09-04 16:25 ` Rogier Wolff
2002-09-04 19:34 ` Thunder from the hill
2002-09-03 21:24 ` Patrick Mansfield
2002-09-03 22:02 ` James Bottomley
2002-09-03 23:26 ` Alan Cox
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=200206132209.g5DM9kF25073@localhost.localdomain \
--to=james.bottomley@steeleye.com \
--cc=axboe@suse.de \
--cc=linux-kernel@vger.kernel.org \
--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
Powered by JetHome