On Wed, Dec 14, 2011 at 03:41:30PM +0000, Mel Gorman wrote: > This patch adds a lightweight sync migrate operation MIGRATE_SYNC_LIGHT > mode that avoids writing back pages to backing storage. Async > compaction maps to MIGRATE_ASYNC while sync compaction maps to > MIGRATE_SYNC_LIGHT. For other migrate_pages users such as memory > hotplug, MIGRATE_SYNC is used. > > This avoids sync compaction stalling for an excessive length of time, > particularly when copying files to a USB stick where there might be > a large number of dirty pages backed by a filesystem that does not > support ->writepages. > > [aarcange@xxxxxxxxxx: This patch is heavily based on Andrea's work] > Signed-off-by: Mel Gorman <mgorman@xxxxxxx> Acked-by: Minchan Kim <minchan@xxxxxxxxxx> > --- > fs/btrfs/disk-io.c | 3 +- > fs/hugetlbfs/inode.c | 2 +- > fs/nfs/internal.h | 2 +- > fs/nfs/write.c | 2 +- > include/linux/fs.h | 6 ++- > include/linux/migrate.h | 23 +++++++++++--- > mm/compaction.c | 2 +- > mm/memory-failure.c | 2 +- > mm/memory_hotplug.c | 2 +- > mm/mempolicy.c | 2 +- > mm/migrate.c | 78 ++++++++++++++++++++++++++--------------------- > 11 files changed, 74 insertions(+), 50 deletions(-) > > diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c > index 896b87a..dbe9518 100644 > --- a/fs/btrfs/disk-io.c > +++ b/fs/btrfs/disk-io.c > @@ -872,7 +872,8 @@ static int btree_submit_bio_hook(struct inode *inode, int rw, struct bio *bio, > > #ifdef CONFIG_MIGRATION > static int btree_migratepage(struct address_space *mapping, > - struct page *newpage, struct page *page, bool sync) > + struct page *newpage, struct page *page, > + enum migrate_mode sync) > { > /* > * we can't safely write a btree page from here, > diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c > index 10b9883..6b80537 100644 > --- a/fs/hugetlbfs/inode.c > +++ b/fs/hugetlbfs/inode.c > @@ -577,7 +577,7 @@ static int hugetlbfs_set_page_dirty(struct page *page) > > static int hugetlbfs_migrate_page(struct address_space *mapping, > struct page *newpage, struct page *page, > - bool sync) > + enum migrate_mode mode) Nitpick, except this one, we use enum migrate_mode sync. -- Kind regards, Minchan Kim -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>