Merge patch series "fs/buffer: split pagecache lookups into atomic or blocking"
authorChristian Brauner <brauner@kernel.org>
Tue, 22 Apr 2025 07:50:32 +0000 (09:50 +0200)
committerChristian Brauner <brauner@kernel.org>
Tue, 22 Apr 2025 16:16:09 +0000 (18:16 +0200)
commit53f7eedd88d144d8d1a83cad5fba1fb75b22b19d
tree1ec506089a27903c16eb743dcd238290518261ea
parent559a0d7bf1a6e5a5d0ad4ab4b0089145042e3109
parent2d900efff915fe24c3948d28eef9078953d87fec
Merge patch series "fs/buffer: split pagecache lookups into atomic or blocking"

Davidlohr Bueso <dave@stgolabs.net> says:

This is a respin of the series[0] to address the sleep in atomic
scenarios for noref migration with large folios, introduced in:

      3c20917120ce61 ("block/bdev: enable large folio support for large logical block sizes")

The main difference is that it removes the first patch and moves the fix
(reducing the i_private_lock critical region in the migration path) to
the final patch, which also introduces the new BH_Migrate flag. It also
simplifies the locking scheme in patch 1 to avoid folio trylocking in
the atomic lookup cases. So essentially blocking users will take the
folio lock and hence wait for migration, and otherwise nonblocking
callers will bail the lookup if a noref migration is on-going. Blocking
callers will also benefit from potential performance gains by reducing
contention on the spinlock for bdev mappings.

* patches from https://lore.kernel.org/20250418015921.132400-1-dave@stgolabs.net:
  mm/migrate: fix sleep in atomic for large folios and buffer heads
  fs/ext4: use sleeping version of sb_find_get_block()
  fs/jbd2: use sleeping version of __find_get_block()
  fs/ocfs2: use sleeping version of __find_get_block()
  fs/buffer: use sleeping version of __find_get_block()
  fs/buffer: introduce sleeping flavors for pagecache lookups
  fs/buffer: split locking for pagecache lookups

Link: https://lore.kernel.org/20250418015921.132400-1-dave@stgolabs.net
Signed-off-by: Christian Brauner <brauner@kernel.org>