From 3a7fec8e6fe4d36c976540f88bce2c186dd47d1f Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 17 Apr 2023 18:02:31 -0600 Subject: btrfsutil: RebuiltTree: Dedup ownership errors --- lib/btrfsutil/rebuilt_tree.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'lib/btrfsutil') diff --git a/lib/btrfsutil/rebuilt_tree.go b/lib/btrfsutil/rebuilt_tree.go index 8336c85..97308a3 100644 --- a/lib/btrfsutil/rebuilt_tree.go +++ b/lib/btrfsutil/rebuilt_tree.go @@ -552,14 +552,18 @@ func (tree *RebuiltTree) uncachedErrors(ctx context.Context) containers.Interval MinItem: containers.OptionalValue(hiMinItem), MaxItem: containers.OptionalValue(loMaxItem), Owner: func(owner btrfsprim.ObjID, gen btrfsprim.Generation) error { - var ownerErrs derror.MultiError + byStr := make(map[string]error) for _, kpTree := range maps.SortedKeys(expTree) { if err := btrfstree.CheckOwner(ctx, tree.forrest, kpTree, owner, gen); err != nil { - ownerErrs = append(ownerErrs, err) + byStr[err.Error()] = err } } - if len(ownerErrs) > 0 { - return ownerErrs + if len(byStr) > 0 { + byPos := make(derror.MultiError, 0, len(byStr)) + for _, str := range maps.SortedKeys(byStr) { + byPos = append(byPos, byStr[str]) + } + return byPos } return nil }, -- cgit v1.2.3-2-g168b