summaryrefslogtreecommitdiff
path: root/lib/btrfs/btrfsitem/item_devextent.go
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2022-07-10 13:18:30 -0600
committerLuke Shumaker <lukeshu@lukeshu.com>2022-07-10 13:35:20 -0600
commit27401b6ea459921a6152ab1744da1618358465f4 (patch)
tree2c4f9c096f1a593e65d7f824901e815ca48bfaf0 /lib/btrfs/btrfsitem/item_devextent.go
parent42f6f78e0a32ba0eda707154f8e1ffb4579604ee (diff)
Rename the module, mv pkg lib
Diffstat (limited to 'lib/btrfs/btrfsitem/item_devextent.go')
-rw-r--r--lib/btrfs/btrfsitem/item_devextent.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/btrfs/btrfsitem/item_devextent.go b/lib/btrfs/btrfsitem/item_devextent.go
new file mode 100644
index 0000000..c346d85
--- /dev/null
+++ b/lib/btrfs/btrfsitem/item_devextent.go
@@ -0,0 +1,32 @@
+package btrfsitem
+
+import (
+ "git.lukeshu.com/btrfs-progs-ng/lib/binstruct"
+ "git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfsvol"
+ "git.lukeshu.com/btrfs-progs-ng/lib/btrfs/internal"
+ "git.lukeshu.com/btrfs-progs-ng/lib/util"
+)
+
+// key.objectid = device_id
+// key.offset = physical_addr
+type DevExtent struct { // DEV_EXTENT=204
+ ChunkTree int64 `bin:"off=0, siz=8"`
+ ChunkObjectID internal.ObjID `bin:"off=8, siz=8"`
+ ChunkOffset btrfsvol.LogicalAddr `bin:"off=16, siz=8"`
+ Length btrfsvol.AddrDelta `bin:"off=24, siz=8"`
+ ChunkTreeUUID util.UUID `bin:"off=32, siz=16"`
+ binstruct.End `bin:"off=48"`
+}
+
+func (devext DevExtent) Mapping(key internal.Key) btrfsvol.Mapping {
+ return btrfsvol.Mapping{
+ LAddr: devext.ChunkOffset,
+ PAddr: btrfsvol.QualifiedPhysicalAddr{
+ Dev: btrfsvol.DeviceID(key.ObjectID),
+ Addr: btrfsvol.PhysicalAddr(key.Offset),
+ },
+ Size: devext.Length,
+ SizeLocked: true,
+ Flags: nil,
+ }
+}