* [PATCH] btrfs: change root->root_key.objectid to btrfs_root_id()
@ 2024-04-15 20:20 Josef Bacik
2024-04-15 21:20 ` Filipe Manana
2024-04-17 12:01 ` Johannes Thumshirn
0 siblings, 2 replies; 3+ messages in thread
From: Josef Bacik @ 2024-04-15 20:20 UTC (permalink / raw)
To: linux-btrfs, kernel-team
A comment from Filipe on one of my previous cleanups brought my
attention to a new helper we have for getting the root id of a root,
which makes it easier to read in the code.
The changes where made with the following Coccinelle semantic patch:
// <smpl>
@@
expression E,E1;
@@
(
E->root_key.objectid = E1
|
- E->root_key.objectid
+ btrfs_root_id(E)
)
// </smpl>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
fs/btrfs/backref.c | 8 +++---
fs/btrfs/block-rsv.c | 10 +++----
fs/btrfs/compression.c | 2 +-
fs/btrfs/ctree.c | 36 ++++++++++++------------
fs/btrfs/defrag.c | 2 +-
fs/btrfs/delayed-inode.c | 2 +-
fs/btrfs/disk-io.c | 36 ++++++++++++------------
fs/btrfs/export.c | 8 +++---
fs/btrfs/extent-tree.c | 50 ++++++++++++++++-----------------
fs/btrfs/file-item.c | 10 +++----
fs/btrfs/file.c | 22 +++++++--------
fs/btrfs/inode-item.c | 4 +--
fs/btrfs/inode.c | 58 +++++++++++++++++++-------------------
fs/btrfs/ioctl.c | 20 +++++++-------
fs/btrfs/locking.c | 2 +-
fs/btrfs/ordered-data.c | 2 +-
fs/btrfs/props.c | 2 +-
fs/btrfs/qgroup.c | 26 ++++++++---------
fs/btrfs/reflink.c | 2 +-
fs/btrfs/relocation.c | 60 ++++++++++++++++++++--------------------
fs/btrfs/root-tree.c | 2 +-
fs/btrfs/send.c | 28 +++++++++----------
fs/btrfs/super.c | 10 +++----
fs/btrfs/transaction.c | 22 +++++++--------
fs/btrfs/tree-log.c | 10 +++----
fs/btrfs/tree-mod-log.c | 2 +-
26 files changed, 218 insertions(+), 218 deletions(-)
diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c
index 574fb1d515b3..0bc81b340295 100644
--- a/fs/btrfs/backref.c
+++ b/fs/btrfs/backref.c
@@ -261,7 +261,7 @@ static void update_share_count(struct share_check *sc, int oldcount,
else if (oldcount < 1 && newcount > 0)
sc->share_count++;
- if (newref->root_id == sc->root->root_key.objectid &&
+ if (newref->root_id == btrfs_root_id(sc->root) &&
newref->wanted_disk_byte == sc->data_bytenr &&
newref->key_for_search.objectid == sc->inum)
sc->self_ref_count += newref->count;
@@ -769,7 +769,7 @@ static int resolve_indirect_refs(struct btrfs_backref_walk_ctx *ctx,
continue;
}
- if (sc && ref->root_id != sc->root->root_key.objectid) {
+ if (sc && ref->root_id != btrfs_root_id(sc->root)) {
free_pref(ref);
ret = BACKREF_FOUND_SHARED;
goto out;
@@ -2623,7 +2623,7 @@ static int iterate_inode_refs(u64 inum, struct inode_fs_paths *ipath)
btrfs_debug(fs_root->fs_info,
"following ref at offset %u for inode %llu in tree %llu",
cur, found_key.objectid,
- fs_root->root_key.objectid);
+ btrfs_root_id(fs_root));
ret = inode_to_path(parent, name_len,
(unsigned long)(iref + 1), eb, ipath);
if (ret)
@@ -3361,7 +3361,7 @@ static int handle_indirect_tree_backref(struct btrfs_trans_handle *trans,
if (btrfs_node_blockptr(eb, path->slots[level]) != cur->bytenr) {
btrfs_err(fs_info,
"couldn't find block (%llu) (level %d) in tree (%llu) with key (%llu %u %llu)",
- cur->bytenr, level - 1, root->root_key.objectid,
+ cur->bytenr, level - 1, btrfs_root_id(root),
tree_key->objectid, tree_key->type, tree_key->offset);
btrfs_put_root(root);
ret = -ENOENT;
diff --git a/fs/btrfs/block-rsv.c b/fs/btrfs/block-rsv.c
index 95c174f9fd4f..9cd722da1d86 100644
--- a/fs/btrfs/block-rsv.c
+++ b/fs/btrfs/block-rsv.c
@@ -341,9 +341,9 @@ void btrfs_update_global_block_rsv(struct btrfs_fs_info *fs_info)
read_lock(&fs_info->global_root_lock);
rbtree_postorder_for_each_entry_safe(root, tmp, &fs_info->global_root_tree,
rb_node) {
- if (root->root_key.objectid == BTRFS_EXTENT_TREE_OBJECTID ||
- root->root_key.objectid == BTRFS_CSUM_TREE_OBJECTID ||
- root->root_key.objectid == BTRFS_FREE_SPACE_TREE_OBJECTID) {
+ if (btrfs_root_id(root) == BTRFS_EXTENT_TREE_OBJECTID ||
+ btrfs_root_id(root) == BTRFS_CSUM_TREE_OBJECTID ||
+ btrfs_root_id(root) == BTRFS_FREE_SPACE_TREE_OBJECTID) {
num_bytes += btrfs_root_used(&root->root_item);
min_items++;
}
@@ -406,7 +406,7 @@ void btrfs_init_root_block_rsv(struct btrfs_root *root)
{
struct btrfs_fs_info *fs_info = root->fs_info;
- switch (root->root_key.objectid) {
+ switch (btrfs_root_id(root)) {
case BTRFS_CSUM_TREE_OBJECTID:
case BTRFS_EXTENT_TREE_OBJECTID:
case BTRFS_FREE_SPACE_TREE_OBJECTID:
@@ -469,7 +469,7 @@ static struct btrfs_block_rsv *get_block_rsv(
if (test_bit(BTRFS_ROOT_SHAREABLE, &root->state) ||
(root == fs_info->uuid_root) ||
(trans->adding_csums &&
- root->root_key.objectid == BTRFS_CSUM_TREE_OBJECTID))
+ btrfs_root_id(root) == BTRFS_CSUM_TREE_OBJECTID))
block_rsv = trans->block_rsv;
if (!block_rsv)
diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
index c981903c8cd7..6441e47d8a5e 100644
--- a/fs/btrfs/compression.c
+++ b/fs/btrfs/compression.c
@@ -992,7 +992,7 @@ int btrfs_compress_filemap_get_folio(struct address_space *mapping, u64 start,
btrfs_crit(inode->root->fs_info,
"failed to get page cache, root %lld ino %llu file offset %llu",
- inode->root->root_key.objectid, btrfs_ino(inode), start);
+ btrfs_root_id(inode->root), btrfs_ino(inode), start);
return -ENOENT;
}
*in_folio_ret = in_folio;
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c
index f6a98e7cf006..adcec4d247c5 100644
--- a/fs/btrfs/ctree.c
+++ b/fs/btrfs/ctree.c
@@ -291,7 +291,7 @@ static void add_root_to_dirty_list(struct btrfs_root *root)
spin_lock(&fs_info->trans_lock);
if (!test_and_set_bit(BTRFS_ROOT_DIRTY, &root->state)) {
/* Want the extent tree to be the last on the list */
- if (root->root_key.objectid == BTRFS_EXTENT_TREE_OBJECTID)
+ if (btrfs_root_id(root) == BTRFS_EXTENT_TREE_OBJECTID)
list_move_tail(&root->dirty_list,
&fs_info->dirty_cowonly_roots);
else
@@ -454,7 +454,7 @@ static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans,
}
} else {
refs = 1;
- if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID ||
+ if (btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID ||
btrfs_header_backref_rev(buf) < BTRFS_MIXED_BACKREF_REV)
flags = BTRFS_BLOCK_FLAG_FULL_BACKREF;
else
@@ -466,14 +466,14 @@ static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans,
!(flags & BTRFS_BLOCK_FLAG_FULL_BACKREF));
if (refs > 1) {
- if ((owner == root->root_key.objectid ||
- root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID) &&
+ if ((owner == btrfs_root_id(root) ||
+ btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID) &&
!(flags & BTRFS_BLOCK_FLAG_FULL_BACKREF)) {
ret = btrfs_inc_ref(trans, root, buf, 1);
if (ret)
return ret;
- if (root->root_key.objectid ==
+ if (btrfs_root_id(root) ==
BTRFS_TREE_RELOC_OBJECTID) {
ret = btrfs_dec_ref(trans, root, buf, 0);
if (ret)
@@ -485,7 +485,7 @@ static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans,
new_flags |= BTRFS_BLOCK_FLAG_FULL_BACKREF;
} else {
- if (root->root_key.objectid ==
+ if (btrfs_root_id(root) ==
BTRFS_TREE_RELOC_OBJECTID)
ret = btrfs_inc_ref(trans, root, cow, 1);
else
@@ -500,7 +500,7 @@ static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans,
}
} else {
if (flags & BTRFS_BLOCK_FLAG_FULL_BACKREF) {
- if (root->root_key.objectid ==
+ if (btrfs_root_id(root) ==
BTRFS_TREE_RELOC_OBJECTID)
ret = btrfs_inc_ref(trans, root, cow, 1);
else
@@ -563,13 +563,13 @@ int btrfs_force_cow_block(struct btrfs_trans_handle *trans,
else
btrfs_node_key(buf, &disk_key, 0);
- if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID) {
+ if (btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID) {
if (parent)
parent_start = parent->start;
reloc_src_root = btrfs_header_owner(buf);
}
cow = btrfs_alloc_tree_block(trans, root, parent_start,
- root->root_key.objectid, &disk_key, level,
+ btrfs_root_id(root), &disk_key, level,
search_start, empty_size, reloc_src_root, nest);
if (IS_ERR(cow))
return PTR_ERR(cow);
@@ -582,10 +582,10 @@ int btrfs_force_cow_block(struct btrfs_trans_handle *trans,
btrfs_set_header_backref_rev(cow, BTRFS_MIXED_BACKREF_REV);
btrfs_clear_header_flag(cow, BTRFS_HEADER_FLAG_WRITTEN |
BTRFS_HEADER_FLAG_RELOC);
- if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)
+ if (btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID)
btrfs_set_header_flag(cow, BTRFS_HEADER_FLAG_RELOC);
else
- btrfs_set_header_owner(cow, root->root_key.objectid);
+ btrfs_set_header_owner(cow, btrfs_root_id(root));
write_extent_buffer_fsid(cow, fs_info->fs_devices->metadata_uuid);
@@ -609,7 +609,7 @@ int btrfs_force_cow_block(struct btrfs_trans_handle *trans,
if (buf == root->node) {
WARN_ON(parent && parent != buf);
- if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID ||
+ if (btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID ||
btrfs_header_backref_rev(buf) < BTRFS_MIXED_BACKREF_REV)
parent_start = buf->start;
@@ -685,7 +685,7 @@ static inline int should_cow_block(struct btrfs_trans_handle *trans,
*/
if (btrfs_header_generation(buf) == trans->transid &&
!btrfs_header_flag(buf, BTRFS_HEADER_FLAG_WRITTEN) &&
- !(root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID &&
+ !(btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID &&
btrfs_header_flag(buf, BTRFS_HEADER_FLAG_RELOC)) &&
!test_bit(BTRFS_ROOT_FORCE_COW, &root->state))
return 0;
@@ -1511,7 +1511,7 @@ read_block_for_search(struct btrfs_root *root, struct btrfs_path *p,
check.has_first_key = true;
check.level = parent_level - 1;
check.transid = gen;
- check.owner_root = root->root_key.objectid;
+ check.owner_root = btrfs_root_id(root);
/*
* If we need to read an extent buffer from disk and we are holding locks
@@ -1556,7 +1556,7 @@ read_block_for_search(struct btrfs_root *root, struct btrfs_path *p,
btrfs_release_path(p);
return -EIO;
}
- if (btrfs_check_eb_owner(tmp, root->root_key.objectid)) {
+ if (btrfs_check_eb_owner(tmp, btrfs_root_id(root))) {
free_extent_buffer(tmp);
btrfs_release_path(p);
return -EUCLEAN;
@@ -2865,7 +2865,7 @@ static noinline int insert_new_root(struct btrfs_trans_handle *trans,
else
btrfs_node_key(lower, &lower_key, 0);
- c = btrfs_alloc_tree_block(trans, root, 0, root->root_key.objectid,
+ c = btrfs_alloc_tree_block(trans, root, 0, btrfs_root_id(root),
&lower_key, level, root->node->start, 0,
0, BTRFS_NESTING_NEW_ROOT);
if (IS_ERR(c))
@@ -3009,7 +3009,7 @@ static noinline int split_node(struct btrfs_trans_handle *trans,
mid = (c_nritems + 1) / 2;
btrfs_node_key(c, &disk_key, mid);
- split = btrfs_alloc_tree_block(trans, root, 0, root->root_key.objectid,
+ split = btrfs_alloc_tree_block(trans, root, 0, btrfs_root_id(root),
&disk_key, level, c->start, 0,
0, BTRFS_NESTING_SPLIT);
if (IS_ERR(split))
@@ -3761,7 +3761,7 @@ static noinline int split_leaf(struct btrfs_trans_handle *trans,
* BTRFS_NESTING_SPLIT_THE_SPLITTENING if we need to, but for now just
* use BTRFS_NESTING_NEW_ROOT.
*/
- right = btrfs_alloc_tree_block(trans, root, 0, root->root_key.objectid,
+ right = btrfs_alloc_tree_block(trans, root, 0, btrfs_root_id(root),
&disk_key, 0, l->start, 0, 0,
num_doubles ? BTRFS_NESTING_NEW_ROOT :
BTRFS_NESTING_SPLIT);
diff --git a/fs/btrfs/defrag.c b/fs/btrfs/defrag.c
index f015fa1b6301..407ccec3e57e 100644
--- a/fs/btrfs/defrag.c
+++ b/fs/btrfs/defrag.c
@@ -147,7 +147,7 @@ int btrfs_add_inode_defrag(struct btrfs_trans_handle *trans,
defrag->ino = btrfs_ino(inode);
defrag->transid = transid;
- defrag->root = root->root_key.objectid;
+ defrag->root = btrfs_root_id(root);
defrag->extent_thresh = extent_thresh;
spin_lock(&fs_info->defrag_inodes_lock);
diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c
index 121ab890bd05..95a0497fa866 100644
--- a/fs/btrfs/delayed-inode.c
+++ b/fs/btrfs/delayed-inode.c
@@ -1651,7 +1651,7 @@ int btrfs_delete_delayed_dir_index(struct btrfs_trans_handle *trans,
if (unlikely(ret)) {
btrfs_err(trans->fs_info,
"err add delayed dir index item(index: %llu) into the deletion tree of the delayed node(root id: %llu, inode id: %llu, errno: %d)",
- index, node->root->root_key.objectid,
+ index, btrfs_root_id(node->root),
node->inode_id, ret);
btrfs_delayed_item_release_metadata(dir->root, item);
btrfs_release_delayed_item(item);
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 0474e9b6d302..22bc34d2f89a 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -776,7 +776,7 @@ int btrfs_global_root_insert(struct btrfs_root *root)
if (tmp) {
ret = -EEXIST;
btrfs_warn(fs_info, "global root %llu %llu already exists",
- root->root_key.objectid, root->root_key.offset);
+ btrfs_root_id(root), root->root_key.offset);
}
return ret;
}
@@ -1012,7 +1012,7 @@ int btrfs_add_log_tree(struct btrfs_trans_handle *trans,
}
log_root->last_trans = trans->transid;
- log_root->root_key.offset = root->root_key.objectid;
+ log_root->root_key.offset = btrfs_root_id(root);
inode_item = &log_root->root_item.inode;
btrfs_set_stack_inode_generation(inode_item, 1);
@@ -1077,14 +1077,14 @@ static struct btrfs_root *read_tree_root_path(struct btrfs_root *tree_root,
* match its root node owner
*/
if (!test_bit(BTRFS_FS_STATE_DUMMY_FS_INFO, &fs_info->fs_state) &&
- root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID &&
- root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID &&
- root->root_key.objectid != btrfs_header_owner(root->node)) {
+ btrfs_root_id(root) != BTRFS_TREE_LOG_OBJECTID &&
+ btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID &&
+ btrfs_root_id(root) != btrfs_header_owner(root->node)) {
btrfs_crit(fs_info,
"root=%llu block=%llu, tree root owner mismatch, have %llu expect %llu",
- root->root_key.objectid, root->node->start,
+ btrfs_root_id(root), root->node->start,
btrfs_header_owner(root->node),
- root->root_key.objectid);
+ btrfs_root_id(root));
ret = -EUCLEAN;
goto fail;
}
@@ -1121,9 +1121,9 @@ static int btrfs_init_fs_root(struct btrfs_root *root, dev_t anon_dev)
btrfs_drew_lock_init(&root->snapshot_lock);
- if (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID &&
+ if (btrfs_root_id(root) != BTRFS_TREE_LOG_OBJECTID &&
!btrfs_is_data_reloc_root(root) &&
- is_fstree(root->root_key.objectid)) {
+ is_fstree(btrfs_root_id(root))) {
set_bit(BTRFS_ROOT_SHAREABLE, &root->state);
btrfs_check_and_init_root_item(&root->root_item);
}
@@ -1132,7 +1132,7 @@ static int btrfs_init_fs_root(struct btrfs_root *root, dev_t anon_dev)
* Don't assign anonymous block device to roots that are not exposed to
* userspace, the id pool is limited to 1M
*/
- if (is_fstree(root->root_key.objectid) &&
+ if (is_fstree(btrfs_root_id(root)) &&
btrfs_root_refs(&root->root_item) > 0) {
if (!anon_dev) {
ret = get_anon_bdev(&root->anon_dev);
@@ -1219,7 +1219,7 @@ int btrfs_insert_fs_root(struct btrfs_fs_info *fs_info,
spin_lock(&fs_info->fs_roots_radix_lock);
ret = radix_tree_insert(&fs_info->fs_roots_radix,
- (unsigned long)root->root_key.objectid,
+ (unsigned long) btrfs_root_id(root),
root);
if (ret == 0) {
btrfs_grab_root(root);
@@ -2584,7 +2584,7 @@ static int load_super_root(struct btrfs_root *root, u64 bytenr, u64 gen, int lev
struct btrfs_tree_parent_check check = {
.level = level,
.transid = gen,
- .owner_root = root->root_key.objectid
+ .owner_root = btrfs_root_id(root)
};
int ret = 0;
@@ -2930,7 +2930,7 @@ static int btrfs_cleanup_fs_roots(struct btrfs_fs_info *fs_info)
spin_unlock(&fs_info->fs_roots_radix_lock);
break;
}
- root_objectid = gang[ret - 1]->root_key.objectid + 1;
+ root_objectid = btrfs_root_id(gang[ret - 1]) + 1;
for (i = 0; i < ret; i++) {
/* Avoid to grab roots in dead_roots. */
@@ -2946,7 +2946,7 @@ static int btrfs_cleanup_fs_roots(struct btrfs_fs_info *fs_info)
for (i = 0; i < ret; i++) {
if (!gang[i])
continue;
- root_objectid = gang[i]->root_key.objectid;
+ root_objectid = btrfs_root_id(gang[i]);
err = btrfs_orphan_cleanup(gang[i]);
if (err)
goto out;
@@ -4139,7 +4139,7 @@ void btrfs_drop_and_free_fs_root(struct btrfs_fs_info *fs_info,
spin_lock(&fs_info->fs_roots_radix_lock);
radix_tree_delete(&fs_info->fs_roots_radix,
- (unsigned long)root->root_key.objectid);
+ (unsigned long) btrfs_root_id(root));
if (test_and_clear_bit(BTRFS_ROOT_IN_RADIX, &root->state))
drop_ref = true;
spin_unlock(&fs_info->fs_roots_radix_lock);
@@ -4481,7 +4481,7 @@ static void btrfs_drop_all_logs(struct btrfs_fs_info *fs_info)
for (i = 0; i < ret; i++) {
if (!gang[i])
continue;
- root_objectid = gang[i]->root_key.objectid;
+ root_objectid = btrfs_root_id(gang[i]);
btrfs_free_log(NULL, gang[i]);
btrfs_put_root(gang[i]);
}
@@ -4812,7 +4812,7 @@ static void btrfs_free_all_qgroup_pertrans(struct btrfs_fs_info *fs_info)
btrfs_qgroup_free_meta_all_pertrans(root);
radix_tree_tag_clear(&fs_info->fs_roots_radix,
- (unsigned long)root->root_key.objectid,
+ (unsigned long) btrfs_root_id(root),
BTRFS_ROOT_TRANS_TAG);
}
}
@@ -4953,7 +4953,7 @@ int btrfs_get_free_objectid(struct btrfs_root *root, u64 *objectid)
if (unlikely(root->free_objectid >= BTRFS_LAST_FREE_OBJECTID)) {
btrfs_warn(root->fs_info,
"the objectid of root %llu reaches its highest value",
- root->root_key.objectid);
+ btrfs_root_id(root));
ret = -ENOSPC;
goto out;
}
diff --git a/fs/btrfs/export.c b/fs/btrfs/export.c
index 8398d345ec5b..9e81f89e76d8 100644
--- a/fs/btrfs/export.c
+++ b/fs/btrfs/export.c
@@ -34,7 +34,7 @@ static int btrfs_encode_fh(struct inode *inode, u32 *fh, int *max_len,
type = FILEID_BTRFS_WITHOUT_PARENT;
fid->objectid = btrfs_ino(BTRFS_I(inode));
- fid->root_objectid = BTRFS_I(inode)->root->root_key.objectid;
+ fid->root_objectid = btrfs_root_id(BTRFS_I(inode)->root);
fid->gen = inode->i_generation;
if (parent) {
@@ -42,7 +42,7 @@ static int btrfs_encode_fh(struct inode *inode, u32 *fh, int *max_len,
fid->parent_objectid = BTRFS_I(parent)->location.objectid;
fid->parent_gen = parent->i_generation;
- parent_root_id = BTRFS_I(parent)->root->root_key.objectid;
+ parent_root_id = btrfs_root_id(BTRFS_I(parent)->root);
if (parent_root_id != fid->root_objectid) {
fid->parent_root_objectid = parent_root_id;
@@ -160,7 +160,7 @@ struct dentry *btrfs_get_parent(struct dentry *child)
return ERR_PTR(-ENOMEM);
if (btrfs_ino(BTRFS_I(dir)) == BTRFS_FIRST_FREE_OBJECTID) {
- key.objectid = root->root_key.objectid;
+ key.objectid = btrfs_root_id(root);
key.type = BTRFS_ROOT_BACKREF_KEY;
key.offset = (u64)-1;
root = fs_info->tree_root;
@@ -243,7 +243,7 @@ static int btrfs_get_name(struct dentry *parent, char *name,
return -ENOMEM;
if (ino == BTRFS_FIRST_FREE_OBJECTID) {
- key.objectid = BTRFS_I(inode)->root->root_key.objectid;
+ key.objectid = btrfs_root_id(BTRFS_I(inode)->root);
key.type = BTRFS_ROOT_BACKREF_KEY;
key.offset = (u64)-1;
root = fs_info->tree_root;
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 87a921b84bab..828d9e61f8a3 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -2328,7 +2328,7 @@ static noinline int check_delayed_ref(struct btrfs_root *root,
* If our ref doesn't match the one we're currently looking at
* then we have a cross reference.
*/
- if (ref->ref_root != root->root_key.objectid ||
+ if (ref->ref_root != btrfs_root_id(root) ||
ref_owner != objectid || ref_offset != offset) {
ret = 1;
break;
@@ -2423,7 +2423,7 @@ static noinline int check_committed_ref(struct btrfs_root *root,
if (btrfs_extent_refs(leaf, ei) !=
btrfs_extent_data_ref_count(leaf, ref) ||
btrfs_extent_data_ref_root(leaf, ref) !=
- root->root_key.objectid ||
+ btrfs_root_id(root) ||
btrfs_extent_data_ref_objectid(leaf, ref) != objectid ||
btrfs_extent_data_ref_offset(leaf, ref) != offset)
goto out;
@@ -2515,7 +2515,7 @@ static int __btrfs_mod_ref(struct btrfs_trans_handle *trans,
key.offset -= btrfs_file_extent_offset(buf, fi);
btrfs_init_data_ref(&ref, key.objectid, key.offset,
- root->root_key.objectid, for_reloc);
+ btrfs_root_id(root), for_reloc);
if (inc)
ret = btrfs_inc_extent_ref(trans, &ref);
else
@@ -2528,7 +2528,7 @@ static int __btrfs_mod_ref(struct btrfs_trans_handle *trans,
ref.num_bytes = fs_info->nodesize;
btrfs_init_tree_ref(&ref, level - 1,
- root->root_key.objectid, for_reloc);
+ btrfs_root_id(root), for_reloc);
if (inc)
ret = btrfs_inc_extent_ref(trans, &ref);
else
@@ -4671,7 +4671,7 @@ int btrfs_reserve_extent(struct btrfs_root *root, u64 ram_bytes,
bool final_tried = num_bytes == min_alloc_size;
u64 flags;
int ret;
- bool for_treelog = (root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID);
+ bool for_treelog = (btrfs_root_id(root) == BTRFS_TREE_LOG_OBJECTID);
bool for_data_reloc = (btrfs_is_data_reloc_root(root) && is_data);
flags = get_alloc_profile_by_root(root, is_data);
@@ -4936,8 +4936,8 @@ int btrfs_alloc_reserved_file_extent(struct btrfs_trans_handle *trans,
.action = BTRFS_ADD_DELAYED_EXTENT,
.bytenr = ins->objectid,
.num_bytes = ins->offset,
- .owning_root = root->root_key.objectid,
- .ref_root = root->root_key.objectid,
+ .owning_root = btrfs_root_id(root),
+ .ref_root = btrfs_root_id(root),
};
ASSERT(generic_ref.ref_root != BTRFS_TREE_LOG_OBJECTID);
@@ -5083,7 +5083,7 @@ btrfs_init_new_buffer(struct btrfs_trans_handle *trans, struct btrfs_root *root,
btrfs_set_header_owner(buf, owner);
write_extent_buffer_fsid(buf, fs_info->fs_devices->metadata_uuid);
write_extent_buffer_chunk_tree_uuid(buf, fs_info->chunk_tree_uuid);
- if (root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID) {
+ if (btrfs_root_id(root) == BTRFS_TREE_LOG_OBJECTID) {
buf->log_index = root->log_transid % 2;
/*
* we allow two log transactions at a time, use different
@@ -5189,7 +5189,7 @@ struct extent_buffer *btrfs_alloc_tree_block(struct btrfs_trans_handle *trans,
extent_op->level = level;
btrfs_init_tree_ref(&generic_ref, level,
- root->root_key.objectid, false);
+ btrfs_root_id(root), false);
btrfs_ref_tree_mod(fs_info, &generic_ref);
ret = btrfs_add_delayed_tree_ref(trans, &generic_ref, extent_op);
if (ret)
@@ -5328,7 +5328,7 @@ static noinline int walk_down_proc(struct btrfs_trans_handle *trans,
int ret;
if (wc->stage == UPDATE_BACKREF &&
- btrfs_header_owner(eb) != root->root_key.objectid)
+ btrfs_header_owner(eb) != btrfs_root_id(root))
return 1;
/*
@@ -5402,7 +5402,7 @@ static int check_ref_exists(struct btrfs_trans_handle *trans,
ret = lookup_extent_backref(trans, path, &iref, bytenr,
root->fs_info->nodesize, parent,
- root->root_key.objectid, level, 0);
+ btrfs_root_id(root), level, 0);
btrfs_free_path(path);
if (ret == -ENOENT)
return 0;
@@ -5458,7 +5458,7 @@ static noinline int do_walk_down(struct btrfs_trans_handle *trans,
check.level = level - 1;
check.transid = generation;
- check.owner_root = root->root_key.objectid;
+ check.owner_root = btrfs_root_id(root);
check.has_first_key = true;
btrfs_node_key_to_cpu(path->nodes[level], &check.first_key,
path->slots[level]);
@@ -5466,7 +5466,7 @@ static noinline int do_walk_down(struct btrfs_trans_handle *trans,
next = find_extent_buffer(fs_info, bytenr);
if (!next) {
next = btrfs_find_create_tree_block(fs_info, bytenr,
- root->root_key.objectid, level - 1);
+ btrfs_root_id(root), level - 1);
if (IS_ERR(next))
return PTR_ERR(next);
reada = 1;
@@ -5556,14 +5556,14 @@ static noinline int do_walk_down(struct btrfs_trans_handle *trans,
.bytenr = bytenr,
.num_bytes = fs_info->nodesize,
.owning_root = owner_root,
- .ref_root = root->root_key.objectid,
+ .ref_root = btrfs_root_id(root),
};
if (wc->flags[level] & BTRFS_BLOCK_FLAG_FULL_BACKREF) {
ref.parent = path->nodes[level]->start;
} else {
- ASSERT(root->root_key.objectid ==
+ ASSERT(btrfs_root_id(root) ==
btrfs_header_owner(path->nodes[level]));
- if (root->root_key.objectid !=
+ if (btrfs_root_id(root) !=
btrfs_header_owner(path->nodes[level])) {
btrfs_err(root->fs_info,
"mismatched block owner");
@@ -5594,7 +5594,7 @@ static noinline int do_walk_down(struct btrfs_trans_handle *trans,
* already accounted them at merge time (replace_path),
* thus we could skip expensive subtree trace here.
*/
- if (root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID &&
+ if (btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID &&
need_account) {
ret = btrfs_qgroup_trace_subtree(trans, next,
generation, level - 1);
@@ -5705,7 +5705,7 @@ static noinline int walk_up_proc(struct btrfs_trans_handle *trans,
else
ret = btrfs_dec_ref(trans, root, eb, 0);
BUG_ON(ret); /* -ENOMEM */
- if (is_fstree(root->root_key.objectid)) {
+ if (is_fstree(btrfs_root_id(root))) {
ret = btrfs_qgroup_trace_leaf_items(trans, eb);
if (ret) {
btrfs_err_rl(fs_info,
@@ -5725,12 +5725,12 @@ static noinline int walk_up_proc(struct btrfs_trans_handle *trans,
if (eb == root->node) {
if (wc->flags[level] & BTRFS_BLOCK_FLAG_FULL_BACKREF)
parent = eb->start;
- else if (root->root_key.objectid != btrfs_header_owner(eb))
+ else if (btrfs_root_id(root) != btrfs_header_owner(eb))
goto owner_mismatch;
} else {
if (wc->flags[level + 1] & BTRFS_BLOCK_FLAG_FULL_BACKREF)
parent = path->nodes[level + 1]->start;
- else if (root->root_key.objectid !=
+ else if (btrfs_root_id(root) !=
btrfs_header_owner(path->nodes[level + 1]))
goto owner_mismatch;
}
@@ -5744,7 +5744,7 @@ static noinline int walk_up_proc(struct btrfs_trans_handle *trans,
owner_mismatch:
btrfs_err_rl(fs_info, "unexpected tree owner, have %llu expect %llu",
- btrfs_header_owner(eb), root->root_key.objectid);
+ btrfs_header_owner(eb), btrfs_root_id(root));
return -EUCLEAN;
}
@@ -5830,7 +5830,7 @@ static noinline int walk_up_tree(struct btrfs_trans_handle *trans,
*/
int btrfs_drop_snapshot(struct btrfs_root *root, int update_ref, int for_reloc)
{
- const bool is_reloc_root = (root->root_key.objectid ==
+ const bool is_reloc_root = (btrfs_root_id(root) ==
BTRFS_TREE_RELOC_OBJECTID);
struct btrfs_fs_info *fs_info = root->fs_info;
struct btrfs_path *path;
@@ -5845,7 +5845,7 @@ int btrfs_drop_snapshot(struct btrfs_root *root, int update_ref, int for_reloc)
bool root_dropped = false;
bool unfinished_drop = false;
- btrfs_debug(fs_info, "Drop subvolume %llu", root->root_key.objectid);
+ btrfs_debug(fs_info, "Drop subvolume %llu", btrfs_root_id(root));
path = btrfs_alloc_path();
if (!path) {
@@ -6044,7 +6044,7 @@ int btrfs_drop_snapshot(struct btrfs_root *root, int update_ref, int for_reloc)
* The most common failure here is just -ENOENT.
*/
btrfs_del_orphan_item(trans, tree_root,
- root->root_key.objectid);
+ btrfs_root_id(root));
}
}
@@ -6108,7 +6108,7 @@ int btrfs_drop_subtree(struct btrfs_trans_handle *trans,
int ret = 0;
int wret;
- BUG_ON(root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID);
+ BUG_ON(btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID);
path = btrfs_alloc_path();
if (!path)
diff --git a/fs/btrfs/file-item.c b/fs/btrfs/file-item.c
index 1ea1ed44fe42..872fcee2e099 100644
--- a/fs/btrfs/file-item.c
+++ b/fs/btrfs/file-item.c
@@ -430,7 +430,7 @@ blk_status_t btrfs_lookup_bio_sums(struct btrfs_bio *bbio)
memset(csum_dst, 0, csum_size);
count = 1;
- if (inode->root->root_key.objectid ==
+ if (btrfs_root_id(inode->root) ==
BTRFS_DATA_RELOC_TREE_OBJECTID) {
u64 file_offset = bbio->file_offset + bio_offset;
@@ -885,8 +885,8 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans,
const u32 csum_size = fs_info->csum_size;
u32 blocksize_bits = fs_info->sectorsize_bits;
- ASSERT(root->root_key.objectid == BTRFS_CSUM_TREE_OBJECTID ||
- root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID);
+ ASSERT(btrfs_root_id(root) == BTRFS_CSUM_TREE_OBJECTID ||
+ btrfs_root_id(root) == BTRFS_TREE_LOG_OBJECTID);
path = btrfs_alloc_path();
if (!path)
@@ -1186,7 +1186,7 @@ int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans,
* search, etc, because log trees are temporary anyway and it
* would only save a few bytes of leaf space.
*/
- if (root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID) {
+ if (btrfs_root_id(root) == BTRFS_TREE_LOG_OBJECTID) {
if (path->slots[0] + 1 >=
btrfs_header_nritems(path->nodes[0])) {
ret = find_next_csum_offset(root, path, &next_offset);
@@ -1328,7 +1328,7 @@ void btrfs_extent_item_to_extent_map(struct btrfs_inode *inode,
btrfs_err(fs_info,
"unknown file extent item type %d, inode %llu, offset %llu, "
"root %llu", type, btrfs_ino(inode), extent_start,
- root->root_key.objectid);
+ btrfs_root_id(root));
}
}
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 065658f2c061..0c7c1b42028e 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -245,7 +245,7 @@ int btrfs_drop_extents(struct btrfs_trans_handle *trans,
if (args->start >= inode->disk_i_size && !args->replace_extent)
modify_tree = 0;
- update_refs = (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID);
+ update_refs = (btrfs_root_id(root) != BTRFS_TREE_LOG_OBJECTID);
while (1) {
recow = 0;
ret = btrfs_lookup_file_extent(trans, root, path, ino,
@@ -377,8 +377,8 @@ int btrfs_drop_extents(struct btrfs_trans_handle *trans,
.bytenr = disk_bytenr,
.num_bytes = num_bytes,
.parent = 0,
- .owning_root = root->root_key.objectid,
- .ref_root = root->root_key.objectid,
+ .owning_root = btrfs_root_id(root),
+ .ref_root = btrfs_root_id(root),
};
btrfs_init_data_ref(&ref, new_key.objectid,
args->start - extent_offset,
@@ -470,8 +470,8 @@ int btrfs_drop_extents(struct btrfs_trans_handle *trans,
.bytenr = disk_bytenr,
.num_bytes = num_bytes,
.parent = 0,
- .owning_root = root->root_key.objectid,
- .ref_root = root->root_key.objectid,
+ .owning_root = btrfs_root_id(root),
+ .ref_root = btrfs_root_id(root),
};
btrfs_init_data_ref(&ref, key.objectid,
key.offset - extent_offset,
@@ -755,8 +755,8 @@ int btrfs_mark_extent_written(struct btrfs_trans_handle *trans,
ref.bytenr = bytenr;
ref.num_bytes = num_bytes;
ref.parent = 0;
- ref.owning_root = root->root_key.objectid;
- ref.ref_root = root->root_key.objectid;
+ ref.owning_root = btrfs_root_id(root);
+ ref.ref_root = btrfs_root_id(root);
btrfs_init_data_ref(&ref, ino, orig_offset, 0, false);
ret = btrfs_inc_extent_ref(trans, &ref);
if (ret) {
@@ -785,8 +785,8 @@ int btrfs_mark_extent_written(struct btrfs_trans_handle *trans,
ref.bytenr = bytenr;
ref.num_bytes = num_bytes;
ref.parent = 0;
- ref.owning_root = root->root_key.objectid;
- ref.ref_root = root->root_key.objectid;
+ ref.owning_root = btrfs_root_id(root);
+ ref.ref_root = btrfs_root_id(root);
btrfs_init_data_ref(&ref, ino, orig_offset, 0, false);
if (extent_mergeable(leaf, path->slots[0] + 1,
ino, bytenr, orig_offset,
@@ -2493,8 +2493,8 @@ static int btrfs_insert_replace_extent(struct btrfs_trans_handle *trans,
.action = BTRFS_ADD_DELAYED_REF,
.bytenr = extent_info->disk_offset,
.num_bytes = extent_info->disk_len,
- .owning_root = root->root_key.objectid,
- .ref_root = root->root_key.objectid,
+ .owning_root = btrfs_root_id(root),
+ .ref_root = btrfs_root_id(root),
};
u64 ref_offset;
diff --git a/fs/btrfs/inode-item.c b/fs/btrfs/inode-item.c
index 7565ff15a69a..84a94d19b22c 100644
--- a/fs/btrfs/inode-item.c
+++ b/fs/btrfs/inode-item.c
@@ -674,14 +674,14 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
.action = BTRFS_DROP_DELAYED_REF,
.bytenr = extent_start,
.num_bytes = extent_num_bytes,
- .owning_root = root->root_key.objectid,
+ .owning_root = btrfs_root_id(root),
.ref_root = btrfs_header_owner(leaf),
};
bytes_deleted += extent_num_bytes;
btrfs_init_data_ref(&ref, control->ino, extent_offset,
- root->root_key.objectid, false);
+ btrfs_root_id(root), false);
ret = btrfs_free_extent(trans, &ref);
if (ret) {
btrfs_abort_transaction(trans, ret);
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 629706b98e31..30893f12c850 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -254,7 +254,7 @@ static void print_data_reloc_error(const struct btrfs_inode *inode, u64 file_off
btrfs_warn_rl(fs_info, "has data reloc tree but no running relocation");
btrfs_warn_rl(fs_info,
"csum failed root %lld ino %llu off %llu csum " CSUM_FMT " expected csum " CSUM_FMT " mirror %d",
- inode->root->root_key.objectid, btrfs_ino(inode), file_off,
+ btrfs_root_id(inode->root), btrfs_ino(inode), file_off,
CSUM_FMT_VALUE(csum_size, csum),
CSUM_FMT_VALUE(csum_size, csum_expected),
mirror_num);
@@ -264,7 +264,7 @@ static void print_data_reloc_error(const struct btrfs_inode *inode, u64 file_off
logical += file_off;
btrfs_warn_rl(fs_info,
"csum failed root %lld ino %llu off %llu logical %llu csum " CSUM_FMT " expected csum " CSUM_FMT " mirror %d",
- inode->root->root_key.objectid,
+ btrfs_root_id(inode->root),
btrfs_ino(inode), file_off, logical,
CSUM_FMT_VALUE(csum_size, csum),
CSUM_FMT_VALUE(csum_size, csum_expected),
@@ -331,15 +331,15 @@ static void __cold btrfs_print_data_csum_error(struct btrfs_inode *inode,
const u32 csum_size = root->fs_info->csum_size;
/* For data reloc tree, it's better to do a backref lookup instead. */
- if (root->root_key.objectid == BTRFS_DATA_RELOC_TREE_OBJECTID)
+ if (btrfs_root_id(root) == BTRFS_DATA_RELOC_TREE_OBJECTID)
return print_data_reloc_error(inode, logical_start, csum,
csum_expected, mirror_num);
/* Output without objectid, which is more meaningful */
- if (root->root_key.objectid >= BTRFS_LAST_FREE_OBJECTID) {
+ if (btrfs_root_id(root) >= BTRFS_LAST_FREE_OBJECTID) {
btrfs_warn_rl(root->fs_info,
"csum failed root %lld ino %lld off %llu csum " CSUM_FMT " expected csum " CSUM_FMT " mirror %d",
- root->root_key.objectid, btrfs_ino(inode),
+ btrfs_root_id(root), btrfs_ino(inode),
logical_start,
CSUM_FMT_VALUE(csum_size, csum),
CSUM_FMT_VALUE(csum_size, csum_expected),
@@ -347,7 +347,7 @@ static void __cold btrfs_print_data_csum_error(struct btrfs_inode *inode,
} else {
btrfs_warn_rl(root->fs_info,
"csum failed root %llu ino %llu off %llu csum " CSUM_FMT " expected csum " CSUM_FMT " mirror %d",
- root->root_key.objectid, btrfs_ino(inode),
+ btrfs_root_id(root), btrfs_ino(inode),
logical_start,
CSUM_FMT_VALUE(csum_size, csum),
CSUM_FMT_VALUE(csum_size, csum_expected),
@@ -1218,7 +1218,7 @@ static void submit_one_async_extent(struct async_chunk *async_chunk,
kthread_associate_blkcg(NULL);
btrfs_debug(fs_info,
"async extent submission failed root=%lld inode=%llu start=%llu len=%llu ret=%d",
- root->root_key.objectid, btrfs_ino(inode), start,
+ btrfs_root_id(root), btrfs_ino(inode), start,
async_extent->ram_size, ret);
kfree(async_extent);
}
@@ -3239,7 +3239,7 @@ int btrfs_finish_one_ordered(struct btrfs_ordered_extent *ordered_extent)
* Actually free the qgroup rsv which was released when
* the ordered extent was created.
*/
- btrfs_qgroup_free_refroot(fs_info, inode->root->root_key.objectid,
+ btrfs_qgroup_free_refroot(fs_info, btrfs_root_id(inode->root),
ordered_extent->qgroup_rsv,
BTRFS_QGROUP_RSV_DATA);
}
@@ -3906,7 +3906,7 @@ static int btrfs_read_locked_inode(struct inode *inode,
btrfs_err(fs_info,
"error loading props for ino %llu (root %llu): %d",
btrfs_ino(BTRFS_I(inode)),
- root->root_key.objectid, ret);
+ btrfs_root_id(root), ret);
}
if (path != in_path)
btrfs_free_path(path);
@@ -4265,7 +4265,7 @@ static int btrfs_unlink_subvol(struct btrfs_trans_handle *trans,
/* This needs to handle no-key deletions later on */
if (btrfs_ino(inode) == BTRFS_FIRST_FREE_OBJECTID) {
- objectid = inode->root->root_key.objectid;
+ objectid = btrfs_root_id(inode->root);
} else if (btrfs_ino(inode) == BTRFS_EMPTY_SUBVOL_DIR_OBJECTID) {
objectid = inode->location.objectid;
} else {
@@ -4323,7 +4323,7 @@ static int btrfs_unlink_subvol(struct btrfs_trans_handle *trans,
btrfs_release_path(path);
} else {
ret = btrfs_del_root_ref(trans, objectid,
- root->root_key.objectid, dir_ino,
+ btrfs_root_id(root), dir_ino,
&index, &fname.disk_name);
if (ret) {
btrfs_abort_transaction(trans, ret);
@@ -4373,7 +4373,7 @@ static noinline int may_destroy_subvol(struct btrfs_root *root)
dir_id, &name, 0);
if (di && !IS_ERR(di)) {
btrfs_dir_item_key_to_cpu(path->nodes[0], di, &key);
- if (key.objectid == root->root_key.objectid) {
+ if (key.objectid == btrfs_root_id(root)) {
ret = -EPERM;
btrfs_err(fs_info,
"deleting default subvolume %llu is not allowed",
@@ -4383,7 +4383,7 @@ static noinline int may_destroy_subvol(struct btrfs_root *root)
btrfs_release_path(path);
}
- key.objectid = root->root_key.objectid;
+ key.objectid = btrfs_root_id(root);
key.type = BTRFS_ROOT_REF_KEY;
key.offset = (u64)-1;
@@ -4403,7 +4403,7 @@ static noinline int may_destroy_subvol(struct btrfs_root *root)
if (path->slots[0] > 0) {
path->slots[0]--;
btrfs_item_key_to_cpu(path->nodes[0], &key, path->slots[0]);
- if (key.objectid == root->root_key.objectid &&
+ if (key.objectid == btrfs_root_id(root) &&
key.type == BTRFS_ROOT_REF_KEY)
ret = -ENOTEMPTY;
}
@@ -4462,7 +4462,7 @@ int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry)
spin_unlock(&dest->root_item_lock);
btrfs_warn(fs_info,
"attempt to delete subvolume %llu during send",
- dest->root_key.objectid);
+ btrfs_root_id(dest));
ret = -EPERM;
goto out_up_write;
}
@@ -4470,7 +4470,7 @@ int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry)
spin_unlock(&dest->root_item_lock);
btrfs_warn(fs_info,
"attempt to delete subvolume %llu with active swapfile",
- root->root_key.objectid);
+ btrfs_root_id(root));
ret = -EPERM;
goto out_up_write;
}
@@ -4531,7 +4531,7 @@ int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry)
if (!test_and_set_bit(BTRFS_ROOT_ORPHAN_ITEM_INSERTED, &dest->state)) {
ret = btrfs_insert_orphan_item(trans,
fs_info->tree_root,
- dest->root_key.objectid);
+ btrfs_root_id(dest));
if (ret) {
btrfs_abort_transaction(trans, ret);
goto out_end_trans;
@@ -4540,7 +4540,7 @@ int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry)
ret = btrfs_uuid_tree_remove(trans, dest->root_item.uuid,
BTRFS_UUID_KEY_SUBVOL,
- dest->root_key.objectid);
+ btrfs_root_id(dest));
if (ret && ret != -ENOENT) {
btrfs_abort_transaction(trans, ret);
goto out_end_trans;
@@ -4549,7 +4549,7 @@ int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry)
ret = btrfs_uuid_tree_remove(trans,
dest->root_item.received_uuid,
BTRFS_UUID_KEY_RECEIVED_SUBVOL,
- dest->root_key.objectid);
+ btrfs_root_id(dest));
if (ret && ret != -ENOENT) {
btrfs_abort_transaction(trans, ret);
goto out_end_trans;
@@ -5229,7 +5229,7 @@ void btrfs_evict_inode(struct inode *inode)
if (inode->i_nlink &&
((btrfs_root_refs(&root->root_item) != 0 &&
- root->root_key.objectid != BTRFS_ROOT_TREE_OBJECTID) ||
+ btrfs_root_id(root) != BTRFS_ROOT_TREE_OBJECTID) ||
btrfs_is_free_space_inode(BTRFS_I(inode))))
goto out;
@@ -5241,7 +5241,7 @@ void btrfs_evict_inode(struct inode *inode)
if (inode->i_nlink > 0) {
BUG_ON(btrfs_root_refs(&root->root_item) != 0 &&
- root->root_key.objectid != BTRFS_ROOT_TREE_OBJECTID);
+ btrfs_root_id(root) != BTRFS_ROOT_TREE_OBJECTID);
goto out;
}
@@ -5413,7 +5413,7 @@ static int fixup_tree_root_location(struct btrfs_fs_info *fs_info,
}
err = -ENOENT;
- key.objectid = dir->root->root_key.objectid;
+ key.objectid = btrfs_root_id(dir->root);
key.type = BTRFS_ROOT_REF_KEY;
key.offset = location->objectid;
@@ -6372,7 +6372,7 @@ int btrfs_create_new_inode(struct btrfs_trans_handle *trans,
if (ret) {
btrfs_err(fs_info,
"error inheriting props for ino %llu (root %llu): %d",
- btrfs_ino(BTRFS_I(inode)), root->root_key.objectid,
+ btrfs_ino(BTRFS_I(inode)), btrfs_root_id(root),
ret);
}
@@ -6446,7 +6446,7 @@ int btrfs_add_link(struct btrfs_trans_handle *trans,
if (unlikely(ino == BTRFS_FIRST_FREE_OBJECTID)) {
ret = btrfs_add_root_ref(trans, key.objectid,
- root->root_key.objectid, parent_ino,
+ btrfs_root_id(root), parent_ino,
index, name);
} else if (add_backref) {
ret = btrfs_insert_inode_ref(trans, root, name,
@@ -6489,7 +6489,7 @@ int btrfs_add_link(struct btrfs_trans_handle *trans,
u64 local_index;
int err;
err = btrfs_del_root_ref(trans, key.objectid,
- root->root_key.objectid, parent_ino,
+ btrfs_root_id(root), parent_ino,
&local_index, name);
if (err)
btrfs_abort_transaction(trans, err);
@@ -6587,7 +6587,7 @@ static int btrfs_link(struct dentry *old_dentry, struct inode *dir,
int drop_inode = 0;
/* do not allow sys_link's with other subvols of the same device */
- if (root->root_key.objectid != BTRFS_I(inode)->root->root_key.objectid)
+ if (btrfs_root_id(root) != btrfs_root_id(BTRFS_I(inode)->root))
return -EXDEV;
if (inode->i_nlink >= BTRFS_LINK_MAX)
@@ -9433,7 +9433,7 @@ static struct btrfs_trans_handle *insert_prealloc_file_extent(
* or we leak qgroup data reservation.
*/
btrfs_qgroup_free_refroot(inode->root->fs_info,
- inode->root->root_key.objectid, qgroup_released,
+ btrfs_root_id(inode->root), qgroup_released,
BTRFS_QGROUP_RSV_DATA);
return ERR_PTR(ret);
}
@@ -10534,7 +10534,7 @@ static int btrfs_swap_activate(struct swap_info_struct *sis, struct file *file,
btrfs_exclop_finish(fs_info);
btrfs_warn(fs_info,
"cannot activate swapfile because subvolume %llu is being deleted",
- root->root_key.objectid);
+ btrfs_root_id(root));
return -EPERM;
}
atomic_inc(&root->nr_swapfiles);
@@ -10760,7 +10760,7 @@ void btrfs_assert_inode_range_clean(struct btrfs_inode *inode, u64 start, u64 en
if (ordered) {
btrfs_err(root->fs_info,
"found unexpected ordered extent in file range [%llu, %llu] for inode %llu root %llu (ordered range [%llu, %llu])",
- start, end, btrfs_ino(inode), root->root_key.objectid,
+ start, end, btrfs_ino(inode), btrfs_root_id(root),
ordered->file_offset,
ordered->file_offset + ordered->num_bytes - 1);
btrfs_put_ordered_extent(ordered);
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 888dc92c6c75..0c977b7cc253 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -668,7 +668,7 @@ static noinline int create_subvol(struct mnt_idmap *idmap,
/* Tree log can't currently deal with an inode which is a new root. */
btrfs_set_log_full_commit(trans);
- ret = btrfs_qgroup_inherit(trans, 0, objectid, root->root_key.objectid, inherit);
+ ret = btrfs_qgroup_inherit(trans, 0, objectid, btrfs_root_id(root), inherit);
if (ret)
goto out;
@@ -1510,7 +1510,7 @@ static noinline int btrfs_ioctl_subvol_setflags(struct file *file,
spin_unlock(&root->root_item_lock);
btrfs_warn(fs_info,
"Attempt to set subvolume %llu read-write during send",
- root->root_key.objectid);
+ btrfs_root_id(root));
ret = -EPERM;
goto out_drop_sem;
}
@@ -1919,7 +1919,7 @@ static int btrfs_search_path_in_tree_user(struct mnt_idmap *idmap,
struct btrfs_fs_info *fs_info = BTRFS_I(inode)->root->fs_info;
struct super_block *sb = inode->i_sb;
struct btrfs_key upper_limit = BTRFS_I(inode)->location;
- u64 treeid = BTRFS_I(inode)->root->root_key.objectid;
+ u64 treeid = btrfs_root_id(BTRFS_I(inode)->root);
u64 dirid = args->dirid;
unsigned long item_off;
unsigned long item_len;
@@ -2091,7 +2091,7 @@ static noinline int btrfs_ioctl_ino_lookup(struct btrfs_root *root,
* path is reset so it's consistent with btrfs_search_path_in_tree.
*/
if (args->treeid == 0)
- args->treeid = root->root_key.objectid;
+ args->treeid = btrfs_root_id(root);
if (args->objectid == BTRFS_FIRST_FREE_OBJECTID) {
args->name[0] = 0;
@@ -2187,7 +2187,7 @@ static int btrfs_ioctl_get_subvol_info(struct inode *inode, void __user *argp)
fs_info = BTRFS_I(inode)->root->fs_info;
/* Get root_item of inode's subvolume */
- key.objectid = BTRFS_I(inode)->root->root_key.objectid;
+ key.objectid = btrfs_root_id(BTRFS_I(inode)->root);
root = btrfs_get_fs_root(fs_info, key.objectid, true);
if (IS_ERR(root)) {
ret = PTR_ERR(root);
@@ -2302,7 +2302,7 @@ static int btrfs_ioctl_get_subvol_rootref(struct btrfs_root *root,
return PTR_ERR(rootrefs);
}
- objectid = root->root_key.objectid;
+ objectid = btrfs_root_id(root);
key.objectid = objectid;
key.type = BTRFS_ROOT_REF_KEY;
key.offset = rootrefs->min_treeid;
@@ -2981,7 +2981,7 @@ static long btrfs_ioctl_default_subvol(struct file *file, void __user *argp)
ret = PTR_ERR(new_root);
goto out;
}
- if (!is_fstree(new_root->root_key.objectid)) {
+ if (!is_fstree(btrfs_root_id(new_root))) {
ret = -ENOENT;
goto out_free;
}
@@ -3920,7 +3920,7 @@ static long btrfs_ioctl_qgroup_limit(struct file *file, void __user *arg)
qgroupid = sa->qgroupid;
if (!qgroupid) {
/* take the current subvol as qgroup */
- qgroupid = root->root_key.objectid;
+ qgroupid = btrfs_root_id(root);
}
ret = btrfs_limit_qgroup(trans, qgroupid, &sa->lim);
@@ -4051,7 +4051,7 @@ static long _btrfs_ioctl_set_received_subvol(struct file *file,
!btrfs_is_empty_uuid(root_item->received_uuid)) {
ret = btrfs_uuid_tree_remove(trans, root_item->received_uuid,
BTRFS_UUID_KEY_RECEIVED_SUBVOL,
- root->root_key.objectid);
+ btrfs_root_id(root));
if (ret && ret != -ENOENT) {
btrfs_abort_transaction(trans, ret);
btrfs_end_transaction(trans);
@@ -4075,7 +4075,7 @@ static long _btrfs_ioctl_set_received_subvol(struct file *file,
if (received_uuid_changed && !btrfs_is_empty_uuid(sa->uuid)) {
ret = btrfs_uuid_tree_add(trans, sa->uuid,
BTRFS_UUID_KEY_RECEIVED_SUBVOL,
- root->root_key.objectid);
+ btrfs_root_id(root));
if (ret < 0 && ret != -EEXIST) {
btrfs_abort_transaction(trans, ret);
btrfs_end_transaction(trans);
diff --git a/fs/btrfs/locking.c b/fs/btrfs/locking.c
index 72992e74c479..6a0b7abb5bd9 100644
--- a/fs/btrfs/locking.c
+++ b/fs/btrfs/locking.c
@@ -97,7 +97,7 @@ void btrfs_set_buffer_lockdep_class(u64 objectid, struct extent_buffer *eb, int
void btrfs_maybe_reset_lockdep_class(struct btrfs_root *root, struct extent_buffer *eb)
{
if (test_bit(BTRFS_ROOT_RESET_LOCKDEP_CLASS, &root->state))
- btrfs_set_buffer_lockdep_class(root->root_key.objectid,
+ btrfs_set_buffer_lockdep_class(btrfs_root_id(root),
eb, btrfs_header_level(eb));
}
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index b749ba45da2b..03b2f646b2f9 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -332,7 +332,7 @@ static bool can_finish_ordered_extent(struct btrfs_ordered_extent *ordered,
if (WARN_ON_ONCE(len > ordered->bytes_left)) {
btrfs_crit(fs_info,
"bad ordered extent accounting, root=%llu ino=%llu OE offset=%llu OE len=%llu to_dec=%llu left=%llu",
- inode->root->root_key.objectid, btrfs_ino(inode),
+ btrfs_root_id(inode->root), btrfs_ino(inode),
ordered->file_offset, ordered->num_bytes,
len, ordered->bytes_left);
ordered->bytes_left = 0;
diff --git a/fs/btrfs/props.c b/fs/btrfs/props.c
index 2a9b7b029eeb..155570e20f45 100644
--- a/fs/btrfs/props.c
+++ b/fs/btrfs/props.c
@@ -268,7 +268,7 @@ static void inode_prop_iterator(void *ctx,
btrfs_warn(root->fs_info,
"error applying prop %s to ino %llu (root %llu): %d",
handler->xattr_name, btrfs_ino(BTRFS_I(inode)),
- root->root_key.objectid, ret);
+ btrfs_root_id(root), ret);
else
set_bit(BTRFS_INODE_HAS_PROPS, &BTRFS_I(inode)->runtime_flags);
}
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
index 2cba6451d164..b5a055004fbc 100644
--- a/fs/btrfs/qgroup.c
+++ b/fs/btrfs/qgroup.c
@@ -3471,7 +3471,7 @@ static int qgroup_reserve(struct btrfs_root *root, u64 num_bytes, bool enforce,
{
struct btrfs_qgroup *qgroup;
struct btrfs_fs_info *fs_info = root->fs_info;
- u64 ref_root = root->root_key.objectid;
+ u64 ref_root = btrfs_root_id(root);
int ret = 0;
LIST_HEAD(qgroup_list);
@@ -4112,7 +4112,7 @@ static int qgroup_reserve_data(struct btrfs_inode *inode,
int ret;
if (btrfs_qgroup_mode(root->fs_info) == BTRFS_QGROUP_MODE_DISABLED ||
- !is_fstree(root->root_key.objectid) || len == 0)
+ !is_fstree(btrfs_root_id(root)) || len == 0)
return 0;
/* @reserved parameter is mandatory for qgroup */
@@ -4228,7 +4228,7 @@ static int qgroup_free_reserved_data(struct btrfs_inode *inode,
goto out;
freed += changeset.bytes_changed;
}
- btrfs_qgroup_free_refroot(root->fs_info, root->root_key.objectid, freed,
+ btrfs_qgroup_free_refroot(root->fs_info, btrfs_root_id(root), freed,
BTRFS_QGROUP_RSV_DATA);
if (freed_ret)
*freed_ret = freed;
@@ -4269,7 +4269,7 @@ static int __btrfs_qgroup_release_data(struct btrfs_inode *inode,
changeset.bytes_changed, trace_op);
if (free)
btrfs_qgroup_free_refroot(inode->root->fs_info,
- inode->root->root_key.objectid,
+ btrfs_root_id(inode->root),
changeset.bytes_changed, BTRFS_QGROUP_RSV_DATA);
if (released)
*released = changeset.bytes_changed;
@@ -4364,7 +4364,7 @@ int btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes,
int ret;
if (btrfs_qgroup_mode(fs_info) == BTRFS_QGROUP_MODE_DISABLED ||
- !is_fstree(root->root_key.objectid) || num_bytes == 0)
+ !is_fstree(btrfs_root_id(root)) || num_bytes == 0)
return 0;
BUG_ON(num_bytes != round_down(num_bytes, fs_info->nodesize));
@@ -4409,13 +4409,13 @@ void btrfs_qgroup_free_meta_all_pertrans(struct btrfs_root *root)
struct btrfs_fs_info *fs_info = root->fs_info;
if (btrfs_qgroup_mode(fs_info) == BTRFS_QGROUP_MODE_DISABLED ||
- !is_fstree(root->root_key.objectid))
+ !is_fstree(btrfs_root_id(root)))
return;
/* TODO: Update trace point to handle such free */
trace_qgroup_meta_free_all_pertrans(root);
/* Special value -1 means to free all reserved space */
- btrfs_qgroup_free_refroot(fs_info, root->root_key.objectid, (u64)-1,
+ btrfs_qgroup_free_refroot(fs_info, btrfs_root_id(root), (u64)-1,
BTRFS_QGROUP_RSV_META_PERTRANS);
}
@@ -4425,7 +4425,7 @@ void __btrfs_qgroup_free_meta(struct btrfs_root *root, int num_bytes,
struct btrfs_fs_info *fs_info = root->fs_info;
if (btrfs_qgroup_mode(fs_info) == BTRFS_QGROUP_MODE_DISABLED ||
- !is_fstree(root->root_key.objectid))
+ !is_fstree(btrfs_root_id(root)))
return;
/*
@@ -4436,7 +4436,7 @@ void __btrfs_qgroup_free_meta(struct btrfs_root *root, int num_bytes,
num_bytes = sub_root_meta_rsv(root, num_bytes, type);
BUG_ON(num_bytes != round_down(num_bytes, fs_info->nodesize));
trace_qgroup_meta_reserve(root, -(s64)num_bytes, type);
- btrfs_qgroup_free_refroot(fs_info, root->root_key.objectid,
+ btrfs_qgroup_free_refroot(fs_info, btrfs_root_id(root),
num_bytes, type);
}
@@ -4485,13 +4485,13 @@ void btrfs_qgroup_convert_reserved_meta(struct btrfs_root *root, int num_bytes)
struct btrfs_fs_info *fs_info = root->fs_info;
if (btrfs_qgroup_mode(fs_info) == BTRFS_QGROUP_MODE_DISABLED ||
- !is_fstree(root->root_key.objectid))
+ !is_fstree(btrfs_root_id(root)))
return;
/* Same as btrfs_qgroup_free_meta_prealloc() */
num_bytes = sub_root_meta_rsv(root, num_bytes,
BTRFS_QGROUP_RSV_META_PREALLOC);
trace_qgroup_meta_convert(root, num_bytes);
- qgroup_convert_meta(fs_info, root->root_key.objectid, num_bytes);
+ qgroup_convert_meta(fs_info, btrfs_root_id(root), num_bytes);
if (!sb_rdonly(fs_info->sb))
add_root_meta_rsv(root, num_bytes, BTRFS_QGROUP_RSV_META_PERTRANS);
}
@@ -4520,7 +4520,7 @@ void btrfs_qgroup_check_reserved_leak(struct btrfs_inode *inode)
btrfs_ino(inode), unode->val, unode->aux);
}
btrfs_qgroup_free_refroot(inode->root->fs_info,
- inode->root->root_key.objectid,
+ btrfs_root_id(inode->root),
changeset.bytes_changed, BTRFS_QGROUP_RSV_DATA);
}
@@ -4706,7 +4706,7 @@ int btrfs_qgroup_trace_subtree_after_cow(struct btrfs_trans_handle *trans,
if (!btrfs_qgroup_full_accounting(fs_info))
return 0;
- if (!is_fstree(root->root_key.objectid) || !root->reloc_root)
+ if (!is_fstree(btrfs_root_id(root)) || !root->reloc_root)
return 0;
spin_lock(&blocks->lock);
diff --git a/fs/btrfs/reflink.c b/fs/btrfs/reflink.c
index f12ba2b75141..d0a3fcecc46a 100644
--- a/fs/btrfs/reflink.c
+++ b/fs/btrfs/reflink.c
@@ -665,7 +665,7 @@ static int btrfs_extent_same(struct inode *src, u64 loff, u64 olen,
if (root_dst->send_in_progress) {
btrfs_warn_rl(root_dst->fs_info,
"cannot deduplicate to root %llu while send operations are using it (%d in progress)",
- root_dst->root_key.objectid,
+ btrfs_root_id(root_dst),
root_dst->send_in_progress);
spin_unlock(&root_dst->root_item_lock);
return -EAGAIN;
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index 00f33d8c4bf9..4ba1e21ab8a3 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -754,7 +754,7 @@ static struct btrfs_root *create_reloc_root(struct btrfs_trans_handle *trans,
root_key.type = BTRFS_ROOT_ITEM_KEY;
root_key.offset = objectid;
- if (root->root_key.objectid == objectid) {
+ if (btrfs_root_id(root) == objectid) {
u64 commit_root_gen;
/* called by btrfs_init_reloc_root */
@@ -798,7 +798,7 @@ static struct btrfs_root *create_reloc_root(struct btrfs_trans_handle *trans,
btrfs_set_root_level(root_item, btrfs_header_level(eb));
btrfs_set_root_generation(root_item, trans->transid);
- if (root->root_key.objectid == objectid) {
+ if (btrfs_root_id(root) == objectid) {
btrfs_set_root_refs(root_item, 0);
memset(&root_item->drop_progress, 0,
sizeof(struct btrfs_disk_key));
@@ -877,7 +877,7 @@ int btrfs_init_reloc_root(struct btrfs_trans_handle *trans,
* reloc trees never need their own reloc tree.
*/
if (!rc->create_reloc_tree ||
- root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)
+ btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID)
return 0;
if (!trans->reloc_reserved) {
@@ -885,7 +885,7 @@ int btrfs_init_reloc_root(struct btrfs_trans_handle *trans,
trans->block_rsv = rc->block_rsv;
clear_rsv = 1;
}
- reloc_root = create_reloc_root(trans, root, root->root_key.objectid);
+ reloc_root = create_reloc_root(trans, root, btrfs_root_id(root));
if (clear_rsv)
trans->block_rsv = rsv;
if (IS_ERR(reloc_root))
@@ -1027,7 +1027,7 @@ int replace_file_extents(struct btrfs_trans_handle *trans,
return 0;
/* reloc trees always use full backref */
- if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)
+ if (btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID)
parent = leaf->start;
else
parent = 0;
@@ -1056,7 +1056,7 @@ int replace_file_extents(struct btrfs_trans_handle *trans,
* if we are modifying block in fs tree, wait for read_folio
* to complete and drop the extent cache
*/
- if (root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID) {
+ if (btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID) {
if (first) {
inode = btrfs_find_first_inode(root, key.objectid);
first = 0;
@@ -1108,10 +1108,10 @@ int replace_file_extents(struct btrfs_trans_handle *trans,
ref.bytenr = new_bytenr;
ref.num_bytes = num_bytes;
ref.parent = parent;
- ref.owning_root = root->root_key.objectid;
+ ref.owning_root = btrfs_root_id(root);
ref.ref_root = btrfs_header_owner(leaf);
btrfs_init_data_ref(&ref, key.objectid, key.offset,
- root->root_key.objectid, false);
+ btrfs_root_id(root), false);
ret = btrfs_inc_extent_ref(trans, &ref);
if (ret) {
btrfs_abort_transaction(trans, ret);
@@ -1122,10 +1122,10 @@ int replace_file_extents(struct btrfs_trans_handle *trans,
ref.bytenr = bytenr;
ref.num_bytes = num_bytes;
ref.parent = parent;
- ref.owning_root = root->root_key.objectid;
+ ref.owning_root = btrfs_root_id(root);
ref.ref_root = btrfs_header_owner(leaf);
btrfs_init_data_ref(&ref, key.objectid, key.offset,
- root->root_key.objectid, false);
+ btrfs_root_id(root), false);
ret = btrfs_free_extent(trans, &ref);
if (ret) {
btrfs_abort_transaction(trans, ret);
@@ -1181,8 +1181,8 @@ int replace_path(struct btrfs_trans_handle *trans, struct reloc_control *rc,
int ret;
int slot;
- ASSERT(src->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID);
- ASSERT(dest->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID);
+ ASSERT(btrfs_root_id(src) == BTRFS_TREE_RELOC_OBJECTID);
+ ASSERT(btrfs_root_id(dest) != BTRFS_TREE_RELOC_OBJECTID);
last_snapshot = btrfs_root_last_snapshot(&src->root_item);
again:
@@ -1338,8 +1338,8 @@ int replace_path(struct btrfs_trans_handle *trans, struct reloc_control *rc,
ref.bytenr = old_bytenr;
ref.num_bytes = blocksize;
ref.parent = path->nodes[level]->start;
- ref.owning_root = src->root_key.objectid;
- ref.ref_root = src->root_key.objectid;
+ ref.owning_root = btrfs_root_id(src);
+ ref.ref_root = btrfs_root_id(src);
btrfs_init_tree_ref(&ref, level - 1, 0, true);
ret = btrfs_inc_extent_ref(trans, &ref);
if (ret) {
@@ -1351,8 +1351,8 @@ int replace_path(struct btrfs_trans_handle *trans, struct reloc_control *rc,
ref.bytenr = new_bytenr;
ref.num_bytes = blocksize;
ref.parent = 0;
- ref.owning_root = dest->root_key.objectid;
- ref.ref_root = dest->root_key.objectid;
+ ref.owning_root = btrfs_root_id(dest);
+ ref.ref_root = btrfs_root_id(dest);
btrfs_init_tree_ref(&ref, level - 1, 0, true);
ret = btrfs_inc_extent_ref(trans, &ref);
if (ret) {
@@ -1366,7 +1366,7 @@ int replace_path(struct btrfs_trans_handle *trans, struct reloc_control *rc,
ref.num_bytes = blocksize;
ref.parent = path->nodes[level]->start;
ref.owning_root = 0;
- ref.ref_root = src->root_key.objectid;
+ ref.ref_root = btrfs_root_id(src);
btrfs_init_tree_ref(&ref, level - 1, 0, true);
ret = btrfs_free_extent(trans, &ref);
if (ret) {
@@ -1380,7 +1380,7 @@ int replace_path(struct btrfs_trans_handle *trans, struct reloc_control *rc,
ref.num_bytes = blocksize;
ref.parent = 0;
ref.owning_root = 0;
- ref.ref_root = dest->root_key.objectid;
+ ref.ref_root = btrfs_root_id(dest);
btrfs_init_tree_ref(&ref, level - 1, 0, true);
ret = btrfs_free_extent(trans, &ref);
if (ret) {
@@ -1586,7 +1586,7 @@ static int insert_dirty_subvol(struct btrfs_trans_handle *trans,
int ret;
/* @root must be a subvolume tree root with a valid reloc tree */
- ASSERT(root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID);
+ ASSERT(btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID);
ASSERT(reloc_root);
reloc_root_item = &reloc_root->root_item;
@@ -1615,7 +1615,7 @@ static int clean_dirty_subvols(struct reloc_control *rc)
list_for_each_entry_safe(root, next, &rc->dirty_subvol_roots,
reloc_dirty_list) {
- if (root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID) {
+ if (btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID) {
/* Merged subvolume, cleanup its reloc root */
struct btrfs_root *reloc_root = root->reloc_root;
@@ -1890,13 +1890,13 @@ int prepare_to_merge(struct reloc_control *rc, int err)
if (root->reloc_root) {
btrfs_err(fs_info,
"reloc tree mismatch, root %lld has reloc root key (%lld %u %llu) gen %llu, expect reloc root key (%lld %u %llu) gen %llu",
- root->root_key.objectid,
- root->reloc_root->root_key.objectid,
+ btrfs_root_id(root),
+ btrfs_root_id(root->reloc_root),
root->reloc_root->root_key.type,
root->reloc_root->root_key.offset,
btrfs_root_generation(
&root->reloc_root->root_item),
- reloc_root->root_key.objectid,
+ btrfs_root_id(reloc_root),
reloc_root->root_key.type,
reloc_root->root_key.offset,
btrfs_root_generation(
@@ -1904,8 +1904,8 @@ int prepare_to_merge(struct reloc_control *rc, int err)
} else {
btrfs_err(fs_info,
"reloc tree mismatch, root %lld has no reloc root, expect reloc root key (%lld %u %llu) gen %llu",
- root->root_key.objectid,
- reloc_root->root_key.objectid,
+ btrfs_root_id(root),
+ btrfs_root_id(reloc_root),
reloc_root->root_key.type,
reloc_root->root_key.offset,
btrfs_root_generation(
@@ -2162,7 +2162,7 @@ struct btrfs_root *select_reloc_root(struct btrfs_trans_handle *trans,
return ERR_PTR(-EUCLEAN);
}
- if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID) {
+ if (btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID) {
ret = record_reloc_root_in_trans(trans, root);
if (ret)
return ERR_PTR(ret);
@@ -2269,7 +2269,7 @@ struct btrfs_root *select_one_root(struct btrfs_backref_node *node)
if (!test_bit(BTRFS_ROOT_SHAREABLE, &root->state))
return root;
- if (root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID)
+ if (btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID)
fs_root = root;
if (next != node)
@@ -2495,7 +2495,7 @@ static int do_relocation(struct btrfs_trans_handle *trans,
btrfs_mark_buffer_dirty(trans, upper->eb);
btrfs_init_tree_ref(&ref, node->level,
- root->root_key.objectid, false);
+ btrfs_root_id(root), false);
ret = btrfs_inc_extent_ref(trans, &ref);
if (!ret)
ret = btrfs_drop_subtree(trans, root, eb,
@@ -4463,7 +4463,7 @@ int btrfs_reloc_cow_block(struct btrfs_trans_handle *trans,
btrfs_root_last_snapshot(&root->root_item))
first_cow = 1;
- if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID &&
+ if (btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID &&
rc->create_reloc_tree) {
WARN_ON(!first_cow && level == 0);
@@ -4558,7 +4558,7 @@ int btrfs_reloc_post_snapshot(struct btrfs_trans_handle *trans,
new_root = pending->snap;
reloc_root = create_reloc_root(trans, root->reloc_root,
- new_root->root_key.objectid);
+ btrfs_root_id(new_root));
if (IS_ERR(reloc_root))
return PTR_ERR(reloc_root);
diff --git a/fs/btrfs/root-tree.c b/fs/btrfs/root-tree.c
index 7007f9e0c972..39a920efd9bc 100644
--- a/fs/btrfs/root-tree.c
+++ b/fs/btrfs/root-tree.c
@@ -149,7 +149,7 @@ int btrfs_update_root(struct btrfs_trans_handle *trans, struct btrfs_root
btrfs_crit(fs_info,
"unable to find root key (%llu %u %llu) in tree %llu",
key->objectid, key->type, key->offset,
- root->root_key.objectid);
+ btrfs_root_id(root));
ret = -EUCLEAN;
btrfs_abort_transaction(trans, ret);
goto out;
diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
index 342fe5ff0f05..0ff587bf43e0 100644
--- a/fs/btrfs/send.c
+++ b/fs/btrfs/send.c
@@ -392,9 +392,9 @@ static void inconsistent_snapshot_error(struct send_ctx *sctx,
btrfs_err(sctx->send_root->fs_info,
"Send: inconsistent snapshot, found %s %s for inode %llu without updated inode item, send root is %llu, parent root is %llu",
result_string, what, sctx->cmp_key->objectid,
- sctx->send_root->root_key.objectid,
+ btrfs_root_id(sctx->send_root),
(sctx->parent_root ?
- sctx->parent_root->root_key.objectid : 0));
+ btrfs_root_id(sctx->parent_root) : 0));
}
__maybe_unused
@@ -1316,9 +1316,9 @@ static int __clone_root_cmp_bsearch(const void *key, const void *elt)
u64 root = (u64)(uintptr_t)key;
const struct clone_root *cr = elt;
- if (root < cr->root->root_key.objectid)
+ if (root < btrfs_root_id(cr->root))
return -1;
- if (root > cr->root->root_key.objectid)
+ if (root > btrfs_root_id(cr->root))
return 1;
return 0;
}
@@ -1328,9 +1328,9 @@ static int __clone_root_cmp_sort(const void *e1, const void *e2)
const struct clone_root *cr1 = e1;
const struct clone_root *cr2 = e2;
- if (cr1->root->root_key.objectid < cr2->root->root_key.objectid)
+ if (btrfs_root_id(cr1->root) < btrfs_root_id(cr2->root))
return -1;
- if (cr1->root->root_key.objectid > cr2->root->root_key.objectid)
+ if (btrfs_root_id(cr1->root) > btrfs_root_id(cr2->root))
return 1;
return 0;
}
@@ -1778,7 +1778,7 @@ static int read_symlink(struct btrfs_root *root,
*/
btrfs_err(root->fs_info,
"Found empty symlink inode %llu at root %llu",
- ino, root->root_key.objectid);
+ ino, btrfs_root_id(root));
ret = -EIO;
goto out;
}
@@ -2532,7 +2532,7 @@ static int send_subvol_begin(struct send_ctx *sctx)
return -ENOMEM;
}
- key.objectid = send_root->root_key.objectid;
+ key.objectid = btrfs_root_id(send_root);
key.type = BTRFS_ROOT_BACKREF_KEY;
key.offset = 0;
@@ -2548,7 +2548,7 @@ static int send_subvol_begin(struct send_ctx *sctx)
leaf = path->nodes[0];
btrfs_item_key_to_cpu(leaf, &key, path->slots[0]);
if (key.type != BTRFS_ROOT_BACKREF_KEY ||
- key.objectid != send_root->root_key.objectid) {
+ key.objectid != btrfs_root_id(send_root)) {
ret = -ENOENT;
goto out;
}
@@ -5318,7 +5318,7 @@ static int put_file_data(struct send_ctx *sctx, u64 offset, u32 len)
btrfs_err(fs_info,
"send: IO error at offset %llu for inode %llu root %llu",
folio_pos(folio), sctx->cur_ino,
- sctx->send_root->root_key.objectid);
+ btrfs_root_id(sctx->send_root));
folio_put(folio);
ret = -EIO;
break;
@@ -5389,7 +5389,7 @@ static int send_clone(struct send_ctx *sctx,
btrfs_debug(sctx->send_root->fs_info,
"send_clone offset=%llu, len=%d, clone_root=%llu, clone_inode=%llu, clone_offset=%llu",
- offset, len, clone_root->root->root_key.objectid,
+ offset, len, btrfs_root_id(clone_root->root),
clone_root->ino, clone_root->offset);
p = fs_path_alloc();
@@ -7338,7 +7338,7 @@ static int search_key_again(const struct send_ctx *sctx,
"send: key (%llu %u %llu) not found in %s root %llu, lowest_level %d, slot %d",
key->objectid, key->type, key->offset,
(root == sctx->parent_root ? "parent" : "send"),
- root->root_key.objectid, path->lowest_level,
+ btrfs_root_id(root), path->lowest_level,
path->slots[path->lowest_level]);
return -EUCLEAN;
}
@@ -8072,7 +8072,7 @@ static void btrfs_root_dec_send_in_progress(struct btrfs_root* root)
if (root->send_in_progress < 0)
btrfs_err(root->fs_info,
"send_in_progress unbalanced %d root %llu",
- root->send_in_progress, root->root_key.objectid);
+ root->send_in_progress, btrfs_root_id(root));
spin_unlock(&root->root_item_lock);
}
@@ -8080,7 +8080,7 @@ static void dedupe_in_progress_warn(const struct btrfs_root *root)
{
btrfs_warn_rl(root->fs_info,
"cannot use root %llu for send while deduplications on it are in progress (%d in progress)",
- root->root_key.objectid, root->dedupe_in_progress);
+ btrfs_root_id(root), root->dedupe_in_progress);
}
long btrfs_ioctl_send(struct inode *inode, struct btrfs_ioctl_send_args *arg)
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 7e44ccaf348f..f0ce75df4e48 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -1098,9 +1098,9 @@ static int btrfs_show_options(struct seq_file *seq, struct dentry *dentry)
if (btrfs_test_opt(info, REF_VERIFY))
seq_puts(seq, ",ref_verify");
seq_printf(seq, ",subvolid=%llu",
- BTRFS_I(d_inode(dentry))->root->root_key.objectid);
+ btrfs_root_id(BTRFS_I(d_inode(dentry))->root));
subvol_name = btrfs_get_subvol_name_from_objectid(info,
- BTRFS_I(d_inode(dentry))->root->root_key.objectid);
+ btrfs_root_id(BTRFS_I(d_inode(dentry))->root));
if (!IS_ERR(subvol_name)) {
seq_puts(seq, ",subvol=");
seq_escape(seq, subvol_name, " \t\n\\");
@@ -1152,7 +1152,7 @@ static struct dentry *mount_subvol(const char *subvol_name, u64 subvol_objectid,
struct super_block *s = root->d_sb;
struct btrfs_fs_info *fs_info = btrfs_sb(s);
struct inode *root_inode = d_inode(root);
- u64 root_objectid = BTRFS_I(root_inode)->root->root_key.objectid;
+ u64 root_objectid = btrfs_root_id(BTRFS_I(root_inode)->root);
ret = 0;
if (!is_subvolume_inode(root_inode)) {
@@ -1775,9 +1775,9 @@ static int btrfs_statfs(struct dentry *dentry, struct kstatfs *buf)
buf->f_fsid.val[1] = be32_to_cpu(fsid[1]) ^ be32_to_cpu(fsid[3]);
/* Mask in the root object ID too, to disambiguate subvols */
buf->f_fsid.val[0] ^=
- BTRFS_I(d_inode(dentry))->root->root_key.objectid >> 32;
+ btrfs_root_id(BTRFS_I(d_inode(dentry))->root) >> 32;
buf->f_fsid.val[1] ^=
- BTRFS_I(d_inode(dentry))->root->root_key.objectid;
+ btrfs_root_id(BTRFS_I(d_inode(dentry))->root);
return 0;
}
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index df2e58aa824a..8a82df2f9627 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -426,7 +426,7 @@ static int record_root_in_trans(struct btrfs_trans_handle *trans,
return 0;
}
radix_tree_tag_set(&fs_info->fs_roots_radix,
- (unsigned long)root->root_key.objectid,
+ (unsigned long) btrfs_root_id(root),
BTRFS_ROOT_TRANS_TAG);
spin_unlock(&fs_info->fs_roots_radix_lock);
root->last_trans = trans->transid;
@@ -472,7 +472,7 @@ void btrfs_add_dropped_root(struct btrfs_trans_handle *trans,
/* Make sure we don't try to update the root at commit time */
spin_lock(&fs_info->fs_roots_radix_lock);
radix_tree_tag_clear(&fs_info->fs_roots_radix,
- (unsigned long)root->root_key.objectid,
+ (unsigned long) btrfs_root_id(root),
BTRFS_ROOT_TRANS_TAG);
spin_unlock(&fs_info->fs_roots_radix_lock);
}
@@ -550,7 +550,7 @@ static inline bool need_reserve_reloc_root(struct btrfs_root *root)
if (!fs_info->reloc_ctl ||
!test_bit(BTRFS_ROOT_SHAREABLE, &root->state) ||
- root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID ||
+ btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID ||
root->reloc_root)
return false;
@@ -1229,7 +1229,7 @@ int btrfs_wait_tree_log_extents(struct btrfs_root *log_root, int mark)
bool errors = false;
int err;
- ASSERT(log_root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID);
+ ASSERT(btrfs_root_id(log_root) == BTRFS_TREE_LOG_OBJECTID);
err = __btrfs_wait_marked_extents(fs_info, dirty_pages);
if ((mark & EXTENT_DIRTY) &&
@@ -1492,7 +1492,7 @@ static noinline int commit_fs_roots(struct btrfs_trans_handle *trans)
ASSERT(atomic_read(&root->log_commit[1]) == 0);
radix_tree_tag_clear(&fs_info->fs_roots_radix,
- (unsigned long)root->root_key.objectid,
+ (unsigned long) btrfs_root_id(root),
BTRFS_ROOT_TRANS_TAG);
btrfs_qgroup_free_meta_all_pertrans(root);
spin_unlock(&fs_info->fs_roots_radix_lock);
@@ -1583,8 +1583,8 @@ static int qgroup_account_snapshot(struct btrfs_trans_handle *trans,
goto out;
/* Now qgroup are all updated, we can inherit it to new qgroups */
- ret = btrfs_qgroup_inherit(trans, src->root_key.objectid, dst_objectid,
- parent->root_key.objectid, inherit);
+ ret = btrfs_qgroup_inherit(trans, btrfs_root_id(src), dst_objectid,
+ btrfs_root_id(parent), inherit);
if (ret < 0)
goto out;
@@ -1822,7 +1822,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
* insert root back/forward references
*/
ret = btrfs_add_root_ref(trans, objectid,
- parent_root->root_key.objectid,
+ btrfs_root_id(parent_root),
btrfs_ino(BTRFS_I(parent_inode)), index,
&fname.disk_name);
if (ret) {
@@ -1855,8 +1855,8 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
ret = qgroup_account_snapshot(trans, root, parent_root,
pending->inherit, objectid);
else if (btrfs_qgroup_mode(fs_info) == BTRFS_QGROUP_MODE_SIMPLE)
- ret = btrfs_qgroup_inherit(trans, root->root_key.objectid, objectid,
- parent_root->root_key.objectid, pending->inherit);
+ ret = btrfs_qgroup_inherit(trans, btrfs_root_id(root), objectid,
+ btrfs_root_id(parent_root), pending->inherit);
if (ret < 0)
goto fail;
@@ -2623,7 +2623,7 @@ int btrfs_clean_one_deleted_snapshot(struct btrfs_fs_info *fs_info)
list_del_init(&root->root_list);
spin_unlock(&fs_info->trans_lock);
- btrfs_debug(fs_info, "cleaner removing %llu", root->root_key.objectid);
+ btrfs_debug(fs_info, "cleaner removing %llu", btrfs_root_id(root));
btrfs_kill_all_delayed_nodes(root);
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index 1c7efb7c2160..a4e73081d477 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -391,7 +391,7 @@ static int overwrite_item(struct btrfs_trans_handle *trans,
* the leaf before writing into the log tree. See the comments at
* copy_items() for more details.
*/
- ASSERT(root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID);
+ ASSERT(btrfs_root_id(root) != BTRFS_TREE_LOG_OBJECTID);
item_size = btrfs_item_size(eb, slot);
src_ptr = btrfs_item_ptr_offset(eb, slot);
@@ -765,8 +765,8 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans,
.action = BTRFS_ADD_DELAYED_REF,
.bytenr = ins.objectid,
.num_bytes = ins.offset,
- .owning_root = root->root_key.objectid,
- .ref_root = root->root_key.objectid,
+ .owning_root = btrfs_root_id(root),
+ .ref_root = btrfs_root_id(root),
};
btrfs_init_data_ref(&ref, key->objectid, offset,
0, false);
@@ -779,7 +779,7 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans,
* allocation tree
*/
ret = btrfs_alloc_logged_file_extent(trans,
- root->root_key.objectid,
+ btrfs_root_id(root),
key->objectid, offset, &ins);
if (ret)
goto out;
@@ -3047,7 +3047,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
if (ret != -ENOSPC)
btrfs_err(fs_info,
"failed to update log for root %llu ret %d",
- root->root_key.objectid, ret);
+ btrfs_root_id(root), ret);
btrfs_wait_tree_log_extents(log, mark);
mutex_unlock(&log_root_tree->log_mutex);
goto out;
diff --git a/fs/btrfs/tree-mod-log.c b/fs/btrfs/tree-mod-log.c
index 43b3accbed7a..fa45b5fb9683 100644
--- a/fs/btrfs/tree-mod-log.c
+++ b/fs/btrfs/tree-mod-log.c
@@ -1004,7 +1004,7 @@ struct extent_buffer *btrfs_get_old_root(struct btrfs_root *root, u64 time_seq)
free_extent_buffer(eb_root);
check.level = level;
- check.owner_root = root->root_key.objectid;
+ check.owner_root = btrfs_root_id(root);
old = read_tree_block(fs_info, logical, &check);
if (WARN_ON(IS_ERR(old) || !extent_buffer_uptodate(old))) {
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] btrfs: change root->root_key.objectid to btrfs_root_id()
2024-04-15 20:20 [PATCH] btrfs: change root->root_key.objectid to btrfs_root_id() Josef Bacik
@ 2024-04-15 21:20 ` Filipe Manana
2024-04-17 12:01 ` Johannes Thumshirn
1 sibling, 0 replies; 3+ messages in thread
From: Filipe Manana @ 2024-04-15 21:20 UTC (permalink / raw)
To: Josef Bacik; +Cc: linux-btrfs, kernel-team
On Mon, Apr 15, 2024 at 9:21 PM Josef Bacik <josef@toxicpanda.com> wrote:
>
> A comment from Filipe on one of my previous cleanups brought my
> attention to a new helper we have for getting the root id of a root,
> which makes it easier to read in the code.
>
> The changes where made with the following Coccinelle semantic patch:
>
> // <smpl>
> @@
> expression E,E1;
> @@
> (
> E->root_key.objectid = E1
> |
> - E->root_key.objectid
> + btrfs_root_id(E)
> )
> // </smpl>
>
> Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Looks good, thanks.
> ---
> fs/btrfs/backref.c | 8 +++---
> fs/btrfs/block-rsv.c | 10 +++----
> fs/btrfs/compression.c | 2 +-
> fs/btrfs/ctree.c | 36 ++++++++++++------------
> fs/btrfs/defrag.c | 2 +-
> fs/btrfs/delayed-inode.c | 2 +-
> fs/btrfs/disk-io.c | 36 ++++++++++++------------
> fs/btrfs/export.c | 8 +++---
> fs/btrfs/extent-tree.c | 50 ++++++++++++++++-----------------
> fs/btrfs/file-item.c | 10 +++----
> fs/btrfs/file.c | 22 +++++++--------
> fs/btrfs/inode-item.c | 4 +--
> fs/btrfs/inode.c | 58 +++++++++++++++++++-------------------
> fs/btrfs/ioctl.c | 20 +++++++-------
> fs/btrfs/locking.c | 2 +-
> fs/btrfs/ordered-data.c | 2 +-
> fs/btrfs/props.c | 2 +-
> fs/btrfs/qgroup.c | 26 ++++++++---------
> fs/btrfs/reflink.c | 2 +-
> fs/btrfs/relocation.c | 60 ++++++++++++++++++++--------------------
> fs/btrfs/root-tree.c | 2 +-
> fs/btrfs/send.c | 28 +++++++++----------
> fs/btrfs/super.c | 10 +++----
> fs/btrfs/transaction.c | 22 +++++++--------
> fs/btrfs/tree-log.c | 10 +++----
> fs/btrfs/tree-mod-log.c | 2 +-
> 26 files changed, 218 insertions(+), 218 deletions(-)
>
> diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c
> index 574fb1d515b3..0bc81b340295 100644
> --- a/fs/btrfs/backref.c
> +++ b/fs/btrfs/backref.c
> @@ -261,7 +261,7 @@ static void update_share_count(struct share_check *sc, int oldcount,
> else if (oldcount < 1 && newcount > 0)
> sc->share_count++;
>
> - if (newref->root_id == sc->root->root_key.objectid &&
> + if (newref->root_id == btrfs_root_id(sc->root) &&
> newref->wanted_disk_byte == sc->data_bytenr &&
> newref->key_for_search.objectid == sc->inum)
> sc->self_ref_count += newref->count;
> @@ -769,7 +769,7 @@ static int resolve_indirect_refs(struct btrfs_backref_walk_ctx *ctx,
> continue;
> }
>
> - if (sc && ref->root_id != sc->root->root_key.objectid) {
> + if (sc && ref->root_id != btrfs_root_id(sc->root)) {
> free_pref(ref);
> ret = BACKREF_FOUND_SHARED;
> goto out;
> @@ -2623,7 +2623,7 @@ static int iterate_inode_refs(u64 inum, struct inode_fs_paths *ipath)
> btrfs_debug(fs_root->fs_info,
> "following ref at offset %u for inode %llu in tree %llu",
> cur, found_key.objectid,
> - fs_root->root_key.objectid);
> + btrfs_root_id(fs_root));
> ret = inode_to_path(parent, name_len,
> (unsigned long)(iref + 1), eb, ipath);
> if (ret)
> @@ -3361,7 +3361,7 @@ static int handle_indirect_tree_backref(struct btrfs_trans_handle *trans,
> if (btrfs_node_blockptr(eb, path->slots[level]) != cur->bytenr) {
> btrfs_err(fs_info,
> "couldn't find block (%llu) (level %d) in tree (%llu) with key (%llu %u %llu)",
> - cur->bytenr, level - 1, root->root_key.objectid,
> + cur->bytenr, level - 1, btrfs_root_id(root),
> tree_key->objectid, tree_key->type, tree_key->offset);
> btrfs_put_root(root);
> ret = -ENOENT;
> diff --git a/fs/btrfs/block-rsv.c b/fs/btrfs/block-rsv.c
> index 95c174f9fd4f..9cd722da1d86 100644
> --- a/fs/btrfs/block-rsv.c
> +++ b/fs/btrfs/block-rsv.c
> @@ -341,9 +341,9 @@ void btrfs_update_global_block_rsv(struct btrfs_fs_info *fs_info)
> read_lock(&fs_info->global_root_lock);
> rbtree_postorder_for_each_entry_safe(root, tmp, &fs_info->global_root_tree,
> rb_node) {
> - if (root->root_key.objectid == BTRFS_EXTENT_TREE_OBJECTID ||
> - root->root_key.objectid == BTRFS_CSUM_TREE_OBJECTID ||
> - root->root_key.objectid == BTRFS_FREE_SPACE_TREE_OBJECTID) {
> + if (btrfs_root_id(root) == BTRFS_EXTENT_TREE_OBJECTID ||
> + btrfs_root_id(root) == BTRFS_CSUM_TREE_OBJECTID ||
> + btrfs_root_id(root) == BTRFS_FREE_SPACE_TREE_OBJECTID) {
> num_bytes += btrfs_root_used(&root->root_item);
> min_items++;
> }
> @@ -406,7 +406,7 @@ void btrfs_init_root_block_rsv(struct btrfs_root *root)
> {
> struct btrfs_fs_info *fs_info = root->fs_info;
>
> - switch (root->root_key.objectid) {
> + switch (btrfs_root_id(root)) {
> case BTRFS_CSUM_TREE_OBJECTID:
> case BTRFS_EXTENT_TREE_OBJECTID:
> case BTRFS_FREE_SPACE_TREE_OBJECTID:
> @@ -469,7 +469,7 @@ static struct btrfs_block_rsv *get_block_rsv(
> if (test_bit(BTRFS_ROOT_SHAREABLE, &root->state) ||
> (root == fs_info->uuid_root) ||
> (trans->adding_csums &&
> - root->root_key.objectid == BTRFS_CSUM_TREE_OBJECTID))
> + btrfs_root_id(root) == BTRFS_CSUM_TREE_OBJECTID))
> block_rsv = trans->block_rsv;
>
> if (!block_rsv)
> diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
> index c981903c8cd7..6441e47d8a5e 100644
> --- a/fs/btrfs/compression.c
> +++ b/fs/btrfs/compression.c
> @@ -992,7 +992,7 @@ int btrfs_compress_filemap_get_folio(struct address_space *mapping, u64 start,
>
> btrfs_crit(inode->root->fs_info,
> "failed to get page cache, root %lld ino %llu file offset %llu",
> - inode->root->root_key.objectid, btrfs_ino(inode), start);
> + btrfs_root_id(inode->root), btrfs_ino(inode), start);
> return -ENOENT;
> }
> *in_folio_ret = in_folio;
> diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c
> index f6a98e7cf006..adcec4d247c5 100644
> --- a/fs/btrfs/ctree.c
> +++ b/fs/btrfs/ctree.c
> @@ -291,7 +291,7 @@ static void add_root_to_dirty_list(struct btrfs_root *root)
> spin_lock(&fs_info->trans_lock);
> if (!test_and_set_bit(BTRFS_ROOT_DIRTY, &root->state)) {
> /* Want the extent tree to be the last on the list */
> - if (root->root_key.objectid == BTRFS_EXTENT_TREE_OBJECTID)
> + if (btrfs_root_id(root) == BTRFS_EXTENT_TREE_OBJECTID)
> list_move_tail(&root->dirty_list,
> &fs_info->dirty_cowonly_roots);
> else
> @@ -454,7 +454,7 @@ static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans,
> }
> } else {
> refs = 1;
> - if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID ||
> + if (btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID ||
> btrfs_header_backref_rev(buf) < BTRFS_MIXED_BACKREF_REV)
> flags = BTRFS_BLOCK_FLAG_FULL_BACKREF;
> else
> @@ -466,14 +466,14 @@ static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans,
> !(flags & BTRFS_BLOCK_FLAG_FULL_BACKREF));
>
> if (refs > 1) {
> - if ((owner == root->root_key.objectid ||
> - root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID) &&
> + if ((owner == btrfs_root_id(root) ||
> + btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID) &&
> !(flags & BTRFS_BLOCK_FLAG_FULL_BACKREF)) {
> ret = btrfs_inc_ref(trans, root, buf, 1);
> if (ret)
> return ret;
>
> - if (root->root_key.objectid ==
> + if (btrfs_root_id(root) ==
> BTRFS_TREE_RELOC_OBJECTID) {
> ret = btrfs_dec_ref(trans, root, buf, 0);
> if (ret)
> @@ -485,7 +485,7 @@ static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans,
> new_flags |= BTRFS_BLOCK_FLAG_FULL_BACKREF;
> } else {
>
> - if (root->root_key.objectid ==
> + if (btrfs_root_id(root) ==
> BTRFS_TREE_RELOC_OBJECTID)
> ret = btrfs_inc_ref(trans, root, cow, 1);
> else
> @@ -500,7 +500,7 @@ static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans,
> }
> } else {
> if (flags & BTRFS_BLOCK_FLAG_FULL_BACKREF) {
> - if (root->root_key.objectid ==
> + if (btrfs_root_id(root) ==
> BTRFS_TREE_RELOC_OBJECTID)
> ret = btrfs_inc_ref(trans, root, cow, 1);
> else
> @@ -563,13 +563,13 @@ int btrfs_force_cow_block(struct btrfs_trans_handle *trans,
> else
> btrfs_node_key(buf, &disk_key, 0);
>
> - if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID) {
> + if (btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID) {
> if (parent)
> parent_start = parent->start;
> reloc_src_root = btrfs_header_owner(buf);
> }
> cow = btrfs_alloc_tree_block(trans, root, parent_start,
> - root->root_key.objectid, &disk_key, level,
> + btrfs_root_id(root), &disk_key, level,
> search_start, empty_size, reloc_src_root, nest);
> if (IS_ERR(cow))
> return PTR_ERR(cow);
> @@ -582,10 +582,10 @@ int btrfs_force_cow_block(struct btrfs_trans_handle *trans,
> btrfs_set_header_backref_rev(cow, BTRFS_MIXED_BACKREF_REV);
> btrfs_clear_header_flag(cow, BTRFS_HEADER_FLAG_WRITTEN |
> BTRFS_HEADER_FLAG_RELOC);
> - if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)
> + if (btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID)
> btrfs_set_header_flag(cow, BTRFS_HEADER_FLAG_RELOC);
> else
> - btrfs_set_header_owner(cow, root->root_key.objectid);
> + btrfs_set_header_owner(cow, btrfs_root_id(root));
>
> write_extent_buffer_fsid(cow, fs_info->fs_devices->metadata_uuid);
>
> @@ -609,7 +609,7 @@ int btrfs_force_cow_block(struct btrfs_trans_handle *trans,
>
> if (buf == root->node) {
> WARN_ON(parent && parent != buf);
> - if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID ||
> + if (btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID ||
> btrfs_header_backref_rev(buf) < BTRFS_MIXED_BACKREF_REV)
> parent_start = buf->start;
>
> @@ -685,7 +685,7 @@ static inline int should_cow_block(struct btrfs_trans_handle *trans,
> */
> if (btrfs_header_generation(buf) == trans->transid &&
> !btrfs_header_flag(buf, BTRFS_HEADER_FLAG_WRITTEN) &&
> - !(root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID &&
> + !(btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID &&
> btrfs_header_flag(buf, BTRFS_HEADER_FLAG_RELOC)) &&
> !test_bit(BTRFS_ROOT_FORCE_COW, &root->state))
> return 0;
> @@ -1511,7 +1511,7 @@ read_block_for_search(struct btrfs_root *root, struct btrfs_path *p,
> check.has_first_key = true;
> check.level = parent_level - 1;
> check.transid = gen;
> - check.owner_root = root->root_key.objectid;
> + check.owner_root = btrfs_root_id(root);
>
> /*
> * If we need to read an extent buffer from disk and we are holding locks
> @@ -1556,7 +1556,7 @@ read_block_for_search(struct btrfs_root *root, struct btrfs_path *p,
> btrfs_release_path(p);
> return -EIO;
> }
> - if (btrfs_check_eb_owner(tmp, root->root_key.objectid)) {
> + if (btrfs_check_eb_owner(tmp, btrfs_root_id(root))) {
> free_extent_buffer(tmp);
> btrfs_release_path(p);
> return -EUCLEAN;
> @@ -2865,7 +2865,7 @@ static noinline int insert_new_root(struct btrfs_trans_handle *trans,
> else
> btrfs_node_key(lower, &lower_key, 0);
>
> - c = btrfs_alloc_tree_block(trans, root, 0, root->root_key.objectid,
> + c = btrfs_alloc_tree_block(trans, root, 0, btrfs_root_id(root),
> &lower_key, level, root->node->start, 0,
> 0, BTRFS_NESTING_NEW_ROOT);
> if (IS_ERR(c))
> @@ -3009,7 +3009,7 @@ static noinline int split_node(struct btrfs_trans_handle *trans,
> mid = (c_nritems + 1) / 2;
> btrfs_node_key(c, &disk_key, mid);
>
> - split = btrfs_alloc_tree_block(trans, root, 0, root->root_key.objectid,
> + split = btrfs_alloc_tree_block(trans, root, 0, btrfs_root_id(root),
> &disk_key, level, c->start, 0,
> 0, BTRFS_NESTING_SPLIT);
> if (IS_ERR(split))
> @@ -3761,7 +3761,7 @@ static noinline int split_leaf(struct btrfs_trans_handle *trans,
> * BTRFS_NESTING_SPLIT_THE_SPLITTENING if we need to, but for now just
> * use BTRFS_NESTING_NEW_ROOT.
> */
> - right = btrfs_alloc_tree_block(trans, root, 0, root->root_key.objectid,
> + right = btrfs_alloc_tree_block(trans, root, 0, btrfs_root_id(root),
> &disk_key, 0, l->start, 0, 0,
> num_doubles ? BTRFS_NESTING_NEW_ROOT :
> BTRFS_NESTING_SPLIT);
> diff --git a/fs/btrfs/defrag.c b/fs/btrfs/defrag.c
> index f015fa1b6301..407ccec3e57e 100644
> --- a/fs/btrfs/defrag.c
> +++ b/fs/btrfs/defrag.c
> @@ -147,7 +147,7 @@ int btrfs_add_inode_defrag(struct btrfs_trans_handle *trans,
>
> defrag->ino = btrfs_ino(inode);
> defrag->transid = transid;
> - defrag->root = root->root_key.objectid;
> + defrag->root = btrfs_root_id(root);
> defrag->extent_thresh = extent_thresh;
>
> spin_lock(&fs_info->defrag_inodes_lock);
> diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c
> index 121ab890bd05..95a0497fa866 100644
> --- a/fs/btrfs/delayed-inode.c
> +++ b/fs/btrfs/delayed-inode.c
> @@ -1651,7 +1651,7 @@ int btrfs_delete_delayed_dir_index(struct btrfs_trans_handle *trans,
> if (unlikely(ret)) {
> btrfs_err(trans->fs_info,
> "err add delayed dir index item(index: %llu) into the deletion tree of the delayed node(root id: %llu, inode id: %llu, errno: %d)",
> - index, node->root->root_key.objectid,
> + index, btrfs_root_id(node->root),
> node->inode_id, ret);
> btrfs_delayed_item_release_metadata(dir->root, item);
> btrfs_release_delayed_item(item);
> diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
> index 0474e9b6d302..22bc34d2f89a 100644
> --- a/fs/btrfs/disk-io.c
> +++ b/fs/btrfs/disk-io.c
> @@ -776,7 +776,7 @@ int btrfs_global_root_insert(struct btrfs_root *root)
> if (tmp) {
> ret = -EEXIST;
> btrfs_warn(fs_info, "global root %llu %llu already exists",
> - root->root_key.objectid, root->root_key.offset);
> + btrfs_root_id(root), root->root_key.offset);
> }
> return ret;
> }
> @@ -1012,7 +1012,7 @@ int btrfs_add_log_tree(struct btrfs_trans_handle *trans,
> }
>
> log_root->last_trans = trans->transid;
> - log_root->root_key.offset = root->root_key.objectid;
> + log_root->root_key.offset = btrfs_root_id(root);
>
> inode_item = &log_root->root_item.inode;
> btrfs_set_stack_inode_generation(inode_item, 1);
> @@ -1077,14 +1077,14 @@ static struct btrfs_root *read_tree_root_path(struct btrfs_root *tree_root,
> * match its root node owner
> */
> if (!test_bit(BTRFS_FS_STATE_DUMMY_FS_INFO, &fs_info->fs_state) &&
> - root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID &&
> - root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID &&
> - root->root_key.objectid != btrfs_header_owner(root->node)) {
> + btrfs_root_id(root) != BTRFS_TREE_LOG_OBJECTID &&
> + btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID &&
> + btrfs_root_id(root) != btrfs_header_owner(root->node)) {
> btrfs_crit(fs_info,
> "root=%llu block=%llu, tree root owner mismatch, have %llu expect %llu",
> - root->root_key.objectid, root->node->start,
> + btrfs_root_id(root), root->node->start,
> btrfs_header_owner(root->node),
> - root->root_key.objectid);
> + btrfs_root_id(root));
> ret = -EUCLEAN;
> goto fail;
> }
> @@ -1121,9 +1121,9 @@ static int btrfs_init_fs_root(struct btrfs_root *root, dev_t anon_dev)
>
> btrfs_drew_lock_init(&root->snapshot_lock);
>
> - if (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID &&
> + if (btrfs_root_id(root) != BTRFS_TREE_LOG_OBJECTID &&
> !btrfs_is_data_reloc_root(root) &&
> - is_fstree(root->root_key.objectid)) {
> + is_fstree(btrfs_root_id(root))) {
> set_bit(BTRFS_ROOT_SHAREABLE, &root->state);
> btrfs_check_and_init_root_item(&root->root_item);
> }
> @@ -1132,7 +1132,7 @@ static int btrfs_init_fs_root(struct btrfs_root *root, dev_t anon_dev)
> * Don't assign anonymous block device to roots that are not exposed to
> * userspace, the id pool is limited to 1M
> */
> - if (is_fstree(root->root_key.objectid) &&
> + if (is_fstree(btrfs_root_id(root)) &&
> btrfs_root_refs(&root->root_item) > 0) {
> if (!anon_dev) {
> ret = get_anon_bdev(&root->anon_dev);
> @@ -1219,7 +1219,7 @@ int btrfs_insert_fs_root(struct btrfs_fs_info *fs_info,
>
> spin_lock(&fs_info->fs_roots_radix_lock);
> ret = radix_tree_insert(&fs_info->fs_roots_radix,
> - (unsigned long)root->root_key.objectid,
> + (unsigned long) btrfs_root_id(root),
> root);
> if (ret == 0) {
> btrfs_grab_root(root);
> @@ -2584,7 +2584,7 @@ static int load_super_root(struct btrfs_root *root, u64 bytenr, u64 gen, int lev
> struct btrfs_tree_parent_check check = {
> .level = level,
> .transid = gen,
> - .owner_root = root->root_key.objectid
> + .owner_root = btrfs_root_id(root)
> };
> int ret = 0;
>
> @@ -2930,7 +2930,7 @@ static int btrfs_cleanup_fs_roots(struct btrfs_fs_info *fs_info)
> spin_unlock(&fs_info->fs_roots_radix_lock);
> break;
> }
> - root_objectid = gang[ret - 1]->root_key.objectid + 1;
> + root_objectid = btrfs_root_id(gang[ret - 1]) + 1;
>
> for (i = 0; i < ret; i++) {
> /* Avoid to grab roots in dead_roots. */
> @@ -2946,7 +2946,7 @@ static int btrfs_cleanup_fs_roots(struct btrfs_fs_info *fs_info)
> for (i = 0; i < ret; i++) {
> if (!gang[i])
> continue;
> - root_objectid = gang[i]->root_key.objectid;
> + root_objectid = btrfs_root_id(gang[i]);
> err = btrfs_orphan_cleanup(gang[i]);
> if (err)
> goto out;
> @@ -4139,7 +4139,7 @@ void btrfs_drop_and_free_fs_root(struct btrfs_fs_info *fs_info,
>
> spin_lock(&fs_info->fs_roots_radix_lock);
> radix_tree_delete(&fs_info->fs_roots_radix,
> - (unsigned long)root->root_key.objectid);
> + (unsigned long) btrfs_root_id(root));
> if (test_and_clear_bit(BTRFS_ROOT_IN_RADIX, &root->state))
> drop_ref = true;
> spin_unlock(&fs_info->fs_roots_radix_lock);
> @@ -4481,7 +4481,7 @@ static void btrfs_drop_all_logs(struct btrfs_fs_info *fs_info)
> for (i = 0; i < ret; i++) {
> if (!gang[i])
> continue;
> - root_objectid = gang[i]->root_key.objectid;
> + root_objectid = btrfs_root_id(gang[i]);
> btrfs_free_log(NULL, gang[i]);
> btrfs_put_root(gang[i]);
> }
> @@ -4812,7 +4812,7 @@ static void btrfs_free_all_qgroup_pertrans(struct btrfs_fs_info *fs_info)
>
> btrfs_qgroup_free_meta_all_pertrans(root);
> radix_tree_tag_clear(&fs_info->fs_roots_radix,
> - (unsigned long)root->root_key.objectid,
> + (unsigned long) btrfs_root_id(root),
> BTRFS_ROOT_TRANS_TAG);
> }
> }
> @@ -4953,7 +4953,7 @@ int btrfs_get_free_objectid(struct btrfs_root *root, u64 *objectid)
> if (unlikely(root->free_objectid >= BTRFS_LAST_FREE_OBJECTID)) {
> btrfs_warn(root->fs_info,
> "the objectid of root %llu reaches its highest value",
> - root->root_key.objectid);
> + btrfs_root_id(root));
> ret = -ENOSPC;
> goto out;
> }
> diff --git a/fs/btrfs/export.c b/fs/btrfs/export.c
> index 8398d345ec5b..9e81f89e76d8 100644
> --- a/fs/btrfs/export.c
> +++ b/fs/btrfs/export.c
> @@ -34,7 +34,7 @@ static int btrfs_encode_fh(struct inode *inode, u32 *fh, int *max_len,
> type = FILEID_BTRFS_WITHOUT_PARENT;
>
> fid->objectid = btrfs_ino(BTRFS_I(inode));
> - fid->root_objectid = BTRFS_I(inode)->root->root_key.objectid;
> + fid->root_objectid = btrfs_root_id(BTRFS_I(inode)->root);
> fid->gen = inode->i_generation;
>
> if (parent) {
> @@ -42,7 +42,7 @@ static int btrfs_encode_fh(struct inode *inode, u32 *fh, int *max_len,
>
> fid->parent_objectid = BTRFS_I(parent)->location.objectid;
> fid->parent_gen = parent->i_generation;
> - parent_root_id = BTRFS_I(parent)->root->root_key.objectid;
> + parent_root_id = btrfs_root_id(BTRFS_I(parent)->root);
>
> if (parent_root_id != fid->root_objectid) {
> fid->parent_root_objectid = parent_root_id;
> @@ -160,7 +160,7 @@ struct dentry *btrfs_get_parent(struct dentry *child)
> return ERR_PTR(-ENOMEM);
>
> if (btrfs_ino(BTRFS_I(dir)) == BTRFS_FIRST_FREE_OBJECTID) {
> - key.objectid = root->root_key.objectid;
> + key.objectid = btrfs_root_id(root);
> key.type = BTRFS_ROOT_BACKREF_KEY;
> key.offset = (u64)-1;
> root = fs_info->tree_root;
> @@ -243,7 +243,7 @@ static int btrfs_get_name(struct dentry *parent, char *name,
> return -ENOMEM;
>
> if (ino == BTRFS_FIRST_FREE_OBJECTID) {
> - key.objectid = BTRFS_I(inode)->root->root_key.objectid;
> + key.objectid = btrfs_root_id(BTRFS_I(inode)->root);
> key.type = BTRFS_ROOT_BACKREF_KEY;
> key.offset = (u64)-1;
> root = fs_info->tree_root;
> diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
> index 87a921b84bab..828d9e61f8a3 100644
> --- a/fs/btrfs/extent-tree.c
> +++ b/fs/btrfs/extent-tree.c
> @@ -2328,7 +2328,7 @@ static noinline int check_delayed_ref(struct btrfs_root *root,
> * If our ref doesn't match the one we're currently looking at
> * then we have a cross reference.
> */
> - if (ref->ref_root != root->root_key.objectid ||
> + if (ref->ref_root != btrfs_root_id(root) ||
> ref_owner != objectid || ref_offset != offset) {
> ret = 1;
> break;
> @@ -2423,7 +2423,7 @@ static noinline int check_committed_ref(struct btrfs_root *root,
> if (btrfs_extent_refs(leaf, ei) !=
> btrfs_extent_data_ref_count(leaf, ref) ||
> btrfs_extent_data_ref_root(leaf, ref) !=
> - root->root_key.objectid ||
> + btrfs_root_id(root) ||
> btrfs_extent_data_ref_objectid(leaf, ref) != objectid ||
> btrfs_extent_data_ref_offset(leaf, ref) != offset)
> goto out;
> @@ -2515,7 +2515,7 @@ static int __btrfs_mod_ref(struct btrfs_trans_handle *trans,
>
> key.offset -= btrfs_file_extent_offset(buf, fi);
> btrfs_init_data_ref(&ref, key.objectid, key.offset,
> - root->root_key.objectid, for_reloc);
> + btrfs_root_id(root), for_reloc);
> if (inc)
> ret = btrfs_inc_extent_ref(trans, &ref);
> else
> @@ -2528,7 +2528,7 @@ static int __btrfs_mod_ref(struct btrfs_trans_handle *trans,
> ref.num_bytes = fs_info->nodesize;
>
> btrfs_init_tree_ref(&ref, level - 1,
> - root->root_key.objectid, for_reloc);
> + btrfs_root_id(root), for_reloc);
> if (inc)
> ret = btrfs_inc_extent_ref(trans, &ref);
> else
> @@ -4671,7 +4671,7 @@ int btrfs_reserve_extent(struct btrfs_root *root, u64 ram_bytes,
> bool final_tried = num_bytes == min_alloc_size;
> u64 flags;
> int ret;
> - bool for_treelog = (root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID);
> + bool for_treelog = (btrfs_root_id(root) == BTRFS_TREE_LOG_OBJECTID);
> bool for_data_reloc = (btrfs_is_data_reloc_root(root) && is_data);
>
> flags = get_alloc_profile_by_root(root, is_data);
> @@ -4936,8 +4936,8 @@ int btrfs_alloc_reserved_file_extent(struct btrfs_trans_handle *trans,
> .action = BTRFS_ADD_DELAYED_EXTENT,
> .bytenr = ins->objectid,
> .num_bytes = ins->offset,
> - .owning_root = root->root_key.objectid,
> - .ref_root = root->root_key.objectid,
> + .owning_root = btrfs_root_id(root),
> + .ref_root = btrfs_root_id(root),
> };
>
> ASSERT(generic_ref.ref_root != BTRFS_TREE_LOG_OBJECTID);
> @@ -5083,7 +5083,7 @@ btrfs_init_new_buffer(struct btrfs_trans_handle *trans, struct btrfs_root *root,
> btrfs_set_header_owner(buf, owner);
> write_extent_buffer_fsid(buf, fs_info->fs_devices->metadata_uuid);
> write_extent_buffer_chunk_tree_uuid(buf, fs_info->chunk_tree_uuid);
> - if (root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID) {
> + if (btrfs_root_id(root) == BTRFS_TREE_LOG_OBJECTID) {
> buf->log_index = root->log_transid % 2;
> /*
> * we allow two log transactions at a time, use different
> @@ -5189,7 +5189,7 @@ struct extent_buffer *btrfs_alloc_tree_block(struct btrfs_trans_handle *trans,
> extent_op->level = level;
>
> btrfs_init_tree_ref(&generic_ref, level,
> - root->root_key.objectid, false);
> + btrfs_root_id(root), false);
> btrfs_ref_tree_mod(fs_info, &generic_ref);
> ret = btrfs_add_delayed_tree_ref(trans, &generic_ref, extent_op);
> if (ret)
> @@ -5328,7 +5328,7 @@ static noinline int walk_down_proc(struct btrfs_trans_handle *trans,
> int ret;
>
> if (wc->stage == UPDATE_BACKREF &&
> - btrfs_header_owner(eb) != root->root_key.objectid)
> + btrfs_header_owner(eb) != btrfs_root_id(root))
> return 1;
>
> /*
> @@ -5402,7 +5402,7 @@ static int check_ref_exists(struct btrfs_trans_handle *trans,
>
> ret = lookup_extent_backref(trans, path, &iref, bytenr,
> root->fs_info->nodesize, parent,
> - root->root_key.objectid, level, 0);
> + btrfs_root_id(root), level, 0);
> btrfs_free_path(path);
> if (ret == -ENOENT)
> return 0;
> @@ -5458,7 +5458,7 @@ static noinline int do_walk_down(struct btrfs_trans_handle *trans,
>
> check.level = level - 1;
> check.transid = generation;
> - check.owner_root = root->root_key.objectid;
> + check.owner_root = btrfs_root_id(root);
> check.has_first_key = true;
> btrfs_node_key_to_cpu(path->nodes[level], &check.first_key,
> path->slots[level]);
> @@ -5466,7 +5466,7 @@ static noinline int do_walk_down(struct btrfs_trans_handle *trans,
> next = find_extent_buffer(fs_info, bytenr);
> if (!next) {
> next = btrfs_find_create_tree_block(fs_info, bytenr,
> - root->root_key.objectid, level - 1);
> + btrfs_root_id(root), level - 1);
> if (IS_ERR(next))
> return PTR_ERR(next);
> reada = 1;
> @@ -5556,14 +5556,14 @@ static noinline int do_walk_down(struct btrfs_trans_handle *trans,
> .bytenr = bytenr,
> .num_bytes = fs_info->nodesize,
> .owning_root = owner_root,
> - .ref_root = root->root_key.objectid,
> + .ref_root = btrfs_root_id(root),
> };
> if (wc->flags[level] & BTRFS_BLOCK_FLAG_FULL_BACKREF) {
> ref.parent = path->nodes[level]->start;
> } else {
> - ASSERT(root->root_key.objectid ==
> + ASSERT(btrfs_root_id(root) ==
> btrfs_header_owner(path->nodes[level]));
> - if (root->root_key.objectid !=
> + if (btrfs_root_id(root) !=
> btrfs_header_owner(path->nodes[level])) {
> btrfs_err(root->fs_info,
> "mismatched block owner");
> @@ -5594,7 +5594,7 @@ static noinline int do_walk_down(struct btrfs_trans_handle *trans,
> * already accounted them at merge time (replace_path),
> * thus we could skip expensive subtree trace here.
> */
> - if (root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID &&
> + if (btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID &&
> need_account) {
> ret = btrfs_qgroup_trace_subtree(trans, next,
> generation, level - 1);
> @@ -5705,7 +5705,7 @@ static noinline int walk_up_proc(struct btrfs_trans_handle *trans,
> else
> ret = btrfs_dec_ref(trans, root, eb, 0);
> BUG_ON(ret); /* -ENOMEM */
> - if (is_fstree(root->root_key.objectid)) {
> + if (is_fstree(btrfs_root_id(root))) {
> ret = btrfs_qgroup_trace_leaf_items(trans, eb);
> if (ret) {
> btrfs_err_rl(fs_info,
> @@ -5725,12 +5725,12 @@ static noinline int walk_up_proc(struct btrfs_trans_handle *trans,
> if (eb == root->node) {
> if (wc->flags[level] & BTRFS_BLOCK_FLAG_FULL_BACKREF)
> parent = eb->start;
> - else if (root->root_key.objectid != btrfs_header_owner(eb))
> + else if (btrfs_root_id(root) != btrfs_header_owner(eb))
> goto owner_mismatch;
> } else {
> if (wc->flags[level + 1] & BTRFS_BLOCK_FLAG_FULL_BACKREF)
> parent = path->nodes[level + 1]->start;
> - else if (root->root_key.objectid !=
> + else if (btrfs_root_id(root) !=
> btrfs_header_owner(path->nodes[level + 1]))
> goto owner_mismatch;
> }
> @@ -5744,7 +5744,7 @@ static noinline int walk_up_proc(struct btrfs_trans_handle *trans,
>
> owner_mismatch:
> btrfs_err_rl(fs_info, "unexpected tree owner, have %llu expect %llu",
> - btrfs_header_owner(eb), root->root_key.objectid);
> + btrfs_header_owner(eb), btrfs_root_id(root));
> return -EUCLEAN;
> }
>
> @@ -5830,7 +5830,7 @@ static noinline int walk_up_tree(struct btrfs_trans_handle *trans,
> */
> int btrfs_drop_snapshot(struct btrfs_root *root, int update_ref, int for_reloc)
> {
> - const bool is_reloc_root = (root->root_key.objectid ==
> + const bool is_reloc_root = (btrfs_root_id(root) ==
> BTRFS_TREE_RELOC_OBJECTID);
> struct btrfs_fs_info *fs_info = root->fs_info;
> struct btrfs_path *path;
> @@ -5845,7 +5845,7 @@ int btrfs_drop_snapshot(struct btrfs_root *root, int update_ref, int for_reloc)
> bool root_dropped = false;
> bool unfinished_drop = false;
>
> - btrfs_debug(fs_info, "Drop subvolume %llu", root->root_key.objectid);
> + btrfs_debug(fs_info, "Drop subvolume %llu", btrfs_root_id(root));
>
> path = btrfs_alloc_path();
> if (!path) {
> @@ -6044,7 +6044,7 @@ int btrfs_drop_snapshot(struct btrfs_root *root, int update_ref, int for_reloc)
> * The most common failure here is just -ENOENT.
> */
> btrfs_del_orphan_item(trans, tree_root,
> - root->root_key.objectid);
> + btrfs_root_id(root));
> }
> }
>
> @@ -6108,7 +6108,7 @@ int btrfs_drop_subtree(struct btrfs_trans_handle *trans,
> int ret = 0;
> int wret;
>
> - BUG_ON(root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID);
> + BUG_ON(btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID);
>
> path = btrfs_alloc_path();
> if (!path)
> diff --git a/fs/btrfs/file-item.c b/fs/btrfs/file-item.c
> index 1ea1ed44fe42..872fcee2e099 100644
> --- a/fs/btrfs/file-item.c
> +++ b/fs/btrfs/file-item.c
> @@ -430,7 +430,7 @@ blk_status_t btrfs_lookup_bio_sums(struct btrfs_bio *bbio)
> memset(csum_dst, 0, csum_size);
> count = 1;
>
> - if (inode->root->root_key.objectid ==
> + if (btrfs_root_id(inode->root) ==
> BTRFS_DATA_RELOC_TREE_OBJECTID) {
> u64 file_offset = bbio->file_offset + bio_offset;
>
> @@ -885,8 +885,8 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans,
> const u32 csum_size = fs_info->csum_size;
> u32 blocksize_bits = fs_info->sectorsize_bits;
>
> - ASSERT(root->root_key.objectid == BTRFS_CSUM_TREE_OBJECTID ||
> - root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID);
> + ASSERT(btrfs_root_id(root) == BTRFS_CSUM_TREE_OBJECTID ||
> + btrfs_root_id(root) == BTRFS_TREE_LOG_OBJECTID);
>
> path = btrfs_alloc_path();
> if (!path)
> @@ -1186,7 +1186,7 @@ int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans,
> * search, etc, because log trees are temporary anyway and it
> * would only save a few bytes of leaf space.
> */
> - if (root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID) {
> + if (btrfs_root_id(root) == BTRFS_TREE_LOG_OBJECTID) {
> if (path->slots[0] + 1 >=
> btrfs_header_nritems(path->nodes[0])) {
> ret = find_next_csum_offset(root, path, &next_offset);
> @@ -1328,7 +1328,7 @@ void btrfs_extent_item_to_extent_map(struct btrfs_inode *inode,
> btrfs_err(fs_info,
> "unknown file extent item type %d, inode %llu, offset %llu, "
> "root %llu", type, btrfs_ino(inode), extent_start,
> - root->root_key.objectid);
> + btrfs_root_id(root));
> }
> }
>
> diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
> index 065658f2c061..0c7c1b42028e 100644
> --- a/fs/btrfs/file.c
> +++ b/fs/btrfs/file.c
> @@ -245,7 +245,7 @@ int btrfs_drop_extents(struct btrfs_trans_handle *trans,
> if (args->start >= inode->disk_i_size && !args->replace_extent)
> modify_tree = 0;
>
> - update_refs = (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID);
> + update_refs = (btrfs_root_id(root) != BTRFS_TREE_LOG_OBJECTID);
> while (1) {
> recow = 0;
> ret = btrfs_lookup_file_extent(trans, root, path, ino,
> @@ -377,8 +377,8 @@ int btrfs_drop_extents(struct btrfs_trans_handle *trans,
> .bytenr = disk_bytenr,
> .num_bytes = num_bytes,
> .parent = 0,
> - .owning_root = root->root_key.objectid,
> - .ref_root = root->root_key.objectid,
> + .owning_root = btrfs_root_id(root),
> + .ref_root = btrfs_root_id(root),
> };
> btrfs_init_data_ref(&ref, new_key.objectid,
> args->start - extent_offset,
> @@ -470,8 +470,8 @@ int btrfs_drop_extents(struct btrfs_trans_handle *trans,
> .bytenr = disk_bytenr,
> .num_bytes = num_bytes,
> .parent = 0,
> - .owning_root = root->root_key.objectid,
> - .ref_root = root->root_key.objectid,
> + .owning_root = btrfs_root_id(root),
> + .ref_root = btrfs_root_id(root),
> };
> btrfs_init_data_ref(&ref, key.objectid,
> key.offset - extent_offset,
> @@ -755,8 +755,8 @@ int btrfs_mark_extent_written(struct btrfs_trans_handle *trans,
> ref.bytenr = bytenr;
> ref.num_bytes = num_bytes;
> ref.parent = 0;
> - ref.owning_root = root->root_key.objectid;
> - ref.ref_root = root->root_key.objectid;
> + ref.owning_root = btrfs_root_id(root);
> + ref.ref_root = btrfs_root_id(root);
> btrfs_init_data_ref(&ref, ino, orig_offset, 0, false);
> ret = btrfs_inc_extent_ref(trans, &ref);
> if (ret) {
> @@ -785,8 +785,8 @@ int btrfs_mark_extent_written(struct btrfs_trans_handle *trans,
> ref.bytenr = bytenr;
> ref.num_bytes = num_bytes;
> ref.parent = 0;
> - ref.owning_root = root->root_key.objectid;
> - ref.ref_root = root->root_key.objectid;
> + ref.owning_root = btrfs_root_id(root);
> + ref.ref_root = btrfs_root_id(root);
> btrfs_init_data_ref(&ref, ino, orig_offset, 0, false);
> if (extent_mergeable(leaf, path->slots[0] + 1,
> ino, bytenr, orig_offset,
> @@ -2493,8 +2493,8 @@ static int btrfs_insert_replace_extent(struct btrfs_trans_handle *trans,
> .action = BTRFS_ADD_DELAYED_REF,
> .bytenr = extent_info->disk_offset,
> .num_bytes = extent_info->disk_len,
> - .owning_root = root->root_key.objectid,
> - .ref_root = root->root_key.objectid,
> + .owning_root = btrfs_root_id(root),
> + .ref_root = btrfs_root_id(root),
> };
> u64 ref_offset;
>
> diff --git a/fs/btrfs/inode-item.c b/fs/btrfs/inode-item.c
> index 7565ff15a69a..84a94d19b22c 100644
> --- a/fs/btrfs/inode-item.c
> +++ b/fs/btrfs/inode-item.c
> @@ -674,14 +674,14 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
> .action = BTRFS_DROP_DELAYED_REF,
> .bytenr = extent_start,
> .num_bytes = extent_num_bytes,
> - .owning_root = root->root_key.objectid,
> + .owning_root = btrfs_root_id(root),
> .ref_root = btrfs_header_owner(leaf),
> };
>
> bytes_deleted += extent_num_bytes;
>
> btrfs_init_data_ref(&ref, control->ino, extent_offset,
> - root->root_key.objectid, false);
> + btrfs_root_id(root), false);
> ret = btrfs_free_extent(trans, &ref);
> if (ret) {
> btrfs_abort_transaction(trans, ret);
> diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
> index 629706b98e31..30893f12c850 100644
> --- a/fs/btrfs/inode.c
> +++ b/fs/btrfs/inode.c
> @@ -254,7 +254,7 @@ static void print_data_reloc_error(const struct btrfs_inode *inode, u64 file_off
> btrfs_warn_rl(fs_info, "has data reloc tree but no running relocation");
> btrfs_warn_rl(fs_info,
> "csum failed root %lld ino %llu off %llu csum " CSUM_FMT " expected csum " CSUM_FMT " mirror %d",
> - inode->root->root_key.objectid, btrfs_ino(inode), file_off,
> + btrfs_root_id(inode->root), btrfs_ino(inode), file_off,
> CSUM_FMT_VALUE(csum_size, csum),
> CSUM_FMT_VALUE(csum_size, csum_expected),
> mirror_num);
> @@ -264,7 +264,7 @@ static void print_data_reloc_error(const struct btrfs_inode *inode, u64 file_off
> logical += file_off;
> btrfs_warn_rl(fs_info,
> "csum failed root %lld ino %llu off %llu logical %llu csum " CSUM_FMT " expected csum " CSUM_FMT " mirror %d",
> - inode->root->root_key.objectid,
> + btrfs_root_id(inode->root),
> btrfs_ino(inode), file_off, logical,
> CSUM_FMT_VALUE(csum_size, csum),
> CSUM_FMT_VALUE(csum_size, csum_expected),
> @@ -331,15 +331,15 @@ static void __cold btrfs_print_data_csum_error(struct btrfs_inode *inode,
> const u32 csum_size = root->fs_info->csum_size;
>
> /* For data reloc tree, it's better to do a backref lookup instead. */
> - if (root->root_key.objectid == BTRFS_DATA_RELOC_TREE_OBJECTID)
> + if (btrfs_root_id(root) == BTRFS_DATA_RELOC_TREE_OBJECTID)
> return print_data_reloc_error(inode, logical_start, csum,
> csum_expected, mirror_num);
>
> /* Output without objectid, which is more meaningful */
> - if (root->root_key.objectid >= BTRFS_LAST_FREE_OBJECTID) {
> + if (btrfs_root_id(root) >= BTRFS_LAST_FREE_OBJECTID) {
> btrfs_warn_rl(root->fs_info,
> "csum failed root %lld ino %lld off %llu csum " CSUM_FMT " expected csum " CSUM_FMT " mirror %d",
> - root->root_key.objectid, btrfs_ino(inode),
> + btrfs_root_id(root), btrfs_ino(inode),
> logical_start,
> CSUM_FMT_VALUE(csum_size, csum),
> CSUM_FMT_VALUE(csum_size, csum_expected),
> @@ -347,7 +347,7 @@ static void __cold btrfs_print_data_csum_error(struct btrfs_inode *inode,
> } else {
> btrfs_warn_rl(root->fs_info,
> "csum failed root %llu ino %llu off %llu csum " CSUM_FMT " expected csum " CSUM_FMT " mirror %d",
> - root->root_key.objectid, btrfs_ino(inode),
> + btrfs_root_id(root), btrfs_ino(inode),
> logical_start,
> CSUM_FMT_VALUE(csum_size, csum),
> CSUM_FMT_VALUE(csum_size, csum_expected),
> @@ -1218,7 +1218,7 @@ static void submit_one_async_extent(struct async_chunk *async_chunk,
> kthread_associate_blkcg(NULL);
> btrfs_debug(fs_info,
> "async extent submission failed root=%lld inode=%llu start=%llu len=%llu ret=%d",
> - root->root_key.objectid, btrfs_ino(inode), start,
> + btrfs_root_id(root), btrfs_ino(inode), start,
> async_extent->ram_size, ret);
> kfree(async_extent);
> }
> @@ -3239,7 +3239,7 @@ int btrfs_finish_one_ordered(struct btrfs_ordered_extent *ordered_extent)
> * Actually free the qgroup rsv which was released when
> * the ordered extent was created.
> */
> - btrfs_qgroup_free_refroot(fs_info, inode->root->root_key.objectid,
> + btrfs_qgroup_free_refroot(fs_info, btrfs_root_id(inode->root),
> ordered_extent->qgroup_rsv,
> BTRFS_QGROUP_RSV_DATA);
> }
> @@ -3906,7 +3906,7 @@ static int btrfs_read_locked_inode(struct inode *inode,
> btrfs_err(fs_info,
> "error loading props for ino %llu (root %llu): %d",
> btrfs_ino(BTRFS_I(inode)),
> - root->root_key.objectid, ret);
> + btrfs_root_id(root), ret);
> }
> if (path != in_path)
> btrfs_free_path(path);
> @@ -4265,7 +4265,7 @@ static int btrfs_unlink_subvol(struct btrfs_trans_handle *trans,
> /* This needs to handle no-key deletions later on */
>
> if (btrfs_ino(inode) == BTRFS_FIRST_FREE_OBJECTID) {
> - objectid = inode->root->root_key.objectid;
> + objectid = btrfs_root_id(inode->root);
> } else if (btrfs_ino(inode) == BTRFS_EMPTY_SUBVOL_DIR_OBJECTID) {
> objectid = inode->location.objectid;
> } else {
> @@ -4323,7 +4323,7 @@ static int btrfs_unlink_subvol(struct btrfs_trans_handle *trans,
> btrfs_release_path(path);
> } else {
> ret = btrfs_del_root_ref(trans, objectid,
> - root->root_key.objectid, dir_ino,
> + btrfs_root_id(root), dir_ino,
> &index, &fname.disk_name);
> if (ret) {
> btrfs_abort_transaction(trans, ret);
> @@ -4373,7 +4373,7 @@ static noinline int may_destroy_subvol(struct btrfs_root *root)
> dir_id, &name, 0);
> if (di && !IS_ERR(di)) {
> btrfs_dir_item_key_to_cpu(path->nodes[0], di, &key);
> - if (key.objectid == root->root_key.objectid) {
> + if (key.objectid == btrfs_root_id(root)) {
> ret = -EPERM;
> btrfs_err(fs_info,
> "deleting default subvolume %llu is not allowed",
> @@ -4383,7 +4383,7 @@ static noinline int may_destroy_subvol(struct btrfs_root *root)
> btrfs_release_path(path);
> }
>
> - key.objectid = root->root_key.objectid;
> + key.objectid = btrfs_root_id(root);
> key.type = BTRFS_ROOT_REF_KEY;
> key.offset = (u64)-1;
>
> @@ -4403,7 +4403,7 @@ static noinline int may_destroy_subvol(struct btrfs_root *root)
> if (path->slots[0] > 0) {
> path->slots[0]--;
> btrfs_item_key_to_cpu(path->nodes[0], &key, path->slots[0]);
> - if (key.objectid == root->root_key.objectid &&
> + if (key.objectid == btrfs_root_id(root) &&
> key.type == BTRFS_ROOT_REF_KEY)
> ret = -ENOTEMPTY;
> }
> @@ -4462,7 +4462,7 @@ int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry)
> spin_unlock(&dest->root_item_lock);
> btrfs_warn(fs_info,
> "attempt to delete subvolume %llu during send",
> - dest->root_key.objectid);
> + btrfs_root_id(dest));
> ret = -EPERM;
> goto out_up_write;
> }
> @@ -4470,7 +4470,7 @@ int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry)
> spin_unlock(&dest->root_item_lock);
> btrfs_warn(fs_info,
> "attempt to delete subvolume %llu with active swapfile",
> - root->root_key.objectid);
> + btrfs_root_id(root));
> ret = -EPERM;
> goto out_up_write;
> }
> @@ -4531,7 +4531,7 @@ int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry)
> if (!test_and_set_bit(BTRFS_ROOT_ORPHAN_ITEM_INSERTED, &dest->state)) {
> ret = btrfs_insert_orphan_item(trans,
> fs_info->tree_root,
> - dest->root_key.objectid);
> + btrfs_root_id(dest));
> if (ret) {
> btrfs_abort_transaction(trans, ret);
> goto out_end_trans;
> @@ -4540,7 +4540,7 @@ int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry)
>
> ret = btrfs_uuid_tree_remove(trans, dest->root_item.uuid,
> BTRFS_UUID_KEY_SUBVOL,
> - dest->root_key.objectid);
> + btrfs_root_id(dest));
> if (ret && ret != -ENOENT) {
> btrfs_abort_transaction(trans, ret);
> goto out_end_trans;
> @@ -4549,7 +4549,7 @@ int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry)
> ret = btrfs_uuid_tree_remove(trans,
> dest->root_item.received_uuid,
> BTRFS_UUID_KEY_RECEIVED_SUBVOL,
> - dest->root_key.objectid);
> + btrfs_root_id(dest));
> if (ret && ret != -ENOENT) {
> btrfs_abort_transaction(trans, ret);
> goto out_end_trans;
> @@ -5229,7 +5229,7 @@ void btrfs_evict_inode(struct inode *inode)
>
> if (inode->i_nlink &&
> ((btrfs_root_refs(&root->root_item) != 0 &&
> - root->root_key.objectid != BTRFS_ROOT_TREE_OBJECTID) ||
> + btrfs_root_id(root) != BTRFS_ROOT_TREE_OBJECTID) ||
> btrfs_is_free_space_inode(BTRFS_I(inode))))
> goto out;
>
> @@ -5241,7 +5241,7 @@ void btrfs_evict_inode(struct inode *inode)
>
> if (inode->i_nlink > 0) {
> BUG_ON(btrfs_root_refs(&root->root_item) != 0 &&
> - root->root_key.objectid != BTRFS_ROOT_TREE_OBJECTID);
> + btrfs_root_id(root) != BTRFS_ROOT_TREE_OBJECTID);
> goto out;
> }
>
> @@ -5413,7 +5413,7 @@ static int fixup_tree_root_location(struct btrfs_fs_info *fs_info,
> }
>
> err = -ENOENT;
> - key.objectid = dir->root->root_key.objectid;
> + key.objectid = btrfs_root_id(dir->root);
> key.type = BTRFS_ROOT_REF_KEY;
> key.offset = location->objectid;
>
> @@ -6372,7 +6372,7 @@ int btrfs_create_new_inode(struct btrfs_trans_handle *trans,
> if (ret) {
> btrfs_err(fs_info,
> "error inheriting props for ino %llu (root %llu): %d",
> - btrfs_ino(BTRFS_I(inode)), root->root_key.objectid,
> + btrfs_ino(BTRFS_I(inode)), btrfs_root_id(root),
> ret);
> }
>
> @@ -6446,7 +6446,7 @@ int btrfs_add_link(struct btrfs_trans_handle *trans,
>
> if (unlikely(ino == BTRFS_FIRST_FREE_OBJECTID)) {
> ret = btrfs_add_root_ref(trans, key.objectid,
> - root->root_key.objectid, parent_ino,
> + btrfs_root_id(root), parent_ino,
> index, name);
> } else if (add_backref) {
> ret = btrfs_insert_inode_ref(trans, root, name,
> @@ -6489,7 +6489,7 @@ int btrfs_add_link(struct btrfs_trans_handle *trans,
> u64 local_index;
> int err;
> err = btrfs_del_root_ref(trans, key.objectid,
> - root->root_key.objectid, parent_ino,
> + btrfs_root_id(root), parent_ino,
> &local_index, name);
> if (err)
> btrfs_abort_transaction(trans, err);
> @@ -6587,7 +6587,7 @@ static int btrfs_link(struct dentry *old_dentry, struct inode *dir,
> int drop_inode = 0;
>
> /* do not allow sys_link's with other subvols of the same device */
> - if (root->root_key.objectid != BTRFS_I(inode)->root->root_key.objectid)
> + if (btrfs_root_id(root) != btrfs_root_id(BTRFS_I(inode)->root))
> return -EXDEV;
>
> if (inode->i_nlink >= BTRFS_LINK_MAX)
> @@ -9433,7 +9433,7 @@ static struct btrfs_trans_handle *insert_prealloc_file_extent(
> * or we leak qgroup data reservation.
> */
> btrfs_qgroup_free_refroot(inode->root->fs_info,
> - inode->root->root_key.objectid, qgroup_released,
> + btrfs_root_id(inode->root), qgroup_released,
> BTRFS_QGROUP_RSV_DATA);
> return ERR_PTR(ret);
> }
> @@ -10534,7 +10534,7 @@ static int btrfs_swap_activate(struct swap_info_struct *sis, struct file *file,
> btrfs_exclop_finish(fs_info);
> btrfs_warn(fs_info,
> "cannot activate swapfile because subvolume %llu is being deleted",
> - root->root_key.objectid);
> + btrfs_root_id(root));
> return -EPERM;
> }
> atomic_inc(&root->nr_swapfiles);
> @@ -10760,7 +10760,7 @@ void btrfs_assert_inode_range_clean(struct btrfs_inode *inode, u64 start, u64 en
> if (ordered) {
> btrfs_err(root->fs_info,
> "found unexpected ordered extent in file range [%llu, %llu] for inode %llu root %llu (ordered range [%llu, %llu])",
> - start, end, btrfs_ino(inode), root->root_key.objectid,
> + start, end, btrfs_ino(inode), btrfs_root_id(root),
> ordered->file_offset,
> ordered->file_offset + ordered->num_bytes - 1);
> btrfs_put_ordered_extent(ordered);
> diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
> index 888dc92c6c75..0c977b7cc253 100644
> --- a/fs/btrfs/ioctl.c
> +++ b/fs/btrfs/ioctl.c
> @@ -668,7 +668,7 @@ static noinline int create_subvol(struct mnt_idmap *idmap,
> /* Tree log can't currently deal with an inode which is a new root. */
> btrfs_set_log_full_commit(trans);
>
> - ret = btrfs_qgroup_inherit(trans, 0, objectid, root->root_key.objectid, inherit);
> + ret = btrfs_qgroup_inherit(trans, 0, objectid, btrfs_root_id(root), inherit);
> if (ret)
> goto out;
>
> @@ -1510,7 +1510,7 @@ static noinline int btrfs_ioctl_subvol_setflags(struct file *file,
> spin_unlock(&root->root_item_lock);
> btrfs_warn(fs_info,
> "Attempt to set subvolume %llu read-write during send",
> - root->root_key.objectid);
> + btrfs_root_id(root));
> ret = -EPERM;
> goto out_drop_sem;
> }
> @@ -1919,7 +1919,7 @@ static int btrfs_search_path_in_tree_user(struct mnt_idmap *idmap,
> struct btrfs_fs_info *fs_info = BTRFS_I(inode)->root->fs_info;
> struct super_block *sb = inode->i_sb;
> struct btrfs_key upper_limit = BTRFS_I(inode)->location;
> - u64 treeid = BTRFS_I(inode)->root->root_key.objectid;
> + u64 treeid = btrfs_root_id(BTRFS_I(inode)->root);
> u64 dirid = args->dirid;
> unsigned long item_off;
> unsigned long item_len;
> @@ -2091,7 +2091,7 @@ static noinline int btrfs_ioctl_ino_lookup(struct btrfs_root *root,
> * path is reset so it's consistent with btrfs_search_path_in_tree.
> */
> if (args->treeid == 0)
> - args->treeid = root->root_key.objectid;
> + args->treeid = btrfs_root_id(root);
>
> if (args->objectid == BTRFS_FIRST_FREE_OBJECTID) {
> args->name[0] = 0;
> @@ -2187,7 +2187,7 @@ static int btrfs_ioctl_get_subvol_info(struct inode *inode, void __user *argp)
> fs_info = BTRFS_I(inode)->root->fs_info;
>
> /* Get root_item of inode's subvolume */
> - key.objectid = BTRFS_I(inode)->root->root_key.objectid;
> + key.objectid = btrfs_root_id(BTRFS_I(inode)->root);
> root = btrfs_get_fs_root(fs_info, key.objectid, true);
> if (IS_ERR(root)) {
> ret = PTR_ERR(root);
> @@ -2302,7 +2302,7 @@ static int btrfs_ioctl_get_subvol_rootref(struct btrfs_root *root,
> return PTR_ERR(rootrefs);
> }
>
> - objectid = root->root_key.objectid;
> + objectid = btrfs_root_id(root);
> key.objectid = objectid;
> key.type = BTRFS_ROOT_REF_KEY;
> key.offset = rootrefs->min_treeid;
> @@ -2981,7 +2981,7 @@ static long btrfs_ioctl_default_subvol(struct file *file, void __user *argp)
> ret = PTR_ERR(new_root);
> goto out;
> }
> - if (!is_fstree(new_root->root_key.objectid)) {
> + if (!is_fstree(btrfs_root_id(new_root))) {
> ret = -ENOENT;
> goto out_free;
> }
> @@ -3920,7 +3920,7 @@ static long btrfs_ioctl_qgroup_limit(struct file *file, void __user *arg)
> qgroupid = sa->qgroupid;
> if (!qgroupid) {
> /* take the current subvol as qgroup */
> - qgroupid = root->root_key.objectid;
> + qgroupid = btrfs_root_id(root);
> }
>
> ret = btrfs_limit_qgroup(trans, qgroupid, &sa->lim);
> @@ -4051,7 +4051,7 @@ static long _btrfs_ioctl_set_received_subvol(struct file *file,
> !btrfs_is_empty_uuid(root_item->received_uuid)) {
> ret = btrfs_uuid_tree_remove(trans, root_item->received_uuid,
> BTRFS_UUID_KEY_RECEIVED_SUBVOL,
> - root->root_key.objectid);
> + btrfs_root_id(root));
> if (ret && ret != -ENOENT) {
> btrfs_abort_transaction(trans, ret);
> btrfs_end_transaction(trans);
> @@ -4075,7 +4075,7 @@ static long _btrfs_ioctl_set_received_subvol(struct file *file,
> if (received_uuid_changed && !btrfs_is_empty_uuid(sa->uuid)) {
> ret = btrfs_uuid_tree_add(trans, sa->uuid,
> BTRFS_UUID_KEY_RECEIVED_SUBVOL,
> - root->root_key.objectid);
> + btrfs_root_id(root));
> if (ret < 0 && ret != -EEXIST) {
> btrfs_abort_transaction(trans, ret);
> btrfs_end_transaction(trans);
> diff --git a/fs/btrfs/locking.c b/fs/btrfs/locking.c
> index 72992e74c479..6a0b7abb5bd9 100644
> --- a/fs/btrfs/locking.c
> +++ b/fs/btrfs/locking.c
> @@ -97,7 +97,7 @@ void btrfs_set_buffer_lockdep_class(u64 objectid, struct extent_buffer *eb, int
> void btrfs_maybe_reset_lockdep_class(struct btrfs_root *root, struct extent_buffer *eb)
> {
> if (test_bit(BTRFS_ROOT_RESET_LOCKDEP_CLASS, &root->state))
> - btrfs_set_buffer_lockdep_class(root->root_key.objectid,
> + btrfs_set_buffer_lockdep_class(btrfs_root_id(root),
> eb, btrfs_header_level(eb));
> }
>
> diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
> index b749ba45da2b..03b2f646b2f9 100644
> --- a/fs/btrfs/ordered-data.c
> +++ b/fs/btrfs/ordered-data.c
> @@ -332,7 +332,7 @@ static bool can_finish_ordered_extent(struct btrfs_ordered_extent *ordered,
> if (WARN_ON_ONCE(len > ordered->bytes_left)) {
> btrfs_crit(fs_info,
> "bad ordered extent accounting, root=%llu ino=%llu OE offset=%llu OE len=%llu to_dec=%llu left=%llu",
> - inode->root->root_key.objectid, btrfs_ino(inode),
> + btrfs_root_id(inode->root), btrfs_ino(inode),
> ordered->file_offset, ordered->num_bytes,
> len, ordered->bytes_left);
> ordered->bytes_left = 0;
> diff --git a/fs/btrfs/props.c b/fs/btrfs/props.c
> index 2a9b7b029eeb..155570e20f45 100644
> --- a/fs/btrfs/props.c
> +++ b/fs/btrfs/props.c
> @@ -268,7 +268,7 @@ static void inode_prop_iterator(void *ctx,
> btrfs_warn(root->fs_info,
> "error applying prop %s to ino %llu (root %llu): %d",
> handler->xattr_name, btrfs_ino(BTRFS_I(inode)),
> - root->root_key.objectid, ret);
> + btrfs_root_id(root), ret);
> else
> set_bit(BTRFS_INODE_HAS_PROPS, &BTRFS_I(inode)->runtime_flags);
> }
> diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
> index 2cba6451d164..b5a055004fbc 100644
> --- a/fs/btrfs/qgroup.c
> +++ b/fs/btrfs/qgroup.c
> @@ -3471,7 +3471,7 @@ static int qgroup_reserve(struct btrfs_root *root, u64 num_bytes, bool enforce,
> {
> struct btrfs_qgroup *qgroup;
> struct btrfs_fs_info *fs_info = root->fs_info;
> - u64 ref_root = root->root_key.objectid;
> + u64 ref_root = btrfs_root_id(root);
> int ret = 0;
> LIST_HEAD(qgroup_list);
>
> @@ -4112,7 +4112,7 @@ static int qgroup_reserve_data(struct btrfs_inode *inode,
> int ret;
>
> if (btrfs_qgroup_mode(root->fs_info) == BTRFS_QGROUP_MODE_DISABLED ||
> - !is_fstree(root->root_key.objectid) || len == 0)
> + !is_fstree(btrfs_root_id(root)) || len == 0)
> return 0;
>
> /* @reserved parameter is mandatory for qgroup */
> @@ -4228,7 +4228,7 @@ static int qgroup_free_reserved_data(struct btrfs_inode *inode,
> goto out;
> freed += changeset.bytes_changed;
> }
> - btrfs_qgroup_free_refroot(root->fs_info, root->root_key.objectid, freed,
> + btrfs_qgroup_free_refroot(root->fs_info, btrfs_root_id(root), freed,
> BTRFS_QGROUP_RSV_DATA);
> if (freed_ret)
> *freed_ret = freed;
> @@ -4269,7 +4269,7 @@ static int __btrfs_qgroup_release_data(struct btrfs_inode *inode,
> changeset.bytes_changed, trace_op);
> if (free)
> btrfs_qgroup_free_refroot(inode->root->fs_info,
> - inode->root->root_key.objectid,
> + btrfs_root_id(inode->root),
> changeset.bytes_changed, BTRFS_QGROUP_RSV_DATA);
> if (released)
> *released = changeset.bytes_changed;
> @@ -4364,7 +4364,7 @@ int btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes,
> int ret;
>
> if (btrfs_qgroup_mode(fs_info) == BTRFS_QGROUP_MODE_DISABLED ||
> - !is_fstree(root->root_key.objectid) || num_bytes == 0)
> + !is_fstree(btrfs_root_id(root)) || num_bytes == 0)
> return 0;
>
> BUG_ON(num_bytes != round_down(num_bytes, fs_info->nodesize));
> @@ -4409,13 +4409,13 @@ void btrfs_qgroup_free_meta_all_pertrans(struct btrfs_root *root)
> struct btrfs_fs_info *fs_info = root->fs_info;
>
> if (btrfs_qgroup_mode(fs_info) == BTRFS_QGROUP_MODE_DISABLED ||
> - !is_fstree(root->root_key.objectid))
> + !is_fstree(btrfs_root_id(root)))
> return;
>
> /* TODO: Update trace point to handle such free */
> trace_qgroup_meta_free_all_pertrans(root);
> /* Special value -1 means to free all reserved space */
> - btrfs_qgroup_free_refroot(fs_info, root->root_key.objectid, (u64)-1,
> + btrfs_qgroup_free_refroot(fs_info, btrfs_root_id(root), (u64)-1,
> BTRFS_QGROUP_RSV_META_PERTRANS);
> }
>
> @@ -4425,7 +4425,7 @@ void __btrfs_qgroup_free_meta(struct btrfs_root *root, int num_bytes,
> struct btrfs_fs_info *fs_info = root->fs_info;
>
> if (btrfs_qgroup_mode(fs_info) == BTRFS_QGROUP_MODE_DISABLED ||
> - !is_fstree(root->root_key.objectid))
> + !is_fstree(btrfs_root_id(root)))
> return;
>
> /*
> @@ -4436,7 +4436,7 @@ void __btrfs_qgroup_free_meta(struct btrfs_root *root, int num_bytes,
> num_bytes = sub_root_meta_rsv(root, num_bytes, type);
> BUG_ON(num_bytes != round_down(num_bytes, fs_info->nodesize));
> trace_qgroup_meta_reserve(root, -(s64)num_bytes, type);
> - btrfs_qgroup_free_refroot(fs_info, root->root_key.objectid,
> + btrfs_qgroup_free_refroot(fs_info, btrfs_root_id(root),
> num_bytes, type);
> }
>
> @@ -4485,13 +4485,13 @@ void btrfs_qgroup_convert_reserved_meta(struct btrfs_root *root, int num_bytes)
> struct btrfs_fs_info *fs_info = root->fs_info;
>
> if (btrfs_qgroup_mode(fs_info) == BTRFS_QGROUP_MODE_DISABLED ||
> - !is_fstree(root->root_key.objectid))
> + !is_fstree(btrfs_root_id(root)))
> return;
> /* Same as btrfs_qgroup_free_meta_prealloc() */
> num_bytes = sub_root_meta_rsv(root, num_bytes,
> BTRFS_QGROUP_RSV_META_PREALLOC);
> trace_qgroup_meta_convert(root, num_bytes);
> - qgroup_convert_meta(fs_info, root->root_key.objectid, num_bytes);
> + qgroup_convert_meta(fs_info, btrfs_root_id(root), num_bytes);
> if (!sb_rdonly(fs_info->sb))
> add_root_meta_rsv(root, num_bytes, BTRFS_QGROUP_RSV_META_PERTRANS);
> }
> @@ -4520,7 +4520,7 @@ void btrfs_qgroup_check_reserved_leak(struct btrfs_inode *inode)
> btrfs_ino(inode), unode->val, unode->aux);
> }
> btrfs_qgroup_free_refroot(inode->root->fs_info,
> - inode->root->root_key.objectid,
> + btrfs_root_id(inode->root),
> changeset.bytes_changed, BTRFS_QGROUP_RSV_DATA);
>
> }
> @@ -4706,7 +4706,7 @@ int btrfs_qgroup_trace_subtree_after_cow(struct btrfs_trans_handle *trans,
>
> if (!btrfs_qgroup_full_accounting(fs_info))
> return 0;
> - if (!is_fstree(root->root_key.objectid) || !root->reloc_root)
> + if (!is_fstree(btrfs_root_id(root)) || !root->reloc_root)
> return 0;
>
> spin_lock(&blocks->lock);
> diff --git a/fs/btrfs/reflink.c b/fs/btrfs/reflink.c
> index f12ba2b75141..d0a3fcecc46a 100644
> --- a/fs/btrfs/reflink.c
> +++ b/fs/btrfs/reflink.c
> @@ -665,7 +665,7 @@ static int btrfs_extent_same(struct inode *src, u64 loff, u64 olen,
> if (root_dst->send_in_progress) {
> btrfs_warn_rl(root_dst->fs_info,
> "cannot deduplicate to root %llu while send operations are using it (%d in progress)",
> - root_dst->root_key.objectid,
> + btrfs_root_id(root_dst),
> root_dst->send_in_progress);
> spin_unlock(&root_dst->root_item_lock);
> return -EAGAIN;
> diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
> index 00f33d8c4bf9..4ba1e21ab8a3 100644
> --- a/fs/btrfs/relocation.c
> +++ b/fs/btrfs/relocation.c
> @@ -754,7 +754,7 @@ static struct btrfs_root *create_reloc_root(struct btrfs_trans_handle *trans,
> root_key.type = BTRFS_ROOT_ITEM_KEY;
> root_key.offset = objectid;
>
> - if (root->root_key.objectid == objectid) {
> + if (btrfs_root_id(root) == objectid) {
> u64 commit_root_gen;
>
> /* called by btrfs_init_reloc_root */
> @@ -798,7 +798,7 @@ static struct btrfs_root *create_reloc_root(struct btrfs_trans_handle *trans,
> btrfs_set_root_level(root_item, btrfs_header_level(eb));
> btrfs_set_root_generation(root_item, trans->transid);
>
> - if (root->root_key.objectid == objectid) {
> + if (btrfs_root_id(root) == objectid) {
> btrfs_set_root_refs(root_item, 0);
> memset(&root_item->drop_progress, 0,
> sizeof(struct btrfs_disk_key));
> @@ -877,7 +877,7 @@ int btrfs_init_reloc_root(struct btrfs_trans_handle *trans,
> * reloc trees never need their own reloc tree.
> */
> if (!rc->create_reloc_tree ||
> - root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)
> + btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID)
> return 0;
>
> if (!trans->reloc_reserved) {
> @@ -885,7 +885,7 @@ int btrfs_init_reloc_root(struct btrfs_trans_handle *trans,
> trans->block_rsv = rc->block_rsv;
> clear_rsv = 1;
> }
> - reloc_root = create_reloc_root(trans, root, root->root_key.objectid);
> + reloc_root = create_reloc_root(trans, root, btrfs_root_id(root));
> if (clear_rsv)
> trans->block_rsv = rsv;
> if (IS_ERR(reloc_root))
> @@ -1027,7 +1027,7 @@ int replace_file_extents(struct btrfs_trans_handle *trans,
> return 0;
>
> /* reloc trees always use full backref */
> - if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)
> + if (btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID)
> parent = leaf->start;
> else
> parent = 0;
> @@ -1056,7 +1056,7 @@ int replace_file_extents(struct btrfs_trans_handle *trans,
> * if we are modifying block in fs tree, wait for read_folio
> * to complete and drop the extent cache
> */
> - if (root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID) {
> + if (btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID) {
> if (first) {
> inode = btrfs_find_first_inode(root, key.objectid);
> first = 0;
> @@ -1108,10 +1108,10 @@ int replace_file_extents(struct btrfs_trans_handle *trans,
> ref.bytenr = new_bytenr;
> ref.num_bytes = num_bytes;
> ref.parent = parent;
> - ref.owning_root = root->root_key.objectid;
> + ref.owning_root = btrfs_root_id(root);
> ref.ref_root = btrfs_header_owner(leaf);
> btrfs_init_data_ref(&ref, key.objectid, key.offset,
> - root->root_key.objectid, false);
> + btrfs_root_id(root), false);
> ret = btrfs_inc_extent_ref(trans, &ref);
> if (ret) {
> btrfs_abort_transaction(trans, ret);
> @@ -1122,10 +1122,10 @@ int replace_file_extents(struct btrfs_trans_handle *trans,
> ref.bytenr = bytenr;
> ref.num_bytes = num_bytes;
> ref.parent = parent;
> - ref.owning_root = root->root_key.objectid;
> + ref.owning_root = btrfs_root_id(root);
> ref.ref_root = btrfs_header_owner(leaf);
> btrfs_init_data_ref(&ref, key.objectid, key.offset,
> - root->root_key.objectid, false);
> + btrfs_root_id(root), false);
> ret = btrfs_free_extent(trans, &ref);
> if (ret) {
> btrfs_abort_transaction(trans, ret);
> @@ -1181,8 +1181,8 @@ int replace_path(struct btrfs_trans_handle *trans, struct reloc_control *rc,
> int ret;
> int slot;
>
> - ASSERT(src->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID);
> - ASSERT(dest->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID);
> + ASSERT(btrfs_root_id(src) == BTRFS_TREE_RELOC_OBJECTID);
> + ASSERT(btrfs_root_id(dest) != BTRFS_TREE_RELOC_OBJECTID);
>
> last_snapshot = btrfs_root_last_snapshot(&src->root_item);
> again:
> @@ -1338,8 +1338,8 @@ int replace_path(struct btrfs_trans_handle *trans, struct reloc_control *rc,
> ref.bytenr = old_bytenr;
> ref.num_bytes = blocksize;
> ref.parent = path->nodes[level]->start;
> - ref.owning_root = src->root_key.objectid;
> - ref.ref_root = src->root_key.objectid;
> + ref.owning_root = btrfs_root_id(src);
> + ref.ref_root = btrfs_root_id(src);
> btrfs_init_tree_ref(&ref, level - 1, 0, true);
> ret = btrfs_inc_extent_ref(trans, &ref);
> if (ret) {
> @@ -1351,8 +1351,8 @@ int replace_path(struct btrfs_trans_handle *trans, struct reloc_control *rc,
> ref.bytenr = new_bytenr;
> ref.num_bytes = blocksize;
> ref.parent = 0;
> - ref.owning_root = dest->root_key.objectid;
> - ref.ref_root = dest->root_key.objectid;
> + ref.owning_root = btrfs_root_id(dest);
> + ref.ref_root = btrfs_root_id(dest);
> btrfs_init_tree_ref(&ref, level - 1, 0, true);
> ret = btrfs_inc_extent_ref(trans, &ref);
> if (ret) {
> @@ -1366,7 +1366,7 @@ int replace_path(struct btrfs_trans_handle *trans, struct reloc_control *rc,
> ref.num_bytes = blocksize;
> ref.parent = path->nodes[level]->start;
> ref.owning_root = 0;
> - ref.ref_root = src->root_key.objectid;
> + ref.ref_root = btrfs_root_id(src);
> btrfs_init_tree_ref(&ref, level - 1, 0, true);
> ret = btrfs_free_extent(trans, &ref);
> if (ret) {
> @@ -1380,7 +1380,7 @@ int replace_path(struct btrfs_trans_handle *trans, struct reloc_control *rc,
> ref.num_bytes = blocksize;
> ref.parent = 0;
> ref.owning_root = 0;
> - ref.ref_root = dest->root_key.objectid;
> + ref.ref_root = btrfs_root_id(dest);
> btrfs_init_tree_ref(&ref, level - 1, 0, true);
> ret = btrfs_free_extent(trans, &ref);
> if (ret) {
> @@ -1586,7 +1586,7 @@ static int insert_dirty_subvol(struct btrfs_trans_handle *trans,
> int ret;
>
> /* @root must be a subvolume tree root with a valid reloc tree */
> - ASSERT(root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID);
> + ASSERT(btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID);
> ASSERT(reloc_root);
>
> reloc_root_item = &reloc_root->root_item;
> @@ -1615,7 +1615,7 @@ static int clean_dirty_subvols(struct reloc_control *rc)
>
> list_for_each_entry_safe(root, next, &rc->dirty_subvol_roots,
> reloc_dirty_list) {
> - if (root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID) {
> + if (btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID) {
> /* Merged subvolume, cleanup its reloc root */
> struct btrfs_root *reloc_root = root->reloc_root;
>
> @@ -1890,13 +1890,13 @@ int prepare_to_merge(struct reloc_control *rc, int err)
> if (root->reloc_root) {
> btrfs_err(fs_info,
> "reloc tree mismatch, root %lld has reloc root key (%lld %u %llu) gen %llu, expect reloc root key (%lld %u %llu) gen %llu",
> - root->root_key.objectid,
> - root->reloc_root->root_key.objectid,
> + btrfs_root_id(root),
> + btrfs_root_id(root->reloc_root),
> root->reloc_root->root_key.type,
> root->reloc_root->root_key.offset,
> btrfs_root_generation(
> &root->reloc_root->root_item),
> - reloc_root->root_key.objectid,
> + btrfs_root_id(reloc_root),
> reloc_root->root_key.type,
> reloc_root->root_key.offset,
> btrfs_root_generation(
> @@ -1904,8 +1904,8 @@ int prepare_to_merge(struct reloc_control *rc, int err)
> } else {
> btrfs_err(fs_info,
> "reloc tree mismatch, root %lld has no reloc root, expect reloc root key (%lld %u %llu) gen %llu",
> - root->root_key.objectid,
> - reloc_root->root_key.objectid,
> + btrfs_root_id(root),
> + btrfs_root_id(reloc_root),
> reloc_root->root_key.type,
> reloc_root->root_key.offset,
> btrfs_root_generation(
> @@ -2162,7 +2162,7 @@ struct btrfs_root *select_reloc_root(struct btrfs_trans_handle *trans,
> return ERR_PTR(-EUCLEAN);
> }
>
> - if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID) {
> + if (btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID) {
> ret = record_reloc_root_in_trans(trans, root);
> if (ret)
> return ERR_PTR(ret);
> @@ -2269,7 +2269,7 @@ struct btrfs_root *select_one_root(struct btrfs_backref_node *node)
> if (!test_bit(BTRFS_ROOT_SHAREABLE, &root->state))
> return root;
>
> - if (root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID)
> + if (btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID)
> fs_root = root;
>
> if (next != node)
> @@ -2495,7 +2495,7 @@ static int do_relocation(struct btrfs_trans_handle *trans,
> btrfs_mark_buffer_dirty(trans, upper->eb);
>
> btrfs_init_tree_ref(&ref, node->level,
> - root->root_key.objectid, false);
> + btrfs_root_id(root), false);
> ret = btrfs_inc_extent_ref(trans, &ref);
> if (!ret)
> ret = btrfs_drop_subtree(trans, root, eb,
> @@ -4463,7 +4463,7 @@ int btrfs_reloc_cow_block(struct btrfs_trans_handle *trans,
> btrfs_root_last_snapshot(&root->root_item))
> first_cow = 1;
>
> - if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID &&
> + if (btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID &&
> rc->create_reloc_tree) {
> WARN_ON(!first_cow && level == 0);
>
> @@ -4558,7 +4558,7 @@ int btrfs_reloc_post_snapshot(struct btrfs_trans_handle *trans,
>
> new_root = pending->snap;
> reloc_root = create_reloc_root(trans, root->reloc_root,
> - new_root->root_key.objectid);
> + btrfs_root_id(new_root));
> if (IS_ERR(reloc_root))
> return PTR_ERR(reloc_root);
>
> diff --git a/fs/btrfs/root-tree.c b/fs/btrfs/root-tree.c
> index 7007f9e0c972..39a920efd9bc 100644
> --- a/fs/btrfs/root-tree.c
> +++ b/fs/btrfs/root-tree.c
> @@ -149,7 +149,7 @@ int btrfs_update_root(struct btrfs_trans_handle *trans, struct btrfs_root
> btrfs_crit(fs_info,
> "unable to find root key (%llu %u %llu) in tree %llu",
> key->objectid, key->type, key->offset,
> - root->root_key.objectid);
> + btrfs_root_id(root));
> ret = -EUCLEAN;
> btrfs_abort_transaction(trans, ret);
> goto out;
> diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
> index 342fe5ff0f05..0ff587bf43e0 100644
> --- a/fs/btrfs/send.c
> +++ b/fs/btrfs/send.c
> @@ -392,9 +392,9 @@ static void inconsistent_snapshot_error(struct send_ctx *sctx,
> btrfs_err(sctx->send_root->fs_info,
> "Send: inconsistent snapshot, found %s %s for inode %llu without updated inode item, send root is %llu, parent root is %llu",
> result_string, what, sctx->cmp_key->objectid,
> - sctx->send_root->root_key.objectid,
> + btrfs_root_id(sctx->send_root),
> (sctx->parent_root ?
> - sctx->parent_root->root_key.objectid : 0));
> + btrfs_root_id(sctx->parent_root) : 0));
> }
>
> __maybe_unused
> @@ -1316,9 +1316,9 @@ static int __clone_root_cmp_bsearch(const void *key, const void *elt)
> u64 root = (u64)(uintptr_t)key;
> const struct clone_root *cr = elt;
>
> - if (root < cr->root->root_key.objectid)
> + if (root < btrfs_root_id(cr->root))
> return -1;
> - if (root > cr->root->root_key.objectid)
> + if (root > btrfs_root_id(cr->root))
> return 1;
> return 0;
> }
> @@ -1328,9 +1328,9 @@ static int __clone_root_cmp_sort(const void *e1, const void *e2)
> const struct clone_root *cr1 = e1;
> const struct clone_root *cr2 = e2;
>
> - if (cr1->root->root_key.objectid < cr2->root->root_key.objectid)
> + if (btrfs_root_id(cr1->root) < btrfs_root_id(cr2->root))
> return -1;
> - if (cr1->root->root_key.objectid > cr2->root->root_key.objectid)
> + if (btrfs_root_id(cr1->root) > btrfs_root_id(cr2->root))
> return 1;
> return 0;
> }
> @@ -1778,7 +1778,7 @@ static int read_symlink(struct btrfs_root *root,
> */
> btrfs_err(root->fs_info,
> "Found empty symlink inode %llu at root %llu",
> - ino, root->root_key.objectid);
> + ino, btrfs_root_id(root));
> ret = -EIO;
> goto out;
> }
> @@ -2532,7 +2532,7 @@ static int send_subvol_begin(struct send_ctx *sctx)
> return -ENOMEM;
> }
>
> - key.objectid = send_root->root_key.objectid;
> + key.objectid = btrfs_root_id(send_root);
> key.type = BTRFS_ROOT_BACKREF_KEY;
> key.offset = 0;
>
> @@ -2548,7 +2548,7 @@ static int send_subvol_begin(struct send_ctx *sctx)
> leaf = path->nodes[0];
> btrfs_item_key_to_cpu(leaf, &key, path->slots[0]);
> if (key.type != BTRFS_ROOT_BACKREF_KEY ||
> - key.objectid != send_root->root_key.objectid) {
> + key.objectid != btrfs_root_id(send_root)) {
> ret = -ENOENT;
> goto out;
> }
> @@ -5318,7 +5318,7 @@ static int put_file_data(struct send_ctx *sctx, u64 offset, u32 len)
> btrfs_err(fs_info,
> "send: IO error at offset %llu for inode %llu root %llu",
> folio_pos(folio), sctx->cur_ino,
> - sctx->send_root->root_key.objectid);
> + btrfs_root_id(sctx->send_root));
> folio_put(folio);
> ret = -EIO;
> break;
> @@ -5389,7 +5389,7 @@ static int send_clone(struct send_ctx *sctx,
>
> btrfs_debug(sctx->send_root->fs_info,
> "send_clone offset=%llu, len=%d, clone_root=%llu, clone_inode=%llu, clone_offset=%llu",
> - offset, len, clone_root->root->root_key.objectid,
> + offset, len, btrfs_root_id(clone_root->root),
> clone_root->ino, clone_root->offset);
>
> p = fs_path_alloc();
> @@ -7338,7 +7338,7 @@ static int search_key_again(const struct send_ctx *sctx,
> "send: key (%llu %u %llu) not found in %s root %llu, lowest_level %d, slot %d",
> key->objectid, key->type, key->offset,
> (root == sctx->parent_root ? "parent" : "send"),
> - root->root_key.objectid, path->lowest_level,
> + btrfs_root_id(root), path->lowest_level,
> path->slots[path->lowest_level]);
> return -EUCLEAN;
> }
> @@ -8072,7 +8072,7 @@ static void btrfs_root_dec_send_in_progress(struct btrfs_root* root)
> if (root->send_in_progress < 0)
> btrfs_err(root->fs_info,
> "send_in_progress unbalanced %d root %llu",
> - root->send_in_progress, root->root_key.objectid);
> + root->send_in_progress, btrfs_root_id(root));
> spin_unlock(&root->root_item_lock);
> }
>
> @@ -8080,7 +8080,7 @@ static void dedupe_in_progress_warn(const struct btrfs_root *root)
> {
> btrfs_warn_rl(root->fs_info,
> "cannot use root %llu for send while deduplications on it are in progress (%d in progress)",
> - root->root_key.objectid, root->dedupe_in_progress);
> + btrfs_root_id(root), root->dedupe_in_progress);
> }
>
> long btrfs_ioctl_send(struct inode *inode, struct btrfs_ioctl_send_args *arg)
> diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
> index 7e44ccaf348f..f0ce75df4e48 100644
> --- a/fs/btrfs/super.c
> +++ b/fs/btrfs/super.c
> @@ -1098,9 +1098,9 @@ static int btrfs_show_options(struct seq_file *seq, struct dentry *dentry)
> if (btrfs_test_opt(info, REF_VERIFY))
> seq_puts(seq, ",ref_verify");
> seq_printf(seq, ",subvolid=%llu",
> - BTRFS_I(d_inode(dentry))->root->root_key.objectid);
> + btrfs_root_id(BTRFS_I(d_inode(dentry))->root));
> subvol_name = btrfs_get_subvol_name_from_objectid(info,
> - BTRFS_I(d_inode(dentry))->root->root_key.objectid);
> + btrfs_root_id(BTRFS_I(d_inode(dentry))->root));
> if (!IS_ERR(subvol_name)) {
> seq_puts(seq, ",subvol=");
> seq_escape(seq, subvol_name, " \t\n\\");
> @@ -1152,7 +1152,7 @@ static struct dentry *mount_subvol(const char *subvol_name, u64 subvol_objectid,
> struct super_block *s = root->d_sb;
> struct btrfs_fs_info *fs_info = btrfs_sb(s);
> struct inode *root_inode = d_inode(root);
> - u64 root_objectid = BTRFS_I(root_inode)->root->root_key.objectid;
> + u64 root_objectid = btrfs_root_id(BTRFS_I(root_inode)->root);
>
> ret = 0;
> if (!is_subvolume_inode(root_inode)) {
> @@ -1775,9 +1775,9 @@ static int btrfs_statfs(struct dentry *dentry, struct kstatfs *buf)
> buf->f_fsid.val[1] = be32_to_cpu(fsid[1]) ^ be32_to_cpu(fsid[3]);
> /* Mask in the root object ID too, to disambiguate subvols */
> buf->f_fsid.val[0] ^=
> - BTRFS_I(d_inode(dentry))->root->root_key.objectid >> 32;
> + btrfs_root_id(BTRFS_I(d_inode(dentry))->root) >> 32;
> buf->f_fsid.val[1] ^=
> - BTRFS_I(d_inode(dentry))->root->root_key.objectid;
> + btrfs_root_id(BTRFS_I(d_inode(dentry))->root);
>
> return 0;
> }
> diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
> index df2e58aa824a..8a82df2f9627 100644
> --- a/fs/btrfs/transaction.c
> +++ b/fs/btrfs/transaction.c
> @@ -426,7 +426,7 @@ static int record_root_in_trans(struct btrfs_trans_handle *trans,
> return 0;
> }
> radix_tree_tag_set(&fs_info->fs_roots_radix,
> - (unsigned long)root->root_key.objectid,
> + (unsigned long) btrfs_root_id(root),
> BTRFS_ROOT_TRANS_TAG);
> spin_unlock(&fs_info->fs_roots_radix_lock);
> root->last_trans = trans->transid;
> @@ -472,7 +472,7 @@ void btrfs_add_dropped_root(struct btrfs_trans_handle *trans,
> /* Make sure we don't try to update the root at commit time */
> spin_lock(&fs_info->fs_roots_radix_lock);
> radix_tree_tag_clear(&fs_info->fs_roots_radix,
> - (unsigned long)root->root_key.objectid,
> + (unsigned long) btrfs_root_id(root),
> BTRFS_ROOT_TRANS_TAG);
> spin_unlock(&fs_info->fs_roots_radix_lock);
> }
> @@ -550,7 +550,7 @@ static inline bool need_reserve_reloc_root(struct btrfs_root *root)
>
> if (!fs_info->reloc_ctl ||
> !test_bit(BTRFS_ROOT_SHAREABLE, &root->state) ||
> - root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID ||
> + btrfs_root_id(root) == BTRFS_TREE_RELOC_OBJECTID ||
> root->reloc_root)
> return false;
>
> @@ -1229,7 +1229,7 @@ int btrfs_wait_tree_log_extents(struct btrfs_root *log_root, int mark)
> bool errors = false;
> int err;
>
> - ASSERT(log_root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID);
> + ASSERT(btrfs_root_id(log_root) == BTRFS_TREE_LOG_OBJECTID);
>
> err = __btrfs_wait_marked_extents(fs_info, dirty_pages);
> if ((mark & EXTENT_DIRTY) &&
> @@ -1492,7 +1492,7 @@ static noinline int commit_fs_roots(struct btrfs_trans_handle *trans)
> ASSERT(atomic_read(&root->log_commit[1]) == 0);
>
> radix_tree_tag_clear(&fs_info->fs_roots_radix,
> - (unsigned long)root->root_key.objectid,
> + (unsigned long) btrfs_root_id(root),
> BTRFS_ROOT_TRANS_TAG);
> btrfs_qgroup_free_meta_all_pertrans(root);
> spin_unlock(&fs_info->fs_roots_radix_lock);
> @@ -1583,8 +1583,8 @@ static int qgroup_account_snapshot(struct btrfs_trans_handle *trans,
> goto out;
>
> /* Now qgroup are all updated, we can inherit it to new qgroups */
> - ret = btrfs_qgroup_inherit(trans, src->root_key.objectid, dst_objectid,
> - parent->root_key.objectid, inherit);
> + ret = btrfs_qgroup_inherit(trans, btrfs_root_id(src), dst_objectid,
> + btrfs_root_id(parent), inherit);
> if (ret < 0)
> goto out;
>
> @@ -1822,7 +1822,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
> * insert root back/forward references
> */
> ret = btrfs_add_root_ref(trans, objectid,
> - parent_root->root_key.objectid,
> + btrfs_root_id(parent_root),
> btrfs_ino(BTRFS_I(parent_inode)), index,
> &fname.disk_name);
> if (ret) {
> @@ -1855,8 +1855,8 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
> ret = qgroup_account_snapshot(trans, root, parent_root,
> pending->inherit, objectid);
> else if (btrfs_qgroup_mode(fs_info) == BTRFS_QGROUP_MODE_SIMPLE)
> - ret = btrfs_qgroup_inherit(trans, root->root_key.objectid, objectid,
> - parent_root->root_key.objectid, pending->inherit);
> + ret = btrfs_qgroup_inherit(trans, btrfs_root_id(root), objectid,
> + btrfs_root_id(parent_root), pending->inherit);
> if (ret < 0)
> goto fail;
>
> @@ -2623,7 +2623,7 @@ int btrfs_clean_one_deleted_snapshot(struct btrfs_fs_info *fs_info)
> list_del_init(&root->root_list);
> spin_unlock(&fs_info->trans_lock);
>
> - btrfs_debug(fs_info, "cleaner removing %llu", root->root_key.objectid);
> + btrfs_debug(fs_info, "cleaner removing %llu", btrfs_root_id(root));
>
> btrfs_kill_all_delayed_nodes(root);
>
> diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
> index 1c7efb7c2160..a4e73081d477 100644
> --- a/fs/btrfs/tree-log.c
> +++ b/fs/btrfs/tree-log.c
> @@ -391,7 +391,7 @@ static int overwrite_item(struct btrfs_trans_handle *trans,
> * the leaf before writing into the log tree. See the comments at
> * copy_items() for more details.
> */
> - ASSERT(root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID);
> + ASSERT(btrfs_root_id(root) != BTRFS_TREE_LOG_OBJECTID);
>
> item_size = btrfs_item_size(eb, slot);
> src_ptr = btrfs_item_ptr_offset(eb, slot);
> @@ -765,8 +765,8 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans,
> .action = BTRFS_ADD_DELAYED_REF,
> .bytenr = ins.objectid,
> .num_bytes = ins.offset,
> - .owning_root = root->root_key.objectid,
> - .ref_root = root->root_key.objectid,
> + .owning_root = btrfs_root_id(root),
> + .ref_root = btrfs_root_id(root),
> };
> btrfs_init_data_ref(&ref, key->objectid, offset,
> 0, false);
> @@ -779,7 +779,7 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans,
> * allocation tree
> */
> ret = btrfs_alloc_logged_file_extent(trans,
> - root->root_key.objectid,
> + btrfs_root_id(root),
> key->objectid, offset, &ins);
> if (ret)
> goto out;
> @@ -3047,7 +3047,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
> if (ret != -ENOSPC)
> btrfs_err(fs_info,
> "failed to update log for root %llu ret %d",
> - root->root_key.objectid, ret);
> + btrfs_root_id(root), ret);
> btrfs_wait_tree_log_extents(log, mark);
> mutex_unlock(&log_root_tree->log_mutex);
> goto out;
> diff --git a/fs/btrfs/tree-mod-log.c b/fs/btrfs/tree-mod-log.c
> index 43b3accbed7a..fa45b5fb9683 100644
> --- a/fs/btrfs/tree-mod-log.c
> +++ b/fs/btrfs/tree-mod-log.c
> @@ -1004,7 +1004,7 @@ struct extent_buffer *btrfs_get_old_root(struct btrfs_root *root, u64 time_seq)
> free_extent_buffer(eb_root);
>
> check.level = level;
> - check.owner_root = root->root_key.objectid;
> + check.owner_root = btrfs_root_id(root);
>
> old = read_tree_block(fs_info, logical, &check);
> if (WARN_ON(IS_ERR(old) || !extent_buffer_uptodate(old))) {
> --
> 2.43.0
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] btrfs: change root->root_key.objectid to btrfs_root_id()
2024-04-15 20:20 [PATCH] btrfs: change root->root_key.objectid to btrfs_root_id() Josef Bacik
2024-04-15 21:20 ` Filipe Manana
@ 2024-04-17 12:01 ` Johannes Thumshirn
1 sibling, 0 replies; 3+ messages in thread
From: Johannes Thumshirn @ 2024-04-17 12:01 UTC (permalink / raw)
To: Josef Bacik, linux-btrfs, kernel-team
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-04-17 12:01 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-15 20:20 [PATCH] btrfs: change root->root_key.objectid to btrfs_root_id() Josef Bacik
2024-04-15 21:20 ` Filipe Manana
2024-04-17 12:01 ` Johannes Thumshirn
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.