X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=mm%2Frmap.c;h=59da5b734c801c6186621fa5dabf94108268fd51;hb=ded1504dfa0083661fdd1a0a5f021cb7313ffe04;hp=22ed3f71a67421831f12b0deffa915eacf5d1db7;hpb=5cb69bcacea70024252138a9cb4229a142a93389;p=powerpc.git diff --git a/mm/rmap.c b/mm/rmap.c index 22ed3f71a6..59da5b734c 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -498,9 +498,11 @@ int page_mkclean(struct page *page) struct address_space *mapping = page_mapping(page); if (mapping) ret = page_mkclean_file(mapping, page); + if (page_test_dirty(page)) { + page_clear_dirty(page); + ret = 1; + } } - if (page_test_and_clear_dirty(page)) - ret = 1; return ret; } @@ -605,8 +607,10 @@ void page_remove_rmap(struct page *page, struct vm_area_struct *vma) * Leaving it set also helps swapoff to reinstate ptes * faster for those pages still in swapcache. */ - if (page_test_and_clear_dirty(page)) + if (page_test_dirty(page)) { + page_clear_dirty(page); set_page_dirty(page); + } __dec_zone_page_state(page, PageAnon(page) ? NR_ANON_PAGES : NR_FILE_MAPPED); }