Introduce filemap_lock_folio_nowait() to allow non-blocking folio lock attempts using FGP_NOWAIT. This allows callers to avoid AB-BA deadlocks by dropping higher-level locks when a folio is already locked. Signed-off-by: Jinchao Wang --- include/linux/pagemap.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index 31a848485ad9..b9d818a9409b 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -825,6 +825,12 @@ static inline struct folio *filemap_lock_folio(struct address_space *mapping, return __filemap_get_folio(mapping, index, FGP_LOCK, 0); } +static inline struct folio *filemap_lock_folio_nowait(struct address_space *mapping, + pgoff_t index) +{ + return __filemap_get_folio(mapping, index, FGP_LOCK | FGP_NOWAIT, 0); +} + /** * filemap_grab_folio - grab a folio from the page cache * @mapping: The address space to search -- 2.43.0