lkml.org 
[lkml]   [2021]   [Jan]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 082/199] btrfs: print the actual offset in btrfs_root_name
    Date
    From: Josef Bacik <josef@toxicpanda.com>

    [ Upstream commit 71008734d27f2276fcef23a5e546d358430f2d52 ]

    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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/btrfs/disk-io.c | 2 +-
    fs/btrfs/print-tree.c | 10 +++++-----
    fs/btrfs/print-tree.h | 2 +-
    3 files changed, 7 insertions(+), 7 deletions(-)

    diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
    index af97ddcc6b3e8..56f3b9acd2154 100644
    --- a/fs/btrfs/disk-io.c
    +++ b/fs/btrfs/disk-io.c
    @@ -1482,7 +1482,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);
    diff --git a/fs/btrfs/print-tree.c b/fs/btrfs/print-tree.c
    index 7695c4783d33b..c62771f3af8c6 100644
    --- a/fs/btrfs/print-tree.c
    +++ b/fs/btrfs/print-tree.c
    @@ -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;
    }

    diff --git a/fs/btrfs/print-tree.h b/fs/btrfs/print-tree.h
    index 78b99385a503f..8c3e9319ec4ef 100644
    --- a/fs/btrfs/print-tree.h
    +++ b/fs/btrfs/print-tree.h
    @@ -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
    --
    2.27.0


    \
     
     \ /
      Last update: 2021-01-26 10:39    [W:4.096 / U:0.288 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site