Re: [PATCH v2 1/2] mm: clear pte for folios that are zero filled

From: Matthew Wilcox
Date: Tue Jun 04 2024 - 08:18:36 EST


On Tue, Jun 04, 2024 at 11:58:24AM +0100, Usama Arif wrote:
> +++ b/mm/rmap.c
> @@ -1819,96 +1819,101 @@ static bool try_to_unmap_one(struct folio *folio, struct vm_area_struct *vma,
> */
> dec_mm_counter(mm, mm_counter(folio));
> } else if (folio_test_anon(folio)) {
> - swp_entry_t entry = page_swap_entry(subpage);
> - pte_t swp_pte;
> - /*
> - * Store the swap location in the pte.
> - * See handle_pte_fault() ...
> - */
> - if (unlikely(folio_test_swapbacked(folio) !=
> - folio_test_swapcache(folio))) {
> + if (flags & TTU_ZERO_FOLIO) {
> + pte_clear(mm, address, pvmw.pte);
> + dec_mm_counter(mm, MM_ANONPAGES);
> + } else {

This is very hard to review. Is what you've done the same as:

if (flags & TTU_ZERO_FOLIO) {
pte_clear(mm, address, pvmw.pte);
dec_mm_counter(mm, MM_ANONPAGES);
goto discard;
}

? I genuinely can't tell.