From 8aea2c35c9475293c89293a148134c0e6d5c4e7b Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 28 Aug 2022 16:55:06 -0600 Subject: wip --- lib/btrfs/btrfstree/types_node.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'lib/btrfs/btrfstree/types_node.go') diff --git a/lib/btrfs/btrfstree/types_node.go b/lib/btrfs/btrfstree/types_node.go index aecdf9c..6718fbe 100644 --- a/lib/btrfs/btrfstree/types_node.go +++ b/lib/btrfs/btrfstree/types_node.go @@ -17,7 +17,6 @@ import ( "git.lukeshu.com/btrfs-progs-ng/lib/containers" "git.lukeshu.com/btrfs-progs-ng/lib/diskio" "git.lukeshu.com/btrfs-progs-ng/lib/fmtutil" - "git.lukeshu.com/btrfs-progs-ng/lib/slices" ) type NodeFlags uint64 @@ -386,7 +385,7 @@ type NodeExpectations struct { // Things knowable from the parent. Level containers.Optional[uint8] MaxGeneration containers.Optional[btrfsprim.Generation] - Owner []btrfsprim.ObjID + Owner func(btrfsprim.ObjID) error } func ReadNode[Addr ~int64](fs diskio.File[Addr], sb Superblock, addr Addr, exp NodeExpectations) (*diskio.Ref[Addr, Node], error) { @@ -437,9 +436,10 @@ func ReadNode[Addr ~int64](fs diskio.File[Addr], sb Superblock, addr Addr, exp N return nodeRef, fmt.Errorf("btrfs.ReadNode: node@%v: expected generation<=%v but claims to be generation=%v", addr, exp.MaxGeneration.Val, nodeRef.Data.Head.Generation) } - if len(exp.Owner) > 0 && !slices.Contains(nodeRef.Data.Head.Owner, exp.Owner) { - return nodeRef, fmt.Errorf("btrfs.ReadNode: node@%v: expected owner in %v but claims to have owner=%v", - addr, exp.Owner, nodeRef.Data.Head.Owner) + if exp.Owner != nil { + if err := exp.Owner(nodeRef.Data.Head.Owner); err != nil { + return nodeRef, fmt.Errorf("btrfs.ReadNode: node@%v: %w", addr, err) + } } // parse (main) -- cgit v1.2.3-2-g168b