From: Jens Axboe <axboe@suse.de>
To: James Bottomley <James.Bottomley@SteelEye.com>
Cc: Tejun Heo <htejun@gmail.com>,
SCSI Mailing List <linux-scsi@vger.kernel.org>,
lkml <linux-kernel@vger.kernel.org>
Subject: Re: Regarding posted scsi midlyaer patchsets
Date: Tue, 19 Apr 2005 16:30:01 +0200 [thread overview]
Message-ID: <20050419142959.GK2827@suse.de> (raw)
In-Reply-To: <1113920295.4998.13.camel@mulgrave>
On Tue, Apr 19 2005, James Bottomley wrote:
> On Tue, 2005-04-19 at 14:34 +0200, Jens Axboe wrote:
> > On Mon, Apr 18 2005, Tejun Heo wrote:
> > > And, James, regarding REQ_SOFTBARRIER, if the REQ_SOFTBARRIER thing can
> > > be removed from SCSI midlayer, do you agree to change REQ_SPECIAL to
> > > mean special requests? If so, I have three proposals.
> > >
> > > * move REQ_SOFTBARRIER setting to right after the allocation of
> > > scsi_cmnd in scsi_prep_fn(). This will be the only place where
> > > REQ_SOFTBARRIER is used in SCSI midlayer, making it less pervasive.
> > > * Or, make another API which sets REQ_SOFTBARRIER on requeue. maybe
> > > blk_requeue_ordered_request()?
> > > * Or, make blk_insert_request() not set REQ_SPECIAL on requeue. IMHO,
> > > this is a bit too subtle.
> > >
> > > I like #1 or #2. Jens, what do you think? Do you agree to remove
> > > requeue feature from blk_insert_request()?
> >
> > #2 is the best, imho. We really want to maintain ordering on requeue
> > always, marking it softbarrier automatically in the block layer means
> > the io schedulers don't have to do anything specific to handle it.
>
> This is my preference too. In general, block is the only one that
> should care what the REQ_SOFTBARRIER flag actually means. SCSI only
> cares that it submits a non mergeable request.
>
> I'm happy to separate the meaning of REQ_SPECIAL from req->special.
Isn't it just duplicate information anyways? I mean, just clear
->special if it isn't valid anymore. Having a seperate flag to indicate
this seems a little suboptimal. It made more sense when ->cmd was a
integer being READ, WRITE, etc. But as a seperate state now it doesn't.
> > I have no problem with removing the requeue stuff from
> > blk_insert_request(). That function is horribly weird as it is, it is
> > supposed to look generic but is really just a scsi special case.
>
> heh .. would this be because no other driver uses the block layer for
> requeuing ... ?
Not so much that, more that it isn't very clean. It sets rq flags,
assigns ->special, insert the request and then runs the queue. It does
way too much. Either the caller wants a requeue, so he calls
blk_requeue_request(). Or call blk_insert_request(), which should just
do what the name indicates and not a whole bunch of other stuff. Then
add a nicely named function for actually running the queue:
void blk_kick_queue_handling(request_queue_t *q)
{
if (blk_queue_plugged(q))
__generic_unplug_device(q);
else
q->request_fn(q);
}
(with a better name, I cannot come up with one just now :-)
Yep, this requires you do do the ->special assignment and the queue run
in the caller, but I rather like that compared to a function that you
have to look up in source everytime because you don't know exactly how
much it does.
--
Jens Axboe
next prev parent reply other threads:[~2005-04-19 14:30 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20050417224101.GA2344@htj.dyndns.org>
[not found] ` <1113833744.4998.13.camel@mulgrave>
2005-04-18 14:58 ` Regarding posted scsi midlyaer patchsets Tejun Heo
2005-04-19 12:34 ` Jens Axboe
2005-04-19 14:18 ` James Bottomley
2005-04-19 14:30 ` Jens Axboe [this message]
2005-04-19 14:33 ` Jens Axboe
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=20050419142959.GK2827@suse.de \
--to=axboe@suse.de \
--cc=James.Bottomley@SteelEye.com \
--cc=htejun@gmail.com \
--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 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.