On Fri, May 15, 2020 at 01:26:49PM -0400, Brian Foster wrote: > Ok, that might prohibit using a bitop in the commit path. I'd still like > to see actual numbers on that, though, just to see where on the spectrum > it lands. I'm also wondering if the fast path logic mentioned above > could be implemented like the following (using bitops instead of the > spinlock): > > if (test_bit(XLOG_CIL_EMPTY, ...) && > test_and_clear_bit(XLOG_CIL_EMPTY, ...)) { > <steal CIL res> > } > > That type of pattern seems to be used in at least a few other places in > the kernel (e.g. filemap_check_errors(), wb_start_writeback(), > __blk_mq_tag_busy()), presumably for similar reasons. Ok, that seems reasonable given that there is other code using the same pattern to avoid atomic ops. Overhead will be no different to the test/lock/retest pattern I've been using... Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx