On Mon, 10 Nov 2008, Jens Axboe wrote: > > > > Or we could just change the blk-tag.c logic to stop of > > find_first_zero_bit() returns >= some_value instead of starting at an > > offset? You don't need any extra locking for that. > > Something like the below. No, there were two reasons for doing it the way I did it, and this shows both. One trivial, one subtle. > + if (!rq_is_sync(rq)) > + max_depth = 3 * max_depth / 4; The trivial one here is that you round down. Imagine what happens if "max_depth" was 1. The subtler one was that the 'use starting offset' means that async and sync can _share_ the tagspace, and while you limit async ones to a maximum outstanding number, you really cut down on them only when sync ones really have filled everything up. In contrast, limiting like the above means that it's much easier to be in the situation where you still have tags to use, but you've used them all for reads, and you refuse to start a single write. Anyway, I'll do the revert, since -rc4 is too late to discuss these issues. I think we can easily re-do things when everybody is ok with the code. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html