diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2023-04-17 18:02:31 -0600 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2023-04-17 19:52:26 -0600 |
commit | 3a7fec8e6fe4d36c976540f88bce2c186dd47d1f (patch) | |
tree | ba303b76e9cde8b4b28e2119cc0d9afaa03ccb28 /lib/btrfsutil | |
parent | 2fec63f72ded515dd51b08245f344385adbe34fb (diff) |
btrfsutil: RebuiltTree: Dedup ownership errors
Diffstat (limited to 'lib/btrfsutil')
-rw-r--r-- | lib/btrfsutil/rebuilt_tree.go | 12 |
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 }, |