On Sat, Oct 31, 2015 at 12:54:50PM -0700, Linus Torvalds wrote: > On Sat, Oct 31, 2015 at 12:34 PM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > > > > ... and here's the current variant of mine. > > Ugh. I really liked how simple mine ended up being. Yours is definitely not. Note that it's not the final variant - just something that should be testable. There are all kinds of things that still need cleaning/simplifying in there - e.g. scan() is definitely more complex than needed (if nothing else, the "small bitmap" case is simply find_next_zero_bit(), and the rest all have size equal to full cacheline; moreover, I'd overdone the "... and check if there are other zero bits left" thing - its callers used to use that a lot, and with the execption of two of them it was absolutely worthless. So it ended up more generic than necessary and I'm going to trim that crap down. It's still going to end up more complex than yours, obviously, but not as badly as it is now. I'm not sure if the speedup will be worth the extra complexity, thus asking for testing... On _some_ loads it is considerably faster (at least by factor of 5), but whether those loads resemble anything that occurs on real systems... BTW, considerable amount of unpleasantness is due to ragged-right-end kind of problems - take /proc/sys/fs/nr-open to something other than a power of two and a whole lot of fun issues start happening. I went for "if there are secondary bitmaps at all, pad all bitmaps to a multiple of cacheline", which at least somewhat mitigates that mess; hell knows, there might be a clever way to sidestep it entirely... -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html