Re: [PATCH] btrfs: print-tree: print header owner as signed

sun k <[email protected]>
Newsgroups org.kernel.vger.linux-btrfs
Message-ID <CAAuSuOoNE4wgaqx-5MH_cqpeu0MyrUikrVS98K2H4xLnRW5mxA@mail.gmail.com>
Looks good.

Reviewed-by: Sun YangKai <[email protected]>

BTW, this reminds me the print-tree result of dir items that points to a
subvol, which currently looks like this:

item 4 key (256 DIR_ITEM 224155391) itemoff 15967 itemsize 48
                location key (43123 ROOT_ITEM 18446744073709551615) type DIR
                transid 896627 data_len 0 name_len 18
                name: home.20260621T2000

And I wonder if we can also print the location key's offset field as s64
to make it easier to read.

Thanks,
Sun YangKai


On 2026/6/21 17:11, Qu Wenruo wrote:
> When dumpping 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 pre-defined 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.
>
> Signed-off-by: Qu Wenruo <[email protected]>
> ---
>   fs/btrfs/print-tree.c | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/fs/btrfs/print-tree.c b/fs/btrfs/print-tree.c
> index 87e60a2d4bd8..53e726119ca7 100644
> --- a/fs/btrfs/print-tree.c
> +++ b/fs/btrfs/print-tree.c
> @@ -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);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.