summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2023-04-17 18:02:31 -0600
committerLuke Shumaker <lukeshu@lukeshu.com>2023-04-17 19:52:26 -0600
commit3a7fec8e6fe4d36c976540f88bce2c186dd47d1f (patch)
treeba303b76e9cde8b4b28e2119cc0d9afaa03ccb28
parent2fec63f72ded515dd51b08245f344385adbe34fb (diff)
btrfsutil: RebuiltTree: Dedup ownership errors
-rw-r--r--lib/btrfsutil/rebuilt_tree.go12
1 files changed, 8 insertions, 4 deletions
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
},