mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-21 18:25:26 -04:00
f2fs: Use a folio in move_data_block()
Remove 11 hidden calls to compound_head(). Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Chao Yu <chao@kernel.org> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
committed by
Jaegeuk Kim
parent
0d53be2323
commit
2a96ddcb4a
17
fs/f2fs/gc.c
17
fs/f2fs/gc.c
@@ -1307,8 +1307,7 @@ static int move_data_block(struct inode *inode, block_t bidx,
|
||||
struct dnode_of_data dn;
|
||||
struct f2fs_summary sum;
|
||||
struct node_info ni;
|
||||
struct page *page;
|
||||
struct folio *mfolio;
|
||||
struct folio *folio, *mfolio;
|
||||
block_t newaddr;
|
||||
int err = 0;
|
||||
bool lfs_mode = f2fs_lfs_mode(fio.sbi);
|
||||
@@ -1317,9 +1316,9 @@ static int move_data_block(struct inode *inode, block_t bidx,
|
||||
CURSEG_ALL_DATA_ATGC : CURSEG_COLD_DATA;
|
||||
|
||||
/* do not read out */
|
||||
page = f2fs_grab_cache_page(mapping, bidx, false);
|
||||
if (!page)
|
||||
return -ENOMEM;
|
||||
folio = f2fs_grab_cache_folio(mapping, bidx, false);
|
||||
if (IS_ERR(folio))
|
||||
return PTR_ERR(folio);
|
||||
|
||||
if (!check_valid_map(F2FS_I_SB(inode), segno, off)) {
|
||||
err = -ENOENT;
|
||||
@@ -1336,7 +1335,7 @@ static int move_data_block(struct inode *inode, block_t bidx,
|
||||
goto out;
|
||||
|
||||
if (unlikely(dn.data_blkaddr == NULL_ADDR)) {
|
||||
ClearPageUptodate(page);
|
||||
folio_clear_uptodate(folio);
|
||||
err = -ENOENT;
|
||||
goto put_out;
|
||||
}
|
||||
@@ -1345,7 +1344,7 @@ static int move_data_block(struct inode *inode, block_t bidx,
|
||||
* don't cache encrypted data into meta inode until previous dirty
|
||||
* data were writebacked to avoid racing between GC and flush.
|
||||
*/
|
||||
f2fs_wait_on_page_writeback(page, DATA, true, true);
|
||||
f2fs_folio_wait_writeback(folio, DATA, true, true);
|
||||
|
||||
f2fs_wait_on_block_writeback(inode, dn.data_blkaddr);
|
||||
|
||||
@@ -1354,7 +1353,7 @@ static int move_data_block(struct inode *inode, block_t bidx,
|
||||
goto put_out;
|
||||
|
||||
/* read page */
|
||||
fio.page = page;
|
||||
fio.page = &folio->page;
|
||||
fio.new_blkaddr = fio.old_blkaddr = dn.data_blkaddr;
|
||||
|
||||
if (lfs_mode)
|
||||
@@ -1445,7 +1444,7 @@ static int move_data_block(struct inode *inode, block_t bidx,
|
||||
put_out:
|
||||
f2fs_put_dnode(&dn);
|
||||
out:
|
||||
f2fs_put_page(page, 1);
|
||||
f2fs_folio_put(folio, true);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user