• Abhijit Karmarkar's avatar
    [PATCH] msync: check pte dirty earlier · b4955ce3
    Abhijit Karmarkar authored
    It's common practice to msync a large address range regularly, in which
    often only a few ptes have actually been dirtied since the previous pass.
    
    sync_pte_range then goes much faster if it tests whether pte is dirty
    before locating and accessing each struct page cacheline; and it is hardly
    slowed by ptep_clear_flush_dirty repeating that test in the opposite case,
    when every pte actually is dirty.
    
    But beware, s390's pte_dirty always says false, since its dirty bit is kept
    in the storage key, located via the struct page address.  So skip this
    optimization in its case: use a pte_maybe_dirty macro which just says true
    if page_test_and_clear_dirty is implemented.
    Signed-off-by: default avatarAbhijit Karmarkar <abhijitk@veritas.com>
    Signed-off-by: default avatarHugh Dickins <hugh@veritas.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    b4955ce3
msync.c 5.58 KB