On Sun 07-11-10 00:39:55, Wu Fengguang wrote: > > It's supposed to sync files in a big loop > > > > for each dirty inode > > write_cache_pages() > > (quickly) tag currently dirty pages > > (maybe slowly) sync all tagged pages > > > > Ideally the loop should call write_cache_pages() _once_ for each inode. > > At least this is the assumption made by commit f446daaea (mm: > > implement writeback livelock avoidance using page tagging). > > The above scheme relies on the filesystems to not skip pages in > WB_SYNC_ALL mode. It seems necessary to add an explicit check at > least in the -mm tree. > > Thanks, > Fengguang > --- > writeback: check skipped pages on WB_SYNC_ALL > > In WB_SYNC_ALL mode, filesystems are not expected to skip dirty pages on > temporal lock contentions or non fatal errors, otherwise sync() will > return without actually syncing the skipped pages. Add a check to > catch possible redirty_page_for_writepage() callers that violate this > expectation. Yes, looks like a good debugging patch. Honza > > Signed-off-by: Wu Fengguang <fengguang.wu@xxxxxxxxx> > --- > fs/fs-writeback.c | 1 + > 1 file changed, 1 insertion(+) > > --- linux-next.orig/fs/fs-writeback.c 2010-11-07 00:20:43.000000000 +0800 > +++ linux-next/fs/fs-writeback.c 2010-11-07 00:29:29.000000000 +0800 > @@ -527,6 +527,7 @@ static int writeback_sb_inodes(struct su > * buffers. Skip this inode for now. > */ > redirty_tail(inode); > + WARN_ON_ONCE(wbc->sync_mode == WB_SYNC_ALL); > } > spin_unlock(&inode_lock); > iput(inode); -- 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