summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQu Wenruo <wqu@suse.com>2017-10-31 14:07:58 +0800
committerDavid Sterba <dsterba@suse.com>2017-11-14 15:59:01 +0100
commit8c36786c8198bb7e440723240d9775d868d8409c (patch)
tree96074c37614459da304cfb36a2871eb344482bfb
parentaaf2dac5ef375e76bfbcac3d6ac27de0b0f62821 (diff)
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 <wqu@suse.com> [ reword comment ] Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--print-tree.c11
1 files changed, 11 insertions, 0 deletions
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)");