Loading fs/f2fs/data.c +7 −5 Original line number Diff line number Diff line Loading @@ -280,8 +280,8 @@ struct page *get_lock_data_page(struct inode *inode, pgoff_t index) * Also, caller should grab and release a mutex by calling mutex_lock_op() and * mutex_unlock_op(). */ struct page *get_new_data_page(struct inode *inode, pgoff_t index, bool new_i_size) struct page *get_new_data_page(struct inode *inode, struct page *npage, pgoff_t index, bool new_i_size) { struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb); struct address_space *mapping = inode->i_mapping; Loading @@ -289,17 +289,19 @@ struct page *get_new_data_page(struct inode *inode, pgoff_t index, struct dnode_of_data dn; int err; set_new_dnode(&dn, inode, NULL, NULL, 0); set_new_dnode(&dn, inode, npage, npage, 0); err = get_dnode_of_data(&dn, index, ALLOC_NODE); if (err) return ERR_PTR(err); if (dn.data_blkaddr == NULL_ADDR) { if (reserve_new_block(&dn)) { if (!npage) f2fs_put_dnode(&dn); return ERR_PTR(-ENOSPC); } } if (!npage) f2fs_put_dnode(&dn); repeat: page = grab_cache_page(mapping, index); Loading fs/f2fs/dir.c +2 −2 Original line number Diff line number Diff line Loading @@ -287,7 +287,7 @@ static int make_empty_dir(struct inode *inode, struct inode *parent) struct f2fs_dir_entry *de; void *kaddr; dentry_page = get_new_data_page(inode, 0, true); dentry_page = get_new_data_page(inode, NULL, 0, true); if (IS_ERR(dentry_page)) return PTR_ERR(dentry_page); Loading Loading @@ -448,7 +448,7 @@ int __f2fs_add_link(struct inode *dir, const struct qstr *name, struct inode *in bidx = dir_block_index(level, (le32_to_cpu(dentry_hash) % nbucket)); for (block = bidx; block <= (bidx + nblock - 1); block++) { dentry_page = get_new_data_page(dir, block, true); dentry_page = get_new_data_page(dir, NULL, block, true); if (IS_ERR(dentry_page)) return PTR_ERR(dentry_page); Loading fs/f2fs/f2fs.h +1 −1 Original line number Diff line number Diff line Loading @@ -1027,7 +1027,7 @@ int reserve_new_block(struct dnode_of_data *); void update_extent_cache(block_t, struct dnode_of_data *); struct page *find_data_page(struct inode *, pgoff_t, bool); struct page *get_lock_data_page(struct inode *, pgoff_t); struct page *get_new_data_page(struct inode *, pgoff_t, bool); struct page *get_new_data_page(struct inode *, struct page *, pgoff_t, bool); int f2fs_readpage(struct f2fs_sb_info *, struct page *, block_t, int); int do_write_data_page(struct page *); Loading fs/f2fs/file.c +1 −1 Original line number Diff line number Diff line Loading @@ -387,7 +387,7 @@ static void fill_zero(struct inode *inode, pgoff_t index, f2fs_balance_fs(sbi); ilock = mutex_lock_op(sbi); page = get_new_data_page(inode, index, false); page = get_new_data_page(inode, NULL, index, false); mutex_unlock_op(sbi, ilock); if (!IS_ERR(page)) { Loading Loading
fs/f2fs/data.c +7 −5 Original line number Diff line number Diff line Loading @@ -280,8 +280,8 @@ struct page *get_lock_data_page(struct inode *inode, pgoff_t index) * Also, caller should grab and release a mutex by calling mutex_lock_op() and * mutex_unlock_op(). */ struct page *get_new_data_page(struct inode *inode, pgoff_t index, bool new_i_size) struct page *get_new_data_page(struct inode *inode, struct page *npage, pgoff_t index, bool new_i_size) { struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb); struct address_space *mapping = inode->i_mapping; Loading @@ -289,17 +289,19 @@ struct page *get_new_data_page(struct inode *inode, pgoff_t index, struct dnode_of_data dn; int err; set_new_dnode(&dn, inode, NULL, NULL, 0); set_new_dnode(&dn, inode, npage, npage, 0); err = get_dnode_of_data(&dn, index, ALLOC_NODE); if (err) return ERR_PTR(err); if (dn.data_blkaddr == NULL_ADDR) { if (reserve_new_block(&dn)) { if (!npage) f2fs_put_dnode(&dn); return ERR_PTR(-ENOSPC); } } if (!npage) f2fs_put_dnode(&dn); repeat: page = grab_cache_page(mapping, index); Loading
fs/f2fs/dir.c +2 −2 Original line number Diff line number Diff line Loading @@ -287,7 +287,7 @@ static int make_empty_dir(struct inode *inode, struct inode *parent) struct f2fs_dir_entry *de; void *kaddr; dentry_page = get_new_data_page(inode, 0, true); dentry_page = get_new_data_page(inode, NULL, 0, true); if (IS_ERR(dentry_page)) return PTR_ERR(dentry_page); Loading Loading @@ -448,7 +448,7 @@ int __f2fs_add_link(struct inode *dir, const struct qstr *name, struct inode *in bidx = dir_block_index(level, (le32_to_cpu(dentry_hash) % nbucket)); for (block = bidx; block <= (bidx + nblock - 1); block++) { dentry_page = get_new_data_page(dir, block, true); dentry_page = get_new_data_page(dir, NULL, block, true); if (IS_ERR(dentry_page)) return PTR_ERR(dentry_page); Loading
fs/f2fs/f2fs.h +1 −1 Original line number Diff line number Diff line Loading @@ -1027,7 +1027,7 @@ int reserve_new_block(struct dnode_of_data *); void update_extent_cache(block_t, struct dnode_of_data *); struct page *find_data_page(struct inode *, pgoff_t, bool); struct page *get_lock_data_page(struct inode *, pgoff_t); struct page *get_new_data_page(struct inode *, pgoff_t, bool); struct page *get_new_data_page(struct inode *, struct page *, pgoff_t, bool); int f2fs_readpage(struct f2fs_sb_info *, struct page *, block_t, int); int do_write_data_page(struct page *); Loading
fs/f2fs/file.c +1 −1 Original line number Diff line number Diff line Loading @@ -387,7 +387,7 @@ static void fill_zero(struct inode *inode, pgoff_t index, f2fs_balance_fs(sbi); ilock = mutex_lock_op(sbi); page = get_new_data_page(inode, index, false); page = get_new_data_page(inode, NULL, index, false); mutex_unlock_op(sbi, ilock); if (!IS_ERR(page)) { Loading