diff --git a/checker/checker.go b/checker/checker.go index 845d919c9..dc2d88c8c 100644 --- a/checker/checker.go +++ b/checker/checker.go @@ -505,13 +505,12 @@ func (c *Checker) Structure(errChan chan<- error, done <-chan struct{}) { treeIDChan := make(chan backend.ID) treeJobChan1 := make(chan treeJob) treeJobChan2 := make(chan treeJob) - treeErrChan := make(chan TreeError) var wg sync.WaitGroup for i := 0; i < defaultParallelism; i++ { wg.Add(2) go loadTreeWorker(c.repo, treeIDChan, treeJobChan1, done, &wg) - go c.checkTreeWorker(treeJobChan2, treeErrChan, done, &wg) + go c.checkTreeWorker(treeJobChan2, errChan, done, &wg) } filterTrees(trees, treeIDChan, treeJobChan1, treeJobChan2, done) diff --git a/cmd/restic/cmd_check.go b/cmd/restic/cmd_check.go index d47de1c7b..0d5993845 100644 --- a/cmd/restic/cmd_check.go +++ b/cmd/restic/cmd_check.go @@ -79,7 +79,14 @@ func (cmd CmdCheck) Execute(args []string) error { for err := range errChan { errorsFound = true - fmt.Fprintf(os.Stderr, "error: %v\n", err) + if e, ok := err.(checker.TreeError); ok { + fmt.Fprintf(os.Stderr, "error for tree %v:\n", e.ID.Str()) + for _, treeErr := range e.Errors { + fmt.Fprintf(os.Stderr, " %v\n", treeErr) + } + } else { + fmt.Fprintf(os.Stderr, "error: %v\n", err) + } } for _, id := range chkr.UnusedBlobs() {