From 8c36786c8198bb7e440723240d9775d868d8409c Mon Sep 17 00:00:00 2001 From: Qu Wenruo Date: Tue, 31 Oct 2017 14:07:58 +0800 Subject: [PATCH] btrfs-progs: print-tree: Print offset as tree objectid for ROOT_ITEM For cases like reloc trees and subvolume trees, their key offset is the tree id. The key will be printed as: (TREE_RELOC ROOT_ITEM 18446744073709551607) The negative number is long and even guys with real engineer brains can't easily get the meaning. This patch will change the output format to: (TREE_RELOC ROOT_ITEM DATA_RELOC_TREE) While for special offset value like 0 or (u64)-1, it's still shown as is. Signed-off-by: Qu Wenruo [ reword comment ] Signed-off-by: David Sterba --- print-tree.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/print-tree.c b/print-tree.c index 3c585e31..cee30bfb 100644 --- a/print-tree.c +++ b/print-tree.c @@ -794,6 +794,17 @@ void btrfs_print_key(struct btrfs_disk_key *disk_key) case BTRFS_UUID_KEY_RECEIVED_SUBVOL: printf(" 0x%016llx)", (unsigned long long)offset); break; + + /* + * Key offsets of ROOT_ITEM point to tree root, print them in human + * readable format. Especially useful for trees like data/tree reloc + * tree, whose tree id can be negative. + */ + case BTRFS_ROOT_ITEM_KEY: + printf(" "); + print_objectid(stdout, offset, type); + printf(")"); + break; default: if (offset == (u64)-1) printf(" -1)");