]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: print-tree: print header owner as signed
authorQu Wenruo <wqu@suse.com>
Sun, 21 Jun 2026 09:11:48 +0000 (18:41 +0930)
committerDavid Sterba <dsterba@suse.com>
Tue, 30 Jun 2026 00:02:03 +0000 (02:02 +0200)
When dumping a tree block, btrfs_header::owner is printed as
unsigned, which can result in numbers that are hard to read, e.g.:

  BTRFS info (device loop0): leaf 8908800 gen 16 total ptrs 28 free space 1676 owner 18446744073709551607

For the above output, 18446744073709551607 is (s64)-9, the root id of data
reloc tree.

Despite those predefined root ids that are already negative, existing
subvolume trees will not have any negative values, as subvolume trees can
only utilize the lower 48 bits, so there will be no output change for
existing subvolumes, thus no extra confusion.

Reviewed-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Sun YangKai <sunk67188@gmail.com>
Reviewed-by: Boris Burkov <boris@bur.io>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/print-tree.c

index 87e60a2d4bd819dcdd223abd36fa24cb337eab5c..53e726119ca7021fd6954674b90b61f5c0ac4457 100644 (file)
@@ -449,9 +449,9 @@ void btrfs_print_leaf(const struct extent_buffer *l)
        nr = btrfs_header_nritems(l);
 
        btrfs_info(fs_info,
-                  "leaf %llu gen %llu total ptrs %d free space %d owner %llu",
+                  "leaf %llu gen %llu total ptrs %d free space %d owner %lld",
                   btrfs_header_bytenr(l), btrfs_header_generation(l), nr,
-                  btrfs_leaf_free_space(l), btrfs_header_owner(l));
+                  btrfs_leaf_free_space(l), (s64)btrfs_header_owner(l));
        print_eb_refs_lock(l);
        for (i = 0 ; i < nr ; i++) {
                char key_buf[KEY_TYPE_BUF_SIZE];
@@ -600,10 +600,10 @@ void btrfs_print_tree(const struct extent_buffer *c, bool follow)
                return;
        }
        btrfs_info(fs_info,
-                  "node %llu level %d gen %llu total ptrs %d free spc %u owner %llu",
+                  "node %llu level %d gen %llu total ptrs %d free spc %u owner %lld",
                   btrfs_header_bytenr(c), level, btrfs_header_generation(c),
                   nr, (u32)BTRFS_NODEPTRS_PER_BLOCK(fs_info) - nr,
-                  btrfs_header_owner(c));
+                  (s64)btrfs_header_owner(c));
        print_eb_refs_lock(c);
        for (i = 0; i < nr; i++) {
                btrfs_node_key_to_cpu(c, &key, i);