On Fri, 2010-06-18 at 16:09 +1000, Dave Chinner wrote: > > + bdi->wb_written_head = bdi_stat(bdi, BDI_WRITTEN) + wc->written; > > The resolution of the percpu counters is an issue here, I think. > percpu counters update in batches of 32 counts per CPU. wc->written > is going to have a value of roughly 8 or 32 depending on whether > bdi->dirty_exceeded is set or not. I note that you take this into > account when checking dirty threshold limits, but it doesn't appear > to be taken in to here. The BDI stuff uses a custom batch-size, see bdi_stat_error() and related. The total error is in the order of O(n log n) where n is the number of CPUs. But yeah, the whole dirty_exceeded thing makes life more interesting. -- 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