On 2018年03月19日 18:46, Nikolay Borisov wrote: > > > On 19.03.2018 12:28, Qu Wenruo wrote: >> Commit Fixes: 8c36786c8198 ("btrfs-progs: print-tree: Print offset as tree >> objectid for ROOT_ITEM") >> changes how we translate offset of ROOT_ITEM. >> >> However the fact is, even for ROOT_ITEM, we have different meaning of >> offset. >> >> For tree reloc tree, it's indeed subvolume id. >> But for other trees, it's the transid of when it's created. >> >> Fix it. >> >> Reported-by: Nikolay Borisov <nbori...@suse.com> >> Signed-off-by: Qu Wenruo <w...@suse.com> >> --- >> print-tree.c | 11 ++++++++++- >> 1 file changed, 10 insertions(+), 1 deletion(-) >> >> diff --git a/print-tree.c b/print-tree.c >> index 45350fea0963..848e296c4e67 100644 >> --- a/print-tree.c >> +++ b/print-tree.c >> @@ -834,7 +834,16 @@ void btrfs_print_key(struct btrfs_disk_key *disk_key) >> */ >> case BTRFS_ROOT_ITEM_KEY: >> printf(" "); >> - print_objectid(stdout, offset, type); >> + /* >> + * Normally offset of ROOT_ITEM should presents the generation >> + * when this root is created. >> + * However if this is tree reloc tree, offset is the subvolume >> + * id of its source. Here we do extra check on this. >> + */ >> + if (objectid == BTRFS_TREE_RELOC_OBJECTID) >> + print_objectid(stdout, offset, type); > > Do we even have to do this for the reloc tree. If the offset is just a > numeric id tied to a subvolume then the only possible value different > than a numerci value is FS_TREE (in case we have 5 as the source subvol) > but even this is not very informative. I'd suggest just leaving it as a > numeric value.
What about this value? 18446744073709551607 It's data reloc tree objectid. And it's pretty long since it's -9ULL. At least this makes 2 objectid more readable. Thanks, Qu > >> + else >> + printf("%lld", offset); >> printf(")"); >> break; >> default: >> > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >
signature.asc
Description: OpenPGP digital signature