mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-10-31 06:14:39 +01:00
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 beforeebdf4de564("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: kernel test robot <[email protected]> Reported-by: [email protected] Closes: https://lore.kernel.org/oe-lkp/[email protected] Fixes:3c20917120("block/bdev: enable large folio support for large logical block sizes") Reviewed-by: Jan Kara <[email protected]> Co-developed-by: Luis Chamberlain <[email protected]> Signed-off-by: Davidlohr Bueso <[email protected]> Link: https://kdevops.org/ext4/v6.15-rc2.html # [0] Link: https://lore.kernel.org/all/[email protected]/ # [1] Link: https://lore.kernel.org/[email protected] Tested-by: [email protected] # [0] [1] Reviewed-by: Luis Chamberlain <[email protected]> Signed-off-by: Christian Brauner <[email protected]>