From: "Rafael J. Wysocki" swsusp uses GFP_ATOMIC, but it can afford to use __GFP_WAIT, which will permit it to reclaim clean pagecache instead of emitting scary page-allocation-failure messages. Cc: Pavel Machek Signed-off-by: Andrew Morton --- kernel/power/swap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff -puN kernel/power/swap.c~swsusp-use-__gfp_wait kernel/power/swap.c --- a/kernel/power/swap.c~swsusp-use-__gfp_wait +++ a/kernel/power/swap.c @@ -63,7 +63,7 @@ static int submit(int rw, pgoff_t page_o { struct bio *bio; - bio = bio_alloc(GFP_ATOMIC, 1); + bio = bio_alloc(__GFP_WAIT | __GFP_HIGH, 1); if (!bio) return -ENOMEM; bio->bi_sector = page_off * (PAGE_SIZE >> 9); @@ -216,7 +216,7 @@ static int write_page(void *buf, sector_ return -ENOSPC; if (bio_chain) { - src = (void *)__get_free_page(GFP_ATOMIC); + src = (void *)__get_free_page(__GFP_WAIT | __GFP_HIGH); if (src) { memcpy(src, buf, PAGE_SIZE); } else { @@ -473,7 +473,7 @@ static int get_swap_reader(struct swap_m if (!start) return -EINVAL; - handle->cur = (struct swap_map_page *)get_zeroed_page(GFP_ATOMIC); + handle->cur = (struct swap_map_page *)get_zeroed_page(__GFP_WAIT | __GFP_HIGH); if (!handle->cur) return -ENOMEM; _