mm: compaction: introduce sync-light migration for use by compaction

commit a6bc32b899223a877f595ef9ddc1e89ead5072b8 upstream.

Stable note: Not tracked in Buzilla. This was part of a series that
	reduced interactivity stalls experienced when THP was enabled.
	These stalls were particularly noticable when copying data
	to a USB stick but the experiences for users varied a lot.

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

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

[ This patch is heavily based on Andrea's work]
[ fix fs/nfs/write.c build]
[ fix fs/btrfs/disk-io.c build]
Signed-off-by: Mel Gorman <>
Reviewed-by: Rik van Riel <>
Cc: Andrea Arcangeli <>
Cc: Minchan Kim <>
Cc: Dave Jones <>
Cc: Jan Kara <>
Cc: Andy Isaacson <>
Cc: Nai Xia <>
Cc: Johannes Weiner <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
Signed-off-by: Mel Gorman <>
Signed-off-by: Greg Kroah-Hartman <>
11 files changed