btrfs: stop referencing btrfs_delayed_tree_ref directly
We only ever need to use this to get the level of the tree block ref, so use the btrfs_delayed_ref_owner() helper, which returns the level for the given reference. Reviewed-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
44cc2e38e6
commit
efc7d5dbf8
@ -919,28 +919,29 @@ static int add_delayed_refs(const struct btrfs_fs_info *fs_info,
|
||||
switch (node->type) {
|
||||
case BTRFS_TREE_BLOCK_REF_KEY: {
|
||||
/* NORMAL INDIRECT METADATA backref */
|
||||
struct btrfs_delayed_tree_ref *ref;
|
||||
struct btrfs_key *key_ptr = NULL;
|
||||
/* The owner of a tree block ref is the level. */
|
||||
int level = btrfs_delayed_ref_owner(node);
|
||||
|
||||
if (head->extent_op && head->extent_op->update_key) {
|
||||
btrfs_disk_key_to_cpu(&key, &head->extent_op->key);
|
||||
key_ptr = &key;
|
||||
}
|
||||
|
||||
ref = btrfs_delayed_node_to_tree_ref(node);
|
||||
ret = add_indirect_ref(fs_info, preftrees, node->ref_root,
|
||||
key_ptr, ref->level + 1,
|
||||
node->bytenr, count, sc,
|
||||
GFP_ATOMIC);
|
||||
key_ptr, level + 1, node->bytenr,
|
||||
count, sc, GFP_ATOMIC);
|
||||
break;
|
||||
}
|
||||
case BTRFS_SHARED_BLOCK_REF_KEY: {
|
||||
/* SHARED DIRECT METADATA backref */
|
||||
struct btrfs_delayed_tree_ref *ref;
|
||||
/*
|
||||
* SHARED DIRECT METADATA backref
|
||||
*
|
||||
* The owner of a tree block ref is the level.
|
||||
*/
|
||||
int level = btrfs_delayed_ref_owner(node);
|
||||
|
||||
ref = btrfs_delayed_node_to_tree_ref(node);
|
||||
|
||||
ret = add_direct_ref(fs_info, preftrees, ref->level + 1,
|
||||
ret = add_direct_ref(fs_info, preftrees, level + 1,
|
||||
node->parent, node->bytenr, count,
|
||||
sc, GFP_ATOMIC);
|
||||
break;
|
||||
|
@ -4865,16 +4865,16 @@ static int alloc_reserved_tree_block(struct btrfs_trans_handle *trans,
|
||||
struct btrfs_extent_inline_ref *iref;
|
||||
struct btrfs_path *path;
|
||||
struct extent_buffer *leaf;
|
||||
struct btrfs_delayed_tree_ref *ref;
|
||||
u32 size = sizeof(*extent_item) + sizeof(*iref);
|
||||
u64 flags = extent_op->flags_to_set;
|
||||
/* The owner of a tree block is the level. */
|
||||
int level = btrfs_delayed_ref_owner(node);
|
||||
bool skinny_metadata = btrfs_fs_incompat(fs_info, SKINNY_METADATA);
|
||||
|
||||
ref = btrfs_delayed_node_to_tree_ref(node);
|
||||
|
||||
extent_key.objectid = node->bytenr;
|
||||
if (skinny_metadata) {
|
||||
extent_key.offset = ref->level;
|
||||
/* The owner of a tree block is the level. */
|
||||
extent_key.offset = level;
|
||||
extent_key.type = BTRFS_METADATA_ITEM_KEY;
|
||||
} else {
|
||||
extent_key.offset = node->num_bytes;
|
||||
@ -4907,7 +4907,7 @@ static int alloc_reserved_tree_block(struct btrfs_trans_handle *trans,
|
||||
} else {
|
||||
block_info = (struct btrfs_tree_block_info *)(extent_item + 1);
|
||||
btrfs_set_tree_block_key(leaf, block_info, &extent_op->key);
|
||||
btrfs_set_tree_block_level(leaf, block_info, ref->level);
|
||||
btrfs_set_tree_block_level(leaf, block_info, level);
|
||||
iref = (struct btrfs_extent_inline_ref *)(block_info + 1);
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,6 @@ struct extent_map;
|
||||
struct btrfs_file_extent_item;
|
||||
struct btrfs_ordered_extent;
|
||||
struct btrfs_delayed_ref_node;
|
||||
struct btrfs_delayed_tree_ref;
|
||||
struct btrfs_delayed_ref_head;
|
||||
struct btrfs_block_group;
|
||||
struct btrfs_free_cluster;
|
||||
|
Loading…
x
Reference in New Issue
Block a user