forked from Minki/linux
mm: Dirty accountable change only apply to non prot numa case
So move it within the if loop Acked-by: Mel Gorman <mgorman@suse.de> Reviewed-by: Rik van Riel <riel@redhat.com> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
88247e8d7b
commit
9d85d5863f
@ -58,6 +58,13 @@ static unsigned long change_pte_range(struct vm_area_struct *vma, pmd_t *pmd,
|
|||||||
if (pte_numa(ptent))
|
if (pte_numa(ptent))
|
||||||
ptent = pte_mknonnuma(ptent);
|
ptent = pte_mknonnuma(ptent);
|
||||||
ptent = pte_modify(ptent, newprot);
|
ptent = pte_modify(ptent, newprot);
|
||||||
|
/*
|
||||||
|
* Avoid taking write faults for pages we
|
||||||
|
* know to be dirty.
|
||||||
|
*/
|
||||||
|
if (dirty_accountable && pte_dirty(ptent))
|
||||||
|
ptent = pte_mkwrite(ptent);
|
||||||
|
ptep_modify_prot_commit(mm, addr, pte, ptent);
|
||||||
updated = true;
|
updated = true;
|
||||||
} else {
|
} else {
|
||||||
struct page *page;
|
struct page *page;
|
||||||
@ -72,22 +79,8 @@ static unsigned long change_pte_range(struct vm_area_struct *vma, pmd_t *pmd,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Avoid taking write faults for pages we know to be
|
|
||||||
* dirty.
|
|
||||||
*/
|
|
||||||
if (dirty_accountable && pte_dirty(ptent)) {
|
|
||||||
ptent = pte_mkwrite(ptent);
|
|
||||||
updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (updated)
|
if (updated)
|
||||||
pages++;
|
pages++;
|
||||||
|
|
||||||
/* Only !prot_numa always clears the pte */
|
|
||||||
if (!prot_numa)
|
|
||||||
ptep_modify_prot_commit(mm, addr, pte, ptent);
|
|
||||||
} else if (IS_ENABLED(CONFIG_MIGRATION) && !pte_file(oldpte)) {
|
} else if (IS_ENABLED(CONFIG_MIGRATION) && !pte_file(oldpte)) {
|
||||||
swp_entry_t entry = pte_to_swp_entry(oldpte);
|
swp_entry_t entry = pte_to_swp_entry(oldpte);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user