Re: [PATCH 8/8] mm: Remove PG_reclaim

From: Matthew Wilcox
Date: Mon Jan 13 2025 - 10:29:25 EST


On Mon, Jan 13, 2025 at 11:34:53AM +0200, Kirill A. Shutemov wrote:
> diff --git a/mm/migrate.c b/mm/migrate.c
> index caadbe393aa2..beba72da5e33 100644
> --- a/mm/migrate.c
> +++ b/mm/migrate.c
> @@ -686,6 +686,8 @@ void folio_migrate_flags(struct folio *newfolio, struct folio *folio)
> folio_set_young(newfolio);
> if (folio_test_idle(folio))
> folio_set_idle(newfolio);
> + if (folio_test_readahead(folio))
> + folio_set_readahead(newfolio);
>
> folio_migrate_refs(newfolio, folio);
> /*

Not a problem with this patch ... but aren't we missing a
test_dropbehind / set_dropbehind pair in this function? Or are we
prohibited from migrating a folio with the dropbehind flag set
somewhere?

> +++ b/mm/swap.c
> @@ -221,22 +221,6 @@ static void lru_move_tail(struct lruvec *lruvec, struct folio *folio)
> __count_vm_events(PGROTATED, folio_nr_pages(folio));
> }
>
> -/*
> - * Writeback is about to end against a folio which has been marked for
> - * immediate reclaim. If it still appears to be reclaimable, move it
> - * to the tail of the inactive list.
> - *
> - * folio_rotate_reclaimable() must disable IRQs, to prevent nasty races.
> - */
> -void folio_rotate_reclaimable(struct folio *folio)
> -{
> - if (folio_test_locked(folio) || folio_test_dirty(folio) ||
> - folio_test_unevictable(folio))
> - return;
> -
> - folio_batch_add_and_move(folio, lru_move_tail, true);
> -}

I think this is the last caller of lru_move_tail(), which means we can
get rid of fbatches->lru_move_tail and the local_lock that protects it.
Or did I miss something?