summaryrefslogtreecommitdiff
path: root/lib/btrfsprogs/btrfsinspect/rebuildnodes/scan.go
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2022-12-26 16:32:15 -0700
committerLuke Shumaker <lukeshu@lukeshu.com>2022-12-30 22:09:31 -0700
commit6e8e2960c5412685c1ac87c20b4d34d2caf90640 (patch)
treeba1728d3ada0f9f308f3d04a76806cc9d9401509 /lib/btrfsprogs/btrfsinspect/rebuildnodes/scan.go
parent6a314a2de6c2b3299b2220e90be9338d1365c076 (diff)
rebuildnodes: Fuss with logging to take advantage of textui
Diffstat (limited to 'lib/btrfsprogs/btrfsinspect/rebuildnodes/scan.go')
-rw-r--r--lib/btrfsprogs/btrfsinspect/rebuildnodes/scan.go30
1 files changed, 9 insertions, 21 deletions
diff --git a/lib/btrfsprogs/btrfsinspect/rebuildnodes/scan.go b/lib/btrfsprogs/btrfsinspect/rebuildnodes/scan.go
index cdd5cba..7a112b4 100644
--- a/lib/btrfsprogs/btrfsinspect/rebuildnodes/scan.go
+++ b/lib/btrfsprogs/btrfsinspect/rebuildnodes/scan.go
@@ -6,7 +6,6 @@ package rebuildnodes
import (
"context"
- "fmt"
"time"
"github.com/datawire/dlib/dlog"
@@ -21,16 +20,6 @@ import (
"git.lukeshu.com/btrfs-progs-ng/lib/textui"
)
-type scanStats struct {
- N, D int
-}
-
-func (s scanStats) String() string {
- return fmt.Sprintf("... %v%% (%v/%v)",
- int(100*float64(s.N)/float64(s.D)),
- s.N, s.D)
-}
-
func ScanDevices(ctx context.Context, fs *btrfs.FS, scanResults btrfsinspect.ScanDevicesResult) (graph.Graph, *keyio.Handle, error) {
dlog.Infof(ctx, "Reading node data from FS...")
@@ -39,17 +28,16 @@ func ScanDevices(ctx context.Context, fs *btrfs.FS, scanResults btrfsinspect.Sca
return graph.Graph{}, nil, err
}
- total := countNodes(scanResults)
- done := 0
- progressWriter := textui.NewProgress[scanStats](ctx, dlog.LogLevelInfo, 1*time.Second)
- progress := func(done, total int) {
- progressWriter.Set(scanStats{N: done, D: total})
- }
+ var stats textui.Portion[int]
+ stats.D = countNodes(scanResults)
+ progressWriter := textui.NewProgress[textui.Portion[int]](
+ dlog.WithField(ctx, "btrfsinspect.rebuild-nodes.read.substep", "read-nodes"),
+ dlog.LogLevelInfo, 1*time.Second)
nodeGraph := graph.New(*sb)
keyIO := keyio.NewHandle(fs, *sb)
- progress(done, total)
+ progressWriter.Set(stats)
for _, devResults := range scanResults {
for laddr := range devResults.FoundNodes {
nodeRef, err := btrfstree.ReadNode[btrfsvol.LogicalAddr](fs, *sb, laddr, btrfstree.NodeExpectations{
@@ -62,11 +50,11 @@ func ScanDevices(ctx context.Context, fs *btrfs.FS, scanResults btrfsinspect.Sca
nodeGraph.InsertNode(nodeRef)
keyIO.InsertNode(nodeRef)
- done++
- progress(done, total)
+ stats.N++
+ progressWriter.Set(stats)
}
}
- if done != total {
+ if stats.N != stats.D {
panic("should not happen")
}
progressWriter.Done()