mirror of https://gitee.com/openkylin/linux.git
btrfs: Make btrfs_pin_extent take trans handle
Preparation for switching pinned extent tracking to a per-transaction basis. Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
f603bb94ab
commit
b25c36f84b
|
@ -2463,8 +2463,8 @@ int btrfs_lookup_data_extent(struct btrfs_fs_info *fs_info, u64 start, u64 len);
|
|||
int btrfs_lookup_extent_info(struct btrfs_trans_handle *trans,
|
||||
struct btrfs_fs_info *fs_info, u64 bytenr,
|
||||
u64 offset, int metadata, u64 *refs, u64 *flags);
|
||||
int btrfs_pin_extent(struct btrfs_fs_info *fs_info,
|
||||
u64 bytenr, u64 num, int reserved);
|
||||
int btrfs_pin_extent(struct btrfs_trans_handle *trans, u64 bytenr, u64 num,
|
||||
int reserved);
|
||||
int btrfs_pin_extent_for_log_replay(struct btrfs_fs_info *fs_info,
|
||||
u64 bytenr, u64 num_bytes);
|
||||
int btrfs_exclude_logged_extents(struct extent_buffer *eb);
|
||||
|
|
|
@ -1705,8 +1705,7 @@ static int run_one_delayed_ref(struct btrfs_trans_handle *trans,
|
|||
|
||||
if (TRANS_ABORTED(trans)) {
|
||||
if (insert_reserved)
|
||||
btrfs_pin_extent(trans->fs_info, node->bytenr,
|
||||
node->num_bytes, 1);
|
||||
btrfs_pin_extent(trans, node->bytenr, node->num_bytes, 1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1721,8 +1720,7 @@ static int run_one_delayed_ref(struct btrfs_trans_handle *trans,
|
|||
else
|
||||
BUG();
|
||||
if (ret && insert_reserved)
|
||||
btrfs_pin_extent(trans->fs_info, node->bytenr,
|
||||
node->num_bytes, 1);
|
||||
btrfs_pin_extent(trans, node->bytenr, node->num_bytes, 1);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1867,8 +1865,7 @@ static int cleanup_ref_head(struct btrfs_trans_handle *trans,
|
|||
spin_unlock(&delayed_refs->lock);
|
||||
|
||||
if (head->must_insert_reserved) {
|
||||
btrfs_pin_extent(fs_info, head->bytenr,
|
||||
head->num_bytes, 1);
|
||||
btrfs_pin_extent(trans, head->bytenr, head->num_bytes, 1);
|
||||
if (head->is_data) {
|
||||
ret = btrfs_del_csums(trans, fs_info->csum_root,
|
||||
head->bytenr, head->num_bytes);
|
||||
|
@ -2612,14 +2609,12 @@ static int pin_down_extent(struct btrfs_block_group *cache,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int btrfs_pin_extent(struct btrfs_fs_info *fs_info,
|
||||
int btrfs_pin_extent(struct btrfs_trans_handle *trans,
|
||||
u64 bytenr, u64 num_bytes, int reserved)
|
||||
{
|
||||
struct btrfs_block_group *cache;
|
||||
|
||||
ASSERT(fs_info->running_transaction);
|
||||
|
||||
cache = btrfs_lookup_block_group(fs_info, bytenr);
|
||||
cache = btrfs_lookup_block_group(trans->fs_info, bytenr);
|
||||
BUG_ON(!cache); /* Logic error */
|
||||
|
||||
pin_down_extent(cache, bytenr, num_bytes, reserved);
|
||||
|
@ -3345,7 +3340,7 @@ int btrfs_free_extent(struct btrfs_trans_handle *trans, struct btrfs_ref *ref)
|
|||
(ref->type == BTRFS_REF_DATA &&
|
||||
ref->data_ref.ref_root == BTRFS_TREE_LOG_OBJECTID)) {
|
||||
/* unlocks the pinned mutex */
|
||||
btrfs_pin_extent(fs_info, ref->bytenr, ref->len, 1);
|
||||
btrfs_pin_extent(trans, ref->bytenr, ref->len, 1);
|
||||
old_ref_mod = new_ref_mod = 0;
|
||||
ret = 0;
|
||||
} else if (ref->type == BTRFS_REF_METADATA) {
|
||||
|
|
Loading…
Reference in New Issue