Re: [PATCH] btrfs: print-tree: print header owner as signed
Boris Burkov <[email protected]>
| Newsgroups | org.kernel.vger.linux-btrfs |
|---|---|
| Message-ID | <[email protected]> |
On Tue, Jun 23, 2026 at 08:25:40AM +0930, 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. > What do you think about a macro or function wrapping a switch statement that also prints the string name of known trees? What about some identifying info like a volume path for subvol trees? That one might be a stretch. Anyway, this is already a definite improvement, thanks. Reviewed-by: Boris Burkov <[email protected]> > 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); > -- > 2.54.0 >