diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2022-08-27 19:03:53 -0600 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2022-08-28 11:51:26 -0600 |
commit | 732394dfe160705f80c136aa8696d180165b485c (patch) | |
tree | d113747062f0cac49c22433787c69b2b7d78e08c /lib/btrfsprogs | |
parent | 811b5e2c0b9721641ef17630ba046f99721594c7 (diff) |
btrfs: Rethink the ReadNode API to better encourage sanity checking
Diffstat (limited to 'lib/btrfsprogs')
-rw-r--r-- | lib/btrfsprogs/btrfsinspect/scandevices.go | 2 | ||||
-rw-r--r-- | lib/btrfsprogs/btrfsutil/broken_btree.go | 10 |
2 files changed, 6 insertions, 6 deletions
diff --git a/lib/btrfsprogs/btrfsinspect/scandevices.go b/lib/btrfsprogs/btrfsinspect/scandevices.go index fbe238b..66a14c3 100644 --- a/lib/btrfsprogs/btrfsinspect/scandevices.go +++ b/lib/btrfsprogs/btrfsinspect/scandevices.go @@ -141,7 +141,7 @@ func ScanOneDevice(ctx context.Context, dev *btrfs.Device, sb btrfs.Superblock) } if checkForNode { - nodeRef, err := btrfs.ReadNode[btrfsvol.PhysicalAddr](dev, sb, pos, nil) + nodeRef, err := btrfs.ReadNode[btrfsvol.PhysicalAddr](dev, sb, pos, btrfs.NodeExpectations{}) if err != nil { if !errors.Is(err, btrfs.ErrNotANode) { dlog.Errorf(ctx, "... dev[%q] error: %v", dev.Name(), err) 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 |