mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 12:42:02 +00:00
f2fs: convert f2fs_read_single_page() to use folio
Convert f2fs_read_single_page() to use folio and related functionality. Signed-off-by: Chao Yu <chao@kernel.org> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
db92e6c729
commit
ed54eed355
@ -2063,7 +2063,7 @@ static inline loff_t f2fs_readpage_limit(struct inode *inode)
|
||||
return i_size_read(inode);
|
||||
}
|
||||
|
||||
static int f2fs_read_single_page(struct inode *inode, struct page *page,
|
||||
static int f2fs_read_single_page(struct inode *inode, struct folio *folio,
|
||||
unsigned nr_pages,
|
||||
struct f2fs_map_blocks *map,
|
||||
struct bio **bio_ret,
|
||||
@ -2076,9 +2076,10 @@ static int f2fs_read_single_page(struct inode *inode, struct page *page,
|
||||
sector_t last_block;
|
||||
sector_t last_block_in_file;
|
||||
sector_t block_nr;
|
||||
pgoff_t index = folio_index(folio);
|
||||
int ret = 0;
|
||||
|
||||
block_in_file = (sector_t)page_index(page);
|
||||
block_in_file = (sector_t)index;
|
||||
last_block = block_in_file + nr_pages;
|
||||
last_block_in_file = bytes_to_blks(inode,
|
||||
f2fs_readpage_limit(inode) + blocksize - 1);
|
||||
@ -2109,7 +2110,7 @@ static int f2fs_read_single_page(struct inode *inode, struct page *page,
|
||||
got_it:
|
||||
if ((map->m_flags & F2FS_MAP_MAPPED)) {
|
||||
block_nr = map->m_pblk + block_in_file - map->m_lblk;
|
||||
SetPageMappedToDisk(page);
|
||||
folio_set_mappedtodisk(folio);
|
||||
|
||||
if (!f2fs_is_valid_blkaddr(F2FS_I_SB(inode), block_nr,
|
||||
DATA_GENERIC_ENHANCE_READ)) {
|
||||
@ -2118,15 +2119,15 @@ got_it:
|
||||
}
|
||||
} else {
|
||||
zero_out:
|
||||
zero_user_segment(page, 0, PAGE_SIZE);
|
||||
if (f2fs_need_verity(inode, page->index) &&
|
||||
!fsverity_verify_page(page)) {
|
||||
folio_zero_segment(folio, 0, folio_size(folio));
|
||||
if (f2fs_need_verity(inode, index) &&
|
||||
!fsverity_verify_folio(folio)) {
|
||||
ret = -EIO;
|
||||
goto out;
|
||||
}
|
||||
if (!PageUptodate(page))
|
||||
SetPageUptodate(page);
|
||||
unlock_page(page);
|
||||
if (!folio_test_uptodate(folio))
|
||||
folio_mark_uptodate(folio);
|
||||
folio_unlock(folio);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -2136,14 +2137,14 @@ zero_out:
|
||||
*/
|
||||
if (bio && (!page_is_mergeable(F2FS_I_SB(inode), bio,
|
||||
*last_block_in_bio, block_nr) ||
|
||||
!f2fs_crypt_mergeable_bio(bio, inode, page->index, NULL))) {
|
||||
!f2fs_crypt_mergeable_bio(bio, inode, index, NULL))) {
|
||||
submit_and_realloc:
|
||||
f2fs_submit_read_bio(F2FS_I_SB(inode), bio, DATA);
|
||||
bio = NULL;
|
||||
}
|
||||
if (bio == NULL) {
|
||||
bio = f2fs_grab_read_bio(inode, block_nr, nr_pages,
|
||||
is_readahead ? REQ_RAHEAD : 0, page->index,
|
||||
is_readahead ? REQ_RAHEAD : 0, index,
|
||||
false);
|
||||
if (IS_ERR(bio)) {
|
||||
ret = PTR_ERR(bio);
|
||||
@ -2158,7 +2159,7 @@ submit_and_realloc:
|
||||
*/
|
||||
f2fs_wait_on_block_writeback(inode, block_nr);
|
||||
|
||||
if (bio_add_page(bio, page, blocksize, 0) < blocksize)
|
||||
if (!bio_add_folio(bio, folio, blocksize, 0))
|
||||
goto submit_and_realloc;
|
||||
|
||||
inc_page_count(F2FS_I_SB(inode), F2FS_RD_DATA);
|
||||
@ -2424,7 +2425,7 @@ static int f2fs_mpage_readpages(struct inode *inode,
|
||||
read_single_page:
|
||||
#endif
|
||||
|
||||
ret = f2fs_read_single_page(inode, &folio->page, max_nr_pages, &map,
|
||||
ret = f2fs_read_single_page(inode, folio, max_nr_pages, &map,
|
||||
&bio, &last_block_in_bio, rac);
|
||||
if (ret) {
|
||||
#ifdef CONFIG_F2FS_FS_COMPRESSION
|
||||
|
Loading…
Reference in New Issue
Block a user