On Mon, Jan 06, 2020 at 10:15:08AM -0800, Jaegeuk Kim wrote: > > static struct page *f2fs_read_merkle_tree_page(struct inode *inode, > > - pgoff_t index) > > + pgoff_t index, > > + unsigned long num_ra_pages) > > { > > + struct page *page; > > + > > index += f2fs_verity_metadata_pos(inode) >> PAGE_SHIFT; > > > > - return read_mapping_page(inode->i_mapping, index, NULL); > > + page = find_get_page(inode->i_mapping, index); > > + if (!page || !PageUptodate(page)) { > > + if (page) > > + put_page(page); > > + else if (num_ra_pages > 1) > > + f2fs_merkle_tree_readahead(inode->i_mapping, index, > > + num_ra_pages); > > + page = read_mapping_page(inode->i_mapping, index, NULL); > > + if (IS_ERR(page)) > > + return page; > > We don't need to check this, but can use the below return page? > Indeed, I'll remove the unnecessary IS_ERR(page) check. > > + } > > mark_page_accessed(page)? > > > + return page; > > } Good idea, but read_mapping_page() already calls mark_page_accessed(). It's just find_get_page() that doesn't. So after this patch, mark_page_accessed() is no longer called in the case where the page is already cached and Uptodate. I'll change it to use: find_get_page_flags(inode->i_mapping, index, FGP_ACCESSED); - Eric