diff options
author | Matthew Wilcox <willy@infradead.org> | 2023-03-24 21:01:29 +0300 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2023-04-06 20:39:52 +0300 |
commit | e9ebecf266c6657de5865a02a47c0d6b2460c526 (patch) | |
tree | d0ac5a1617ec170334c29b1a7f029db6909c6f56 /fs/ext4 | |
parent | b23fb762785babc1d6194770c88432da037c8a64 (diff) | |
download | linux-e9ebecf266c6657de5865a02a47c0d6b2460c526.tar.xz |
ext4: Use a folio in ext4_read_merkle_tree_page
This is an implementation of fsverity_operations read_merkle_tree_page,
so it must still return the precise page asked for, but we can use the
folio API to reduce the number of conversions between folios & pages.
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Link: https://lore.kernel.org/r/20230324180129.1220691-30-willy@infradead.org
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'fs/ext4')
-rw-r--r-- | fs/ext4/verity.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/fs/ext4/verity.c b/fs/ext4/verity.c index afe847c967a4..3b01247066dd 100644 --- a/fs/ext4/verity.c +++ b/fs/ext4/verity.c @@ -361,21 +361,21 @@ static struct page *ext4_read_merkle_tree_page(struct inode *inode, pgoff_t index, unsigned long num_ra_pages) { - struct page *page; + struct folio *folio; index += ext4_verity_metadata_pos(inode) >> PAGE_SHIFT; - page = find_get_page_flags(inode->i_mapping, index, FGP_ACCESSED); - if (!page || !PageUptodate(page)) { + folio = __filemap_get_folio(inode->i_mapping, index, FGP_ACCESSED, 0); + if (!folio || !folio_test_uptodate(folio)) { DEFINE_READAHEAD(ractl, NULL, NULL, inode->i_mapping, index); - if (page) - put_page(page); + if (folio) + folio_put(folio); else if (num_ra_pages > 1) page_cache_ra_unbounded(&ractl, num_ra_pages, 0); - page = read_mapping_page(inode->i_mapping, index, NULL); + folio = read_mapping_folio(inode->i_mapping, index, NULL); } - return page; + return folio_file_page(folio, index); } static int ext4_write_merkle_tree_block(struct inode *inode, const void *buf, |