> 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/
This archive was generated by hypermail 2b29 : Tue Jul 30 2002 - 14:00:29 EST