mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
mm/filemap: use filemap_end_dropbehind() for read invalidation
commit25b065a744upstream. Use the filemap_end_dropbehind() helper rather than calling folio_unmap_invalidate() directly, as we need to check if the folio has been redirtied or marked for writeback once the folio lock has been re-acquired. Cc: stable@vger.kernel.org Reported-by: Trond Myklebust <trondmy@hammerspace.com> Fixes:8026e49bff("mm/filemap: add read support for RWF_DONTCACHE") Link: https://lore.kernel.org/linux-fsdevel/ba8a9805331ce258a622feaca266b163db681a10.camel@hammerspace.com/ Signed-off-by: Jens Axboe <axboe@kernel.dk> Link: https://lore.kernel.org/20250527133255.452431-3-axboe@kernel.dk Signed-off-by: Christian Brauner <brauner@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
0a471b2804
commit
411bf2a07a
@@ -2644,8 +2644,7 @@ static inline bool pos_same_folio(loff_t pos1, loff_t pos2, struct folio *folio)
|
||||
return (pos1 >> shift == pos2 >> shift);
|
||||
}
|
||||
|
||||
static void filemap_end_dropbehind_read(struct address_space *mapping,
|
||||
struct folio *folio)
|
||||
static void filemap_end_dropbehind_read(struct folio *folio)
|
||||
{
|
||||
if (!folio_test_dropbehind(folio))
|
||||
return;
|
||||
@@ -2653,7 +2652,7 @@ static void filemap_end_dropbehind_read(struct address_space *mapping,
|
||||
return;
|
||||
if (folio_trylock(folio)) {
|
||||
if (folio_test_clear_dropbehind(folio))
|
||||
folio_unmap_invalidate(mapping, folio, 0);
|
||||
filemap_end_dropbehind(folio);
|
||||
folio_unlock(folio);
|
||||
}
|
||||
}
|
||||
@@ -2774,7 +2773,7 @@ put_folios:
|
||||
for (i = 0; i < folio_batch_count(&fbatch); i++) {
|
||||
struct folio *folio = fbatch.folios[i];
|
||||
|
||||
filemap_end_dropbehind_read(mapping, folio);
|
||||
filemap_end_dropbehind_read(folio);
|
||||
folio_put(folio);
|
||||
}
|
||||
folio_batch_init(&fbatch);
|
||||
|
||||
Reference in New Issue
Block a user