btrfs: print the actual offset in btrfs_root_name
authorJosef Bacik <josef@toxicpanda.com>
Wed, 16 Dec 2020 16:18:44 +0000 (11:18 -0500)
committerDavid Sterba <dsterba@suse.com>
Thu, 7 Jan 2021 16:25:05 +0000 (17:25 +0100)
We're supposed to print the root_key.offset in btrfs_root_name in the
case of a reloc root, not the objectid.  Fix this helper to take the key
so we have access to the offset when we need it.

Fixes: 457f1864b569 ("btrfs: pretty print leaked root name")
Reviewed-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/disk-io.c
fs/btrfs/print-tree.c
fs/btrfs/print-tree.h

index 1dfd4b2d0e1e8f868f654beb25826c050b8fb1a8..6b35b7e8813697e59c3e97b27e4c952a8973edfd 100644 (file)
@@ -1457,7 +1457,7 @@ void btrfs_check_leaked_roots(struct btrfs_fs_info *fs_info)
                root = list_first_entry(&fs_info->allocated_roots,
                                        struct btrfs_root, leak_list);
                btrfs_err(fs_info, "leaked root %s refcount %d",
-                         btrfs_root_name(root->root_key.objectid, buf),
+                         btrfs_root_name(&root->root_key, buf),
                          refcount_read(&root->refs));
                while (refcount_read(&root->refs) > 1)
                        btrfs_put_root(root);
index fe5e0026129d521041f78f08c8a5b83a54b7620a..aae1027bd76a1379e9397bef191b97ef3d978189 100644 (file)
@@ -26,22 +26,22 @@ static const struct root_name_map root_map[] = {
        { BTRFS_DATA_RELOC_TREE_OBJECTID,       "DATA_RELOC_TREE"       },
 };
 
-const char *btrfs_root_name(u64 objectid, char *buf)
+const char *btrfs_root_name(const struct btrfs_key *key, char *buf)
 {
        int i;
 
-       if (objectid == BTRFS_TREE_RELOC_OBJECTID) {
+       if (key->objectid == BTRFS_TREE_RELOC_OBJECTID) {
                snprintf(buf, BTRFS_ROOT_NAME_BUF_LEN,
-                        "TREE_RELOC offset=%llu", objectid);
+                        "TREE_RELOC offset=%llu", key->offset);
                return buf;
        }
 
        for (i = 0; i < ARRAY_SIZE(root_map); i++) {
-               if (root_map[i].id == objectid)
+               if (root_map[i].id == key->objectid)
                        return root_map[i].name;
        }
 
-       snprintf(buf, BTRFS_ROOT_NAME_BUF_LEN, "%llu", objectid);
+       snprintf(buf, BTRFS_ROOT_NAME_BUF_LEN, "%llu", key->objectid);
        return buf;
 }
 
index 78b99385a503fb9bc78fc4edf49fe38838837174..8c3e9319ec4efe455709f1ac5fb63a45302e4833 100644 (file)
@@ -11,6 +11,6 @@
 
 void btrfs_print_leaf(struct extent_buffer *l);
 void btrfs_print_tree(struct extent_buffer *c, bool follow);
-const char *btrfs_root_name(u64 objectid, char *buf);
+const char *btrfs_root_name(const struct btrfs_key *key, char *buf);
 
 #endif