On Mon, Jan 13, 2025 at 03:28:43PM +0000, Matthew Wilcox wrote: > 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? Hm. Good catch. We might want to drop clean dropbehind pages instead migrating them. But I am not sure about dirty ones. With slow backing storage it might be better for the system to migrate them instead of keeping them in the old place for potentially long time. Any opinions? > > +++ 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? I see lru_move_tail() being used by lru_add_drain_cpu(). -- Kiryl Shutsemau / Kirill A. Shutemov