On Sat, Mar 29, 2025 at 11:47:30PM -0700, Luis Chamberlain wrote: > However tracing shows that folio_mc_copy() *isn't* being called > as often as we'd expect from buffer_migrate_folio_norefs() path > as we're likely bailing early now thanks to the check added by commit > 060913999d7a ("mm: migrate: support poisoned recover from migrate > folio"). Umm. You're saying that most folios we try to migrate have extra refs? That seems unexpected; does it indicate a bug in 060913999d7a? > +++ b/mm/migrate.c > @@ -751,6 +751,8 @@ static int __migrate_folio(struct address_space *mapping, struct folio *dst, > { > int rc, expected_count = folio_expected_refs(mapping, src); > > + might_sleep(); We deliberately don't sleep when the folio is only a single page. So this needs to be: might_sleep_if(folio_test_large(folio)); > /* Check whether src does not have extra refs before we do more work */ > if (folio_ref_count(src) != expected_count) > return -EAGAIN; > -- > 2.47.2 >