On Fri, 20 Aug 2010 05:19:04 -0400 Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote: > On Fri, Aug 20, 2010 at 07:55:53AM +0800, Wu Fengguang wrote: > > Since migration and pageout still set nonblocking for ->writepage, we > > may keep them in the near future, until VM does not start IO on itself. > > Why does pageout() and memory migration need to be even more > non-blocking than the already non-blockig WB_SYNC_NONE writeout? > Just an idle thought on this... I think a lot of the confusion here comes from the fact that we have sync_mode and a bunch of flags, and it's not at all clear how filesystems are supposed to treat the union of them. There are also possible unions of flags/sync_modes that never happen in practice. It's not always obvious though and as filesystem implementors we have to consider the possibility that they might occur (consider WB_SYNC_ALL + for_background). Perhaps a lot of this confusion could be lifted by getting rid of the extra flags and adding new sync_mode's. Maybe something like: WB_SYNC_ALL /* wait on everything to complete */ WB_SYNC_NONE /* don't wait on anything */ WB_SYNC_FOR_RECLAIM /* sync for reclaim */ WB_SYNC_FOR_KUPDATED /* sync by kupdate */ ...etc... That does mean that all of the filesystem specific code may need to be touched when new modes are added and removed. I think it would be clearer though about what you're supposed to do in ->writepages. -- Jeff Layton <jlayton@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html