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>
master
Qu Wenruo 2017-10-31 14:07:58 +08:00 committed by David Sterba
parent aaf2dac5ef
commit 8c36786c81
1 changed files with 11 additions and 0 deletions

View File

@ -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)");