From: Christoph Hellwig Date: Mon, 2 Feb 2026 06:06:30 +0000 (+0100) Subject: fsverity: don't issue readahead for non-ENOENT errors from __filemap_get_folio X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=23eec9fd64b2889286f31340371d67babfe54155;p=thirdparty%2Fkernel%2Flinux.git fsverity: don't issue readahead for non-ENOENT errors from __filemap_get_folio Issuing more reads on errors is not a good idea, especially when the most common error here is -ENOMEM. Signed-off-by: Christoph Hellwig Reviewed-by: Jan Kara Link: https://lore.kernel.org/r/20260202060754.270269-2-hch@lst.de Signed-off-by: Eric Biggers --- diff --git a/fs/verity/pagecache.c b/fs/verity/pagecache.c index 01c652bc802f3..1a88decace537 100644 --- a/fs/verity/pagecache.c +++ b/fs/verity/pagecache.c @@ -22,7 +22,8 @@ struct page *generic_read_merkle_tree_page(struct inode *inode, pgoff_t index, struct folio *folio; folio = __filemap_get_folio(inode->i_mapping, index, FGP_ACCESSED, 0); - if (IS_ERR(folio) || !folio_test_uptodate(folio)) { + if (folio == ERR_PTR(-ENOENT) || + (!IS_ERR(folio) && !folio_test_uptodate(folio))) { DEFINE_READAHEAD(ractl, NULL, NULL, inode->i_mapping, index); if (!IS_ERR(folio)) @@ -30,9 +31,9 @@ struct page *generic_read_merkle_tree_page(struct inode *inode, pgoff_t index, else if (num_ra_pages > 1) page_cache_ra_unbounded(&ractl, num_ra_pages, 0); folio = read_mapping_folio(inode->i_mapping, index, NULL); - if (IS_ERR(folio)) - return ERR_CAST(folio); } + if (IS_ERR(folio)) + return ERR_CAST(folio); return folio_file_page(folio, index); } EXPORT_SYMBOL_GPL(generic_read_merkle_tree_page);