On Tue 08-06-10 15:29:37, Nick Piggin wrote: > On Mon, Jun 07, 2010 at 06:09:03PM +0200, Jan Kara wrote: > > On Sat 05-06-10 11:38:02, Nick Piggin wrote: > > > On Fri, Jun 04, 2010 at 08:47:11PM +0200, Jan Kara wrote: > > > > + if (wbc->sync_mode == WB_SYNC_ALL) > > > > + tag_pages_for_writeback(mapping, index, end); > > > > > > I wonder if this is too much spinlock latency in a huge dirty file? > > > Some kid of batching of the operation perhaps would be good? > > You mean like copy tags for 4096 pages, then cond_resched the spin lock > > and continue? That should be doable but it will give tasks that try to > > livelock us more time (i.e. if there were 4096 tasks creating dirty pages > > than probably they would be able to livelock us, won't they? Maybe we don't > > care?). > > Not 100% sure. I think that if we've got the inode in I_SYNC state, it > should stop cleaning and dirtiers will get throttled. > > Even if writeback was able to continue on that inode, it would be a big > achievement to dirty then clean pages as fast as we are able to tag them > in batches of 4096 :) In practice, you are probably right that the writers will eventually get throttled if they were aggressive enough to dirty lots of pages while we cond_resched the lock... Honza -- Jan Kara <jack@xxxxxxx> SUSE Labs, CR -- 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