Re: [PATCH] 2.5.28 small REQ_SPECIAL abstraction

Jens Axboe (axboe@suse.de)
Mon, 29 Jul 2002 07:37:46 +0200


On Sun, Jul 28 2002, James Bottomley wrote:
> > You are right the
> > > rq->flags &= REQ_QUEUED;
> > > and the
> > > if (blk_rq_tagged(rq))
> > blk_queue_end_tag(q, rq);
> > > should be just removed and things are fine.
> > They only survive becouse they don't provide a tag for the request in
> > first place.
> > > Thanks for pointing it out.
>
>
> Please don't remove this.
>
> insert_special isn't just used to start new requests, it's also used to queue
> incoming requests that cannot be processed by the device (host adapter,
> queue_full etc.).
>
> In this latter case, the tag is already begun, so it needs to go back with
> end_tag (we start a new tag when the device begins processing again).
>
> I own up to introducing the &= REQ_QUEUED rubbish---I was just keeping the
> original placement of the flag clearing code, but now we need to preserve
> whether the request was queued or not for the blk_rq_tagged check. On
> reflection it would have been better just to set the flags to REQ_SPECIAL |
> REQ_BARRIER after the end tag code.

I think you are missing the point. The stuff should not be in the
_generic_ blk_insert_request(). As I posted in my first reply to Martin,
SCSI needs to clear the tag before calling blk_insert_request() if it
needs to.

> axboe@suse.de said:
> > But the crap still got merged, sigh... Yet again an excellent point of
> > why stuff like this should go through the maintainer. Apparently Linus
> > blindly applies this stuff.
>
> Hmm, well I sent it to you and you are the Maintainer.

I've never seen it?!

-- 
Jens Axboe

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/