Skip to content
Unverified Commit 2d900eff authored by Davidlohr Bueso's avatar Davidlohr Bueso Committed by Christian Brauner
Browse files

mm/migrate: fix sleep in atomic for large folios and buffer heads



The large folio + buffer head noref migration scenarios are
being naughty and blocking while holding a spinlock.

As a consequence of the pagecache lookup path taking the
folio lock this serializes against migration paths, so
they can wait for each other. For the private_lock
atomic case, a new BH_Migrate flag is introduced which
enables the lookup to bail.

This allows the critical region of the private_lock on
the migration path to be reduced to the way it was before
ebdf4de5 ("mm: migrate: fix reference  check race
between __find_get_block() and migration"), that is covering
the count checks.

The scope is always noref migration.

Reported-by: default avatarkernel test robot <oliver.sang@intel.com>
Reported-by: default avatar <syzbot+f3c6fda1297c748a7076@syzkaller.appspotmail.com>
Closes: https://lore.kernel.org/oe-lkp/202503101536.27099c77-lkp@intel.com


Fixes: 3c209171 ("block/bdev: enable large folio support for large logical block sizes")
Reviewed-by: default avatarJan Kara <jack@suse.cz>
Co-developed-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
Signed-off-by: default avatarDavidlohr Bueso <dave@stgolabs.net>
Link: https://kdevops.org/ext4/v6.15-rc2.html # [0]
Link: https://lore.kernel.org/all/aAAEvcrmREWa1SKF@bombadil.infradead.org/ # [1]
Link: https://lore.kernel.org/20250418015921.132400-8-dave@stgolabs.net


Tested-by: kdevops@lists.linux.dev # [0] [1]
Reviewed-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent 6e8f57fd
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment