diff options
| author | Davidlohr Bueso <[email protected]> | 2025-04-18 01:59:21 +0000 |
|---|---|---|
| committer | Christian Brauner <[email protected]> | 2025-04-22 16:16:08 +0000 |
| commit | 2d900efff915fe24c3948d28eef9078953d87fec (patch) | |
| tree | 1ec506089a27903c16eb743dcd238290518261ea /drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | |
| parent | fs/ext4: use sleeping version of sb_find_get_block() (diff) | |
| download | kernel-2d900efff915fe24c3948d28eef9078953d87fec.tar.gz kernel-2d900efff915fe24c3948d28eef9078953d87fec.zip | |
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
ebdf4de5642fb6 ("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: 3c20917120ce61 ("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]>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_object.c')
0 files changed, 0 insertions, 0 deletions
