From 732394dfe160705f80c136aa8696d180165b485c Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sat, 27 Aug 2022 19:03:53 -0600 Subject: btrfs: Rethink the ReadNode API to better encourage sanity checking --- lib/btrfsprogs/btrfsutil/broken_btree.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'lib/btrfsprogs/btrfsutil') diff --git a/lib/btrfsprogs/btrfsutil/broken_btree.go b/lib/btrfsprogs/btrfsutil/broken_btree.go index 0d71cfb..70eb1de 100644 --- a/lib/btrfsprogs/btrfsutil/broken_btree.go +++ b/lib/btrfsprogs/btrfsutil/broken_btree.go @@ -54,7 +54,7 @@ func span(fs *btrfs.FS, path btrfs.TreePath) (btrfs.Key, btrfs.Key) { // item error if path.Node(-1).NodeAddr == 0 { // If we got an item error, then the node is readable - node, _ := fs.ReadNode(path.Node(-2).NodeAddr) + node, _ := fs.ReadNode(path.Parent()) key := node.Data.BodyLeaf[path.Node(-1).ItemIdx].Key return key, key } @@ -65,7 +65,7 @@ func span(fs *btrfs.FS, path btrfs.TreePath) (btrfs.Key, btrfs.Key) { if len(path.Nodes) == 1 { return btrfs.Key{}, maxKey } - parentNode, _ := fs.ReadNode(path.Node(-2).NodeAddr) + parentNode, _ := fs.ReadNode(path.Parent()) low := parentNode.Data.BodyInternal[path.Node(-1).ItemIdx].Key var high btrfs.Key if path.Node(-1).ItemIdx+1 < len(parentNode.Data.BodyInternal) { @@ -226,7 +226,7 @@ func (bt *brokenTrees) TreeSearch(treeID btrfs.ObjID, fn func(btrfs.Key, uint32) return btrfs.Item{}, iofs.ErrNotExist } - node, err := bt.inner.ReadNode(indexItem.Value.Path.Node(-2).NodeAddr) + node, err := bt.inner.ReadNode(indexItem.Value.Path.Parent()) if err != nil { return btrfs.Item{}, err } @@ -253,7 +253,7 @@ func (bt *brokenTrees) TreeSearchAll(treeID btrfs.ObjID, fn func(btrfs.Key, uint for i := range indexItems { if node == nil || node.Addr != indexItems[i].Path.Node(-2).NodeAddr { var err error - node, err = bt.inner.ReadNode(indexItems[i].Path.Node(-2).NodeAddr) + node, err = bt.inner.ReadNode(indexItems[i].Path.Parent()) if err != nil { return nil, err } @@ -306,7 +306,7 @@ func (bt *brokenTrees) TreeWalk(ctx context.Context, treeID btrfs.ObjID, errHand if cbs.Item != nil { if node == nil || node.Addr != indexItem.Value.Path.Node(-2).NodeAddr { var err error - node, err = bt.inner.ReadNode(indexItem.Value.Path.Node(-2).NodeAddr) + node, err = bt.inner.ReadNode(indexItem.Value.Path.Parent()) if err != nil { errHandle(&btrfs.TreeError{Path: indexItem.Value.Path, Err: err}) return nil -- cgit v1.2.3-2-g168b