From: Peter Zijlstra Now that we can detect writers of shared mappings, throttle them. Avoids OOM by surprise. Signed-off-by: Peter Zijlstra Cc: Nick Piggin Cc: Hugh Dickins Cc: Christoph Lameter Signed-off-by: Andrew Morton --- mm/memory.c | 7 +++++++ 1 file changed, 7 insertions(+) diff -puN mm/memory.c~throttle-writers-of-shared-mappings mm/memory.c --- devel/mm/memory.c~throttle-writers-of-shared-mappings 2006-05-17 13:09:45.000000000 -0700 +++ devel-akpm/mm/memory.c 2006-05-17 13:09:45.000000000 -0700 @@ -49,6 +49,7 @@ #include #include #include +#include #include #include @@ -2163,8 +2164,11 @@ retry: unlock: pte_unmap_unlock(page_table, ptl); if (dirty_page) { + struct address_space *mapping = page_mapping(dirty_page); set_page_dirty(dirty_page); put_page(dirty_page); + if (mapping) + balance_dirty_pages_ratelimited_nr(mapping, 1); } return ret; oom: @@ -2284,8 +2288,11 @@ static inline int handle_pte_fault(struc unlock: pte_unmap_unlock(pte, ptl); if (dirty_page) { + struct address_space *mapping = page_mapping(dirty_page); set_page_dirty(dirty_page); put_page(dirty_page); + if (mapping) + balance_dirty_pages_ratelimited_nr(mapping, 1); } return VM_FAULT_MINOR; } _