Commit 03fcb1ab authored by Nikolay Borisov's avatar Nikolay Borisov Committed by David Sterba

btrfs: make btrfs_insert_replace_extent take btrfs_inode

Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: default avatarNikolay Borisov <nborisov@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent dea46d84
...@@ -2516,14 +2516,14 @@ static int btrfs_punch_hole_lock_range(struct inode *inode, ...@@ -2516,14 +2516,14 @@ static int btrfs_punch_hole_lock_range(struct inode *inode,
} }
static int btrfs_insert_replace_extent(struct btrfs_trans_handle *trans, static int btrfs_insert_replace_extent(struct btrfs_trans_handle *trans,
struct inode *inode, struct btrfs_inode *inode,
struct btrfs_path *path, struct btrfs_path *path,
struct btrfs_replace_extent_info *extent_info, struct btrfs_replace_extent_info *extent_info,
const u64 replace_len, const u64 replace_len,
const u64 bytes_to_drop) const u64 bytes_to_drop)
{ {
struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb); struct btrfs_fs_info *fs_info = trans->fs_info;
struct btrfs_root *root = BTRFS_I(inode)->root; struct btrfs_root *root = inode->root;
struct btrfs_file_extent_item *extent; struct btrfs_file_extent_item *extent;
struct extent_buffer *leaf; struct extent_buffer *leaf;
struct btrfs_key key; struct btrfs_key key;
...@@ -2536,11 +2536,11 @@ static int btrfs_insert_replace_extent(struct btrfs_trans_handle *trans, ...@@ -2536,11 +2536,11 @@ static int btrfs_insert_replace_extent(struct btrfs_trans_handle *trans,
if (extent_info->disk_offset == 0 && if (extent_info->disk_offset == 0 &&
btrfs_fs_incompat(fs_info, NO_HOLES)) { btrfs_fs_incompat(fs_info, NO_HOLES)) {
btrfs_update_inode_bytes(BTRFS_I(inode), 0, bytes_to_drop); btrfs_update_inode_bytes(inode, 0, bytes_to_drop);
return 0; return 0;
} }
key.objectid = btrfs_ino(BTRFS_I(inode)); key.objectid = btrfs_ino(inode);
key.type = BTRFS_EXTENT_DATA_KEY; key.type = BTRFS_EXTENT_DATA_KEY;
key.offset = extent_info->file_offset; key.offset = extent_info->file_offset;
ret = btrfs_insert_empty_item(trans, root, path, &key, ret = btrfs_insert_empty_item(trans, root, path, &key,
...@@ -2561,25 +2561,25 @@ static int btrfs_insert_replace_extent(struct btrfs_trans_handle *trans, ...@@ -2561,25 +2561,25 @@ static int btrfs_insert_replace_extent(struct btrfs_trans_handle *trans,
btrfs_mark_buffer_dirty(leaf); btrfs_mark_buffer_dirty(leaf);
btrfs_release_path(path); btrfs_release_path(path);
ret = btrfs_inode_set_file_extent_range(BTRFS_I(inode), ret = btrfs_inode_set_file_extent_range(inode, extent_info->file_offset,
extent_info->file_offset, replace_len); replace_len);
if (ret) if (ret)
return ret; return ret;
/* If it's a hole, nothing more needs to be done. */ /* If it's a hole, nothing more needs to be done. */
if (extent_info->disk_offset == 0) { if (extent_info->disk_offset == 0) {
btrfs_update_inode_bytes(BTRFS_I(inode), 0, bytes_to_drop); btrfs_update_inode_bytes(inode, 0, bytes_to_drop);
return 0; return 0;
} }
btrfs_update_inode_bytes(BTRFS_I(inode), replace_len, bytes_to_drop); btrfs_update_inode_bytes(inode, replace_len, bytes_to_drop);
if (extent_info->is_new_extent && extent_info->insertions == 0) { if (extent_info->is_new_extent && extent_info->insertions == 0) {
key.objectid = extent_info->disk_offset; key.objectid = extent_info->disk_offset;
key.type = BTRFS_EXTENT_ITEM_KEY; key.type = BTRFS_EXTENT_ITEM_KEY;
key.offset = extent_info->disk_len; key.offset = extent_info->disk_len;
ret = btrfs_alloc_reserved_file_extent(trans, root, ret = btrfs_alloc_reserved_file_extent(trans, root,
btrfs_ino(BTRFS_I(inode)), btrfs_ino(inode),
extent_info->file_offset, extent_info->file_offset,
extent_info->qgroup_reserved, extent_info->qgroup_reserved,
&key); &key);
...@@ -2591,7 +2591,7 @@ static int btrfs_insert_replace_extent(struct btrfs_trans_handle *trans, ...@@ -2591,7 +2591,7 @@ static int btrfs_insert_replace_extent(struct btrfs_trans_handle *trans,
extent_info->disk_len, 0); extent_info->disk_len, 0);
ref_offset = extent_info->file_offset - extent_info->data_offset; ref_offset = extent_info->file_offset - extent_info->data_offset;
btrfs_init_data_ref(&ref, root->root_key.objectid, btrfs_init_data_ref(&ref, root->root_key.objectid,
btrfs_ino(BTRFS_I(inode)), ref_offset); btrfs_ino(inode), ref_offset);
ret = btrfs_inc_extent_ref(trans, &ref); ret = btrfs_inc_extent_ref(trans, &ref);
} }
...@@ -2727,8 +2727,8 @@ int btrfs_replace_file_extents(struct inode *inode, struct btrfs_path *path, ...@@ -2727,8 +2727,8 @@ int btrfs_replace_file_extents(struct inode *inode, struct btrfs_path *path,
u64 replace_len = drop_args.drop_end - u64 replace_len = drop_args.drop_end -
extent_info->file_offset; extent_info->file_offset;
ret = btrfs_insert_replace_extent(trans, inode, path, ret = btrfs_insert_replace_extent(trans, BTRFS_I(inode),
extent_info, replace_len, path, extent_info, replace_len,
drop_args.bytes_found); drop_args.bytes_found);
if (ret) { if (ret) {
btrfs_abort_transaction(trans, ret); btrfs_abort_transaction(trans, ret);
...@@ -2826,8 +2826,8 @@ int btrfs_replace_file_extents(struct inode *inode, struct btrfs_path *path, ...@@ -2826,8 +2826,8 @@ int btrfs_replace_file_extents(struct inode *inode, struct btrfs_path *path,
} }
if (extent_info) { if (extent_info) {
ret = btrfs_insert_replace_extent(trans, inode, path, extent_info, ret = btrfs_insert_replace_extent(trans, BTRFS_I(inode), path,
extent_info->data_len, extent_info, extent_info->data_len,
drop_args.bytes_found); drop_args.bytes_found);
if (ret) { if (ret) {
btrfs_abort_transaction(trans, ret); btrfs_abort_transaction(trans, ret);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment