The patch titled vmscan: let GFP_NOFS go to swap again has been added to the -mm tree. Its filename is vmscan-let-gfp_nofs-go-to-swap-again.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://userweb.kernel.org/~akpm/stuff/added-to-mm.txt to find out what to do about this The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: vmscan: let GFP_NOFS go to swap again From: Hugh Dickins <hugh@xxxxxxxxxxx> In the past, GFP_NOFS (but of course not GFP_NOIO) was allowed to reclaim by writing to swap. That got partially broken in 2.6.23, when may_enter_fs initialization was moved up before the allocation of swap, so its PageSwapCache test was failing the first time around, Fix it by setting may_enter_fs when add_to_swap() succeeds with __GFP_IO. In fact, check __GFP_IO before calling add_to_swap(): allocating swap we're not ready to use just increases disk seeking. Signed-off-by: Hugh Dickins <hugh@xxxxxxxxxxx> Cc: Rik van Riel <riel@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/vmscan.c | 3 +++ 1 file changed, 3 insertions(+) diff -puN mm/vmscan.c~vmscan-let-gfp_nofs-go-to-swap-again mm/vmscan.c --- a/mm/vmscan.c~vmscan-let-gfp_nofs-go-to-swap-again +++ a/mm/vmscan.c @@ -672,6 +672,8 @@ static unsigned long shrink_page_list(st * Try to allocate it some swap space here. */ if (PageAnon(page) && !PageSwapCache(page)) { + if (!(sc->gfp_mask & __GFP_IO)) + goto keep_locked; switch (try_to_munlock(page)) { case SWAP_FAIL: /* shouldn't happen */ case SWAP_AGAIN: @@ -683,6 +685,7 @@ static unsigned long shrink_page_list(st } if (!add_to_swap(page, GFP_ATOMIC)) goto activate_locked; + may_enter_fs = 1; } #endif /* CONFIG_SWAP */ _ Patches currently in -mm which might be from hugh@xxxxxxxxxxx are origin.patch linux-next.patch sprint_symbol-use-less-stack.patch migration-fix-writepage-error.patch vmscan-let-gfp_nofs-go-to-swap-again.patch dont-unlink-an-active-swapfile.patch mm-implement-remap_pfn_range-with-apply_to_page_range.patch mm-apply_to_range-call-pte-function-with-lazy-updates.patch mm-remap_pfn_range-restore-missing-flush.patch prio_tree-debugging-patch.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html