summaryrefslogtreecommitdiff
path: root/cmd/btrfs-rec/inspect_rebuildnodes.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/btrfs-rec/inspect_rebuildnodes.go')
-rw-r--r--cmd/btrfs-rec/inspect_rebuildnodes.go18
1 files changed, 14 insertions, 4 deletions
diff --git a/cmd/btrfs-rec/inspect_rebuildnodes.go b/cmd/btrfs-rec/inspect_rebuildnodes.go
index e61e6d2..9c86c3a 100644
--- a/cmd/btrfs-rec/inspect_rebuildnodes.go
+++ b/cmd/btrfs-rec/inspect_rebuildnodes.go
@@ -33,21 +33,31 @@ func init() {
}
dlog.Infof(ctx, "... done reading %q", args[0])
- rebuiltNodes, err := rebuildnodes.RebuildNodes(ctx, fs, nodeScanResults)
+ rebuilder, err := rebuildnodes.NewRebuilder(ctx, fs, nodeScanResults)
if err != nil {
return err
}
- dlog.Info(ctx, "Writing re-built nodes to stdout...")
- if err := writeJSONFile(os.Stdout, rebuiltNodes, lowmemjson.ReEncoder{
+ dlog.Info(ctx, "Rebuilding node tree...")
+ rebuildErr := rebuilder.Rebuild(ctx)
+ dst := os.Stdout
+ if rebuildErr != nil {
+ dst = os.Stderr
+ dlog.Errorf(ctx, "rebuild error: %v", rebuildErr)
+ }
+ dlog.Infof(ctx, "Writing re-built nodes to %s...", dst.Name())
+ if err := writeJSONFile(dst, rebuilder.ListRoots(), lowmemjson.ReEncoder{
Indent: "\t",
ForceTrailingNewlines: true,
}); err != nil {
+ if rebuildErr != nil {
+ return rebuildErr
+ }
return err
}
dlog.Info(ctx, "... done writing")
- return nil
+ return rebuildErr
},
})
}