summaryrefslogtreecommitdiff
path: root/lib/btrfs/btrfsitem/item_qgrouplimit.go
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2023-02-12 14:29:15 -0700
committerLuke Shumaker <lukeshu@lukeshu.com>2023-02-12 14:29:15 -0700
commit29b6b9f997913f13a0bff8bb1278a61302413615 (patch)
tree431450fd7b0555c199b209cc2faa02dc5400bd80 /lib/btrfs/btrfsitem/item_qgrouplimit.go
parent128e4d9aa876e14a1203ce98bfaa7ad399ad97c7 (diff)
parent49a2dde06cf825613c44138fb446c58b75cbd51a (diff)
Merge branch 'lukeshu/fix-dump-trees'
Diffstat (limited to 'lib/btrfs/btrfsitem/item_qgrouplimit.go')
-rw-r--r--lib/btrfs/btrfsitem/item_qgrouplimit.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/btrfs/btrfsitem/item_qgrouplimit.go b/lib/btrfs/btrfsitem/item_qgrouplimit.go
new file mode 100644
index 0000000..9d1e05f
--- /dev/null
+++ b/lib/btrfs/btrfsitem/item_qgrouplimit.go
@@ -0,0 +1,46 @@
+// Copyright (C) 2023 Luke Shumaker <lukeshu@lukeshu.com>
+//
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package btrfsitem
+
+import (
+ "git.lukeshu.com/btrfs-progs-ng/lib/binstruct"
+ "git.lukeshu.com/btrfs-progs-ng/lib/fmtutil"
+)
+
+type QGroupLimitFlags uint64
+
+const (
+ QGroupLimitFlagMaxRfer = 1 << iota
+ QGroupLimitFlagMaxExcl
+ QGroupLimitFlagRsvRfer
+ QGroupLimitFlagRsvExcl
+ QGroupLimitFlagRferCmpr
+ QGroupLimitFlagExclCmpr
+)
+
+var qgroupLimitFlagNames = []string{
+ "MAX_RFER",
+ "MAX_EXCL",
+ "RSV_RFER",
+ "RSV_EXCL",
+ "RFER_CMPR",
+ "EXCL_CMPR",
+}
+
+func (f QGroupLimitFlags) Has(req QGroupLimitFlags) bool { return f&req == req }
+func (f QGroupLimitFlags) String() string {
+ return fmtutil.BitfieldString(f, qgroupLimitFlagNames, fmtutil.HexNone)
+}
+
+// key.objectid = 0
+// key.offset = ID of the qgroup
+type QGroupLimit struct { // QGROUP_LIMIT=244
+ Flags QGroupLimitFlags `bin:"off=0, siz=8"`
+ MaxReferenced uint64 `bin:"off=8, siz=8"`
+ MaxExclusive uint64 `bin:"off=16, siz=8"`
+ RsvReferenced uint64 `bin:"off=24, siz=8"`
+ RsvExclusive uint64 `bin:"off=32, siz=8"`
+ binstruct.End `bin:"off=40"`
+}