Re: [PATCH] 2.5.28 small REQ_SPECIAL abstraction

James Bottomley (James.Bottomley@SteelEye.com)
Sun, 28 Jul 2002 15:13:45 -0500


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

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.

James

P.S. I just got back into the US from a long flight, I'll give this more
mature reflection tomorrow.

-
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/