mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git
synced 2024-12-13 14:13:30 +08:00
btrfs-progs: pass @trans to functions working with dirty block groups
We are going to touch dirty_bgs in transaction directly, so every call chain should pass @trans to the leaf functions. Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: Su Yue <Damenly_Su@gmx.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
a0edc6859e
commit
162d891e4a
@ -6692,8 +6692,8 @@ static int delete_extent_records(struct btrfs_trans_handle *trans,
|
||||
u64 bytes = (found_key.type == BTRFS_EXTENT_ITEM_KEY) ?
|
||||
found_key.offset : fs_info->nodesize;
|
||||
|
||||
ret = btrfs_update_block_group(fs_info->extent_root,
|
||||
bytenr, bytes, 0, 0);
|
||||
ret = btrfs_update_block_group(trans, bytenr, bytes,
|
||||
0, 0);
|
||||
if (ret)
|
||||
break;
|
||||
}
|
||||
@ -6774,7 +6774,7 @@ static int record_extent(struct btrfs_trans_handle *trans,
|
||||
}
|
||||
|
||||
btrfs_mark_buffer_dirty(leaf);
|
||||
ret = btrfs_update_block_group(extent_root, rec->start,
|
||||
ret = btrfs_update_block_group(trans, rec->start,
|
||||
rec->max_size, 1, 0);
|
||||
if (ret)
|
||||
goto fail;
|
||||
|
@ -735,7 +735,7 @@ static int repair_tree_block_ref(struct btrfs_root *root,
|
||||
}
|
||||
btrfs_mark_buffer_dirty(eb);
|
||||
printf("Added an extent item [%llu %u]\n", bytenr, node_size);
|
||||
btrfs_update_block_group(extent_root, bytenr, node_size, 1, 0);
|
||||
btrfs_update_block_group(trans, bytenr, node_size, 1, 0);
|
||||
|
||||
nrefs->refs[level] = 0;
|
||||
nrefs->full_backref[level] =
|
||||
@ -3303,8 +3303,8 @@ static int repair_extent_data_item(struct btrfs_root *root,
|
||||
btrfs_set_extent_flags(eb, ei, BTRFS_EXTENT_FLAG_DATA);
|
||||
|
||||
btrfs_mark_buffer_dirty(eb);
|
||||
ret = btrfs_update_block_group(extent_root, disk_bytenr,
|
||||
num_bytes, 1, 0);
|
||||
ret = btrfs_update_block_group(trans, disk_bytenr, num_bytes,
|
||||
1, 0);
|
||||
btrfs_release_path(&path);
|
||||
}
|
||||
|
||||
|
@ -1084,7 +1084,7 @@ err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int block_group_free_all_extent(struct btrfs_root *root,
|
||||
static int block_group_free_all_extent(struct btrfs_trans_handle *trans,
|
||||
struct block_group_record *bg)
|
||||
{
|
||||
struct btrfs_block_group_cache *cache;
|
||||
@ -1092,7 +1092,7 @@ static int block_group_free_all_extent(struct btrfs_root *root,
|
||||
u64 start;
|
||||
u64 end;
|
||||
|
||||
info = root->fs_info;
|
||||
info = trans->fs_info;
|
||||
cache = btrfs_lookup_block_group(info, bg->objectid);
|
||||
if (!cache)
|
||||
return -ENOENT;
|
||||
@ -1124,7 +1124,7 @@ static int remove_chunk_extent_item(struct btrfs_trans_handle *trans,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = block_group_free_all_extent(root, chunk->bg_rec);
|
||||
ret = block_group_free_all_extent(trans, chunk->bg_rec);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
4
ctree.h
4
ctree.h
@ -2572,8 +2572,8 @@ int btrfs_make_block_group(struct btrfs_trans_handle *trans,
|
||||
u64 type, u64 chunk_offset, u64 size);
|
||||
int btrfs_make_block_groups(struct btrfs_trans_handle *trans,
|
||||
struct btrfs_fs_info *fs_info);
|
||||
int btrfs_update_block_group(struct btrfs_root *root, u64 bytenr, u64 num,
|
||||
int alloc, int mark_free);
|
||||
int btrfs_update_block_group(struct btrfs_trans_handle *trans, u64 bytenr,
|
||||
u64 num, int alloc, int mark_free);
|
||||
int btrfs_record_file_extent(struct btrfs_trans_handle *trans,
|
||||
struct btrfs_root *root, u64 objectid,
|
||||
struct btrfs_inode_item *inode,
|
||||
|
@ -1872,9 +1872,10 @@ static int do_chunk_alloc(struct btrfs_trans_handle *trans,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int update_block_group(struct btrfs_fs_info *info, u64 bytenr,
|
||||
static int update_block_group(struct btrfs_trans_handle *trans, u64 bytenr,
|
||||
u64 num_bytes, int alloc, int mark_free)
|
||||
{
|
||||
struct btrfs_fs_info *info = trans->fs_info;
|
||||
struct btrfs_block_group_cache *cache;
|
||||
u64 total = num_bytes;
|
||||
u64 old_val;
|
||||
@ -2237,8 +2238,7 @@ static int __free_extent(struct btrfs_trans_handle *trans,
|
||||
goto fail;
|
||||
}
|
||||
|
||||
update_block_group(trans->fs_info, bytenr, num_bytes, 0,
|
||||
mark_free);
|
||||
update_block_group(trans, bytenr, num_bytes, 0, mark_free);
|
||||
}
|
||||
fail:
|
||||
btrfs_free_path(path);
|
||||
@ -2570,8 +2570,7 @@ static int alloc_reserved_tree_block(struct btrfs_trans_handle *trans,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = update_block_group(fs_info, ins.objectid, fs_info->nodesize, 1,
|
||||
0);
|
||||
ret = update_block_group(trans, ins.objectid, fs_info->nodesize, 1, 0);
|
||||
if (sinfo) {
|
||||
if (fs_info->nodesize > sinfo->bytes_reserved) {
|
||||
WARN_ON(1);
|
||||
@ -3031,12 +3030,11 @@ int btrfs_make_block_groups(struct btrfs_trans_handle *trans,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int btrfs_update_block_group(struct btrfs_root *root,
|
||||
int btrfs_update_block_group(struct btrfs_trans_handle *trans,
|
||||
u64 bytenr, u64 num_bytes, int alloc,
|
||||
int mark_free)
|
||||
{
|
||||
return update_block_group(root->fs_info, bytenr, num_bytes,
|
||||
alloc, mark_free);
|
||||
return update_block_group(trans, bytenr, num_bytes, alloc, mark_free);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -3449,12 +3447,12 @@ int btrfs_fix_block_accounting(struct btrfs_trans_handle *trans)
|
||||
btrfs_item_key_to_cpu(leaf, &key, slot);
|
||||
if (key.type == BTRFS_EXTENT_ITEM_KEY) {
|
||||
bytes_used += key.offset;
|
||||
ret = btrfs_update_block_group(root,
|
||||
ret = btrfs_update_block_group(trans,
|
||||
key.objectid, key.offset, 1, 0);
|
||||
BUG_ON(ret);
|
||||
} else if (key.type == BTRFS_METADATA_ITEM_KEY) {
|
||||
bytes_used += fs_info->nodesize;
|
||||
ret = btrfs_update_block_group(root,
|
||||
ret = btrfs_update_block_group(trans,
|
||||
key.objectid, fs_info->nodesize, 1, 0);
|
||||
if (ret)
|
||||
goto out;
|
||||
@ -3609,7 +3607,7 @@ static int __btrfs_record_file_extent(struct btrfs_trans_handle *trans,
|
||||
BTRFS_EXTENT_FLAG_DATA);
|
||||
btrfs_mark_buffer_dirty(leaf);
|
||||
|
||||
ret = btrfs_update_block_group(root, disk_bytenr,
|
||||
ret = btrfs_update_block_group(trans, disk_bytenr,
|
||||
num_bytes, 1, 0);
|
||||
if (ret)
|
||||
goto fail;
|
||||
|
@ -2338,8 +2338,9 @@ again:
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void fixup_block_groups(struct btrfs_fs_info *fs_info)
|
||||
static void fixup_block_groups(struct btrfs_trans_handle *trans)
|
||||
{
|
||||
struct btrfs_fs_info *fs_info = trans->fs_info;
|
||||
struct btrfs_block_group_cache *bg;
|
||||
struct btrfs_mapping_tree *map_tree = &fs_info->mapping_tree;
|
||||
struct cache_extent *ce;
|
||||
@ -2499,7 +2500,7 @@ static int fixup_chunks_and_devices(struct btrfs_fs_info *fs_info,
|
||||
return PTR_ERR(trans);
|
||||
}
|
||||
|
||||
fixup_block_groups(fs_info);
|
||||
fixup_block_groups(trans);
|
||||
ret = fixup_dev_extents(trans);
|
||||
if (ret < 0)
|
||||
goto error;
|
||||
|
Loading…
Reference in New Issue
Block a user