Re: [PATCH 1/3] mm/migrate: add might_sleep() on __migrate_folio()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
> 




[Index of Archives]     [Reiser Filesystem Development]     [Ceph FS]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite National Park]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Media]

  Powered by Linux