diff --git a/[refs] b/[refs] index 03a87e02be81..ee90a5cd878d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 934b2857cc576ae53c92a66e63fce7ddcfa74691 +refs/heads/master: a4b526b3ba6353cd89a38e41da48ed83b0ead16f diff --git a/trunk/include/linux/page-flags.h b/trunk/include/linux/page-flags.h index 54590a9a103e..25aaccdb2f26 100644 --- a/trunk/include/linux/page-flags.h +++ b/trunk/include/linux/page-flags.h @@ -239,9 +239,6 @@ static inline void __SetPageUptodate(struct page *page) { smp_wmb(); __set_bit(PG_uptodate, &(page)->flags); -#ifdef CONFIG_S390 - page_clear_dirty(page); -#endif } static inline void SetPageUptodate(struct page *page) diff --git a/trunk/mm/rmap.c b/trunk/mm/rmap.c index 99bc3f9cd796..94a5246a3f98 100644 --- a/trunk/mm/rmap.c +++ b/trunk/mm/rmap.c @@ -667,7 +667,8 @@ 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_dirty(page)) { + if ((!PageAnon(page) || PageSwapCache(page)) && + page_test_dirty(page)) { page_clear_dirty(page); set_page_dirty(page); }