diff options
Diffstat (limited to 'lib/btrfs/btrfsprim')
-rw-r--r-- | lib/btrfs/btrfsprim/misc.go | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/btrfs/btrfsprim/misc.go b/lib/btrfs/btrfsprim/misc.go index 0ebbe19..9b3a6f8 100644 --- a/lib/btrfs/btrfsprim/misc.go +++ b/lib/btrfs/btrfsprim/misc.go @@ -6,6 +6,7 @@ package btrfsprim import ( "fmt" + "math" "time" "git.lukeshu.com/btrfs-progs-ng/lib/binstruct" @@ -25,6 +26,24 @@ func (k Key) String() string { return fmt.Sprintf("{%v %v %v}", k.ObjectID, k.ItemType, k.Offset) } +var MaxKey = Key{ + ObjectID: math.MaxUint64, + ItemType: math.MaxUint8, + Offset: math.MaxUint64, +} + +func (key Key) Mm() Key { + switch { + case key.Offset > 0: + key.Offset-- + case key.ItemType > 0: + key.ItemType-- + case key.ObjectID > 0: + key.ObjectID-- + } + return key +} + func (a Key) Cmp(b Key) int { if d := containers.NativeCmp(a.ObjectID, b.ObjectID); d != 0 { return d |