Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

f2fs: use f2fs_get_node_page when write inline data

We just need inode page when write inline data, use
f2fs_get_node_page() to get it instead of using dnode_of_data,
which can eliminate unnecessary struct use.

Signed-off-by: Zijie Wang <wangzijie1@honor.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>

authored by

Zijie Wang and committed by
Jaegeuk Kim
f97a11c8 6f092b55

+11 -12
+11 -12
fs/f2fs/inline.c
··· 262 262 263 263 int f2fs_write_inline_data(struct inode *inode, struct page *page) 264 264 { 265 - struct dnode_of_data dn; 266 - int err; 265 + struct f2fs_sb_info *sbi = F2FS_I_SB(inode); 266 + struct page *ipage; 267 267 268 - set_new_dnode(&dn, inode, NULL, NULL, 0); 269 - err = f2fs_get_dnode_of_data(&dn, 0, LOOKUP_NODE); 270 - if (err) 271 - return err; 268 + ipage = f2fs_get_node_page(sbi, inode->i_ino); 269 + if (IS_ERR(ipage)) 270 + return PTR_ERR(ipage); 272 271 273 272 if (!f2fs_has_inline_data(inode)) { 274 - f2fs_put_dnode(&dn); 273 + f2fs_put_page(ipage, 1); 275 274 return -EAGAIN; 276 275 } 277 276 278 277 f2fs_bug_on(F2FS_I_SB(inode), page->index); 279 278 280 - f2fs_wait_on_page_writeback(dn.inode_page, NODE, true, true); 281 - memcpy_from_page(inline_data_addr(inode, dn.inode_page), 279 + f2fs_wait_on_page_writeback(ipage, NODE, true, true); 280 + memcpy_from_page(inline_data_addr(inode, ipage), 282 281 page, 0, MAX_INLINE_DATA(inode)); 283 - set_page_dirty(dn.inode_page); 282 + set_page_dirty(ipage); 284 283 285 284 f2fs_clear_page_cache_dirty_tag(page); 286 285 287 286 set_inode_flag(inode, FI_APPEND_WRITE); 288 287 set_inode_flag(inode, FI_DATA_EXIST); 289 288 290 - clear_page_private_inline(dn.inode_page); 291 - f2fs_put_dnode(&dn); 289 + clear_page_private_inline(ipage); 290 + f2fs_put_page(ipage, 1); 292 291 return 0; 293 292 } 294 293