diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2023-02-12 13:14:43 -0700 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2023-02-12 14:27:30 -0700 |
commit | 79cb12dde9352331c15724b7d0892fd4ce5ea342 (patch) | |
tree | a90ef3875bc235e442d6abe9b9fcd67fadd3d830 /lib/btrfs/btrfsitem/item_qgroupstatus.go | |
parent | 2cb3cb14dd85535a0a691d42874d7045d7c81571 (diff) |
btrfsitem, btrfsinspect/print_tree: Implement the QGroup types
Diffstat (limited to 'lib/btrfs/btrfsitem/item_qgroupstatus.go')
-rw-r--r-- | lib/btrfs/btrfsitem/item_qgroupstatus.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/btrfs/btrfsitem/item_qgroupstatus.go b/lib/btrfs/btrfsitem/item_qgroupstatus.go new file mode 100644 index 0000000..e7bd62c --- /dev/null +++ b/lib/btrfs/btrfsitem/item_qgroupstatus.go @@ -0,0 +1,43 @@ +// 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/btrfs/btrfsprim" + "git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfsvol" + "git.lukeshu.com/btrfs-progs-ng/lib/fmtutil" +) + +type QGroupStatusFlags uint64 + +const ( + QGroupStatusFlagOn QGroupStatusFlags = 1 << iota + QGroupStatusFlagRescan + QGroupStatusFlagInconsistent +) + +var qgroupStatusFlagNames = []string{ + "ON", + "RESCAN", + "INCONSISTENT", +} + +func (f QGroupStatusFlags) Has(req QGroupStatusFlags) bool { return f&req == req } +func (f QGroupStatusFlags) String() string { + return fmtutil.BitfieldString(f, qgroupStatusFlagNames, fmtutil.HexNone) +} + +const QGroupStatusVersion uint64 = 1 + +// key.objectid = 0 +// key.offset = 0 +type QGroupStatus struct { // QGROUP_STATUS=240 + Version uint64 `bin:"off=0, siz=8"` + Generation btrfsprim.Generation `bin:"off=8, siz=8"` + Flags QGroupStatusFlags `bin:"off=16, siz=8"` + RescanProgress btrfsvol.LogicalAddr `bin:"off=24, siz=8"` + binstruct.End `bin:"off=32"` +} |