diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2023-02-11 22:40:40 -0700 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2023-02-12 16:17:27 -0700 |
commit | 1f3a1a474ac41f427e4c5b0d27d2c85a3cfaa65e (patch) | |
tree | ffbdcba3e17ba4a5bd8947c3830626c0d9fae145 /lib/btrfs/btrfsprim/misc.go | |
parent | 28549f676e040c96bfae575535dea7e0ecdf0f41 (diff) |
btrfsprim: Have ObjID.Format() take the tree ID, not the item type
Diffstat (limited to 'lib/btrfs/btrfsprim/misc.go')
-rw-r--r-- | lib/btrfs/btrfsprim/misc.go | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/lib/btrfs/btrfsprim/misc.go b/lib/btrfs/btrfsprim/misc.go index da661f6..ca2e313 100644 --- a/lib/btrfs/btrfsprim/misc.go +++ b/lib/btrfs/btrfsprim/misc.go @@ -22,8 +22,35 @@ type Key struct { binstruct.End `bin:"off=0x11"` } +// mimics print-tree.c:btrfs_print_key() +func (key Key) Format(tree ObjID) string { + switch tree { + case UUID_TREE_OBJECTID: + return fmt.Sprintf("(%v %v %#08x)", + key.ObjectID.Format(tree), + key.ItemType, + key.Offset) + case ROOT_TREE_OBJECTID, QUOTA_TREE_OBJECTID: + return fmt.Sprintf("(%v %v %v)", + key.ObjectID.Format(tree), + key.ItemType, + ObjID(key.Offset).Format(tree)) + default: + if key.Offset == math.MaxUint64 { + return fmt.Sprintf("(%v %v -1)", + key.ObjectID.Format(tree), + key.ItemType) + } else { + return fmt.Sprintf("(%v %v %v)", + key.ObjectID.Format(tree), + key.ItemType, + key.Offset) + } + } +} + func (key Key) String() string { - return fmt.Sprintf("{%v %v %v}", key.ObjectID, key.ItemType, key.Offset) + return key.Format(0) } var MaxKey = Key{ |