summaryrefslogtreecommitdiff
path: root/lib/btrfs/btrfstree/ops.go
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2022-09-05 10:03:03 -0600
committerLuke Shumaker <lukeshu@lukeshu.com>2022-09-05 10:39:18 -0600
commitabdc8394bcb7080f01859cbfe367beecf5aef06f (patch)
tree0bd93c7d59113ffc1933578c9968b15dcb41f0a2 /lib/btrfs/btrfstree/ops.go
parenta16c3b96ddfae01a2e89c1855058230eb369263c (diff)
Add ToKey to TreePaths; MinItem and MaxItem to NodeExpectations
Diffstat (limited to 'lib/btrfs/btrfstree/ops.go')
-rw-r--r--lib/btrfs/btrfstree/ops.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/btrfs/btrfstree/ops.go b/lib/btrfs/btrfstree/ops.go
index acbdd23..d7db225 100644
--- a/lib/btrfs/btrfstree/ops.go
+++ b/lib/btrfs/btrfstree/ops.go
@@ -176,6 +176,7 @@ func (fs TreeOperatorImpl) treeWalk(ctx context.Context, path TreePath, errHandl
ToNodeAddr: item.BlockPtr,
ToNodeGeneration: item.Generation,
ToNodeLevel: node.Data.Head.Level - 1,
+ ToKey: item.Key,
})
if cbs.PreKeyPointer != nil {
if err := cbs.PreKeyPointer(itemPath, item); err != nil {
@@ -199,6 +200,7 @@ func (fs TreeOperatorImpl) treeWalk(ctx context.Context, path TreePath, errHandl
itemPath := append(path, TreePathElem{
FromTree: node.Data.Head.Owner,
FromItemIdx: i,
+ ToKey: item.Key,
})
if errBody, isErr := item.Body.(btrfsitem.Error); isErr {
if cbs.BadItem == nil {
@@ -273,6 +275,7 @@ func (fs TreeOperatorImpl) treeSearch(treeRoot TreeRoot, fn func(btrfsprim.Key,
ToNodeAddr: node.Data.BodyInternal[lastGood].BlockPtr,
ToNodeGeneration: node.Data.BodyInternal[lastGood].Generation,
ToNodeLevel: node.Data.Head.Level - 1,
+ ToKey: node.Data.BodyInternal[lastGood].Key,
})
} else {
// leaf node
@@ -296,6 +299,7 @@ func (fs TreeOperatorImpl) treeSearch(treeRoot TreeRoot, fn func(btrfsprim.Key,
path = append(path, TreePathElem{
FromTree: node.Data.Head.Owner,
FromItemIdx: idx,
+ ToKey: node.Data.BodyLeaf[idx].Key,
})
return path, node, nil
}
@@ -339,11 +343,13 @@ func (fs TreeOperatorImpl) prev(path TreePath, node *diskio.Ref[btrfsvol.Logical
ToNodeAddr: node.Data.BodyInternal[len(node.Data.BodyInternal)-1].BlockPtr,
ToNodeGeneration: node.Data.BodyInternal[len(node.Data.BodyInternal)-1].Generation,
ToNodeLevel: node.Data.Head.Level - 1,
+ ToKey: node.Data.BodyInternal[len(node.Data.BodyInternal)-1].Key,
})
} else {
path = append(path, TreePathElem{
FromTree: node.Data.Head.Owner,
FromItemIdx: len(node.Data.BodyLeaf) - 1,
+ ToKey: node.Data.BodyLeaf[len(node.Data.BodyLeaf)-1].Key,
})
}
}
@@ -409,11 +415,13 @@ func (fs TreeOperatorImpl) next(path TreePath, node *diskio.Ref[btrfsvol.Logical
ToNodeAddr: node.Data.BodyInternal[len(node.Data.BodyInternal)-1].BlockPtr,
ToNodeGeneration: node.Data.BodyInternal[len(node.Data.BodyInternal)-1].Generation,
ToNodeLevel: node.Data.Head.Level - 1,
+ ToKey: node.Data.BodyInternal[len(node.Data.BodyInternal)-1].Key,
})
} else {
path = append(path, TreePathElem{
FromTree: node.Data.Head.Owner,
FromItemIdx: 0,
+ ToKey: node.Data.BodyInternal[0].Key,
})
}
}