On Mon, 13 Sep 2010 12:13:47 +0530 Nikanth Karthikesan <knikanth@xxxxxxx> wrote: > On S390, the SetPageUptodate() clears the page dirty state, if page was not > PG_uptodate before. This seems to mark dirty pages read back from swap to be > marked as clean. Shouldn't page_clear_dirty() be called, only if page is not > flagged as dirty? To call page_clear_dirty() only if the page is not dirty would be wrong. s390 keeps the dirty bit in the per-page storage key. The I/O to read a page will set the per-page dirty bit. The PG_dirty bit of a page may or may not be set when SetPageUptodate is called. To clear the hardware dirty bit only if the software PG_dirty bit is set would result in lots of pages that still have the hardware dirty bit set. Please not that on x86 the dirty-bit is kept in the pte. Since a not up-to-date page can not have any mapper this means that the page won't have any hardware dirty-bits set (that says nothing about the software dirty bit PG_dirty). To create the same state for s390 we clear the storage key unconditionally. -- blue skies, Martin. "Reality continues to ruin my life." - Calvin. -- To unsubscribe from this list: send the line "unsubscribe linux-s390" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html