From b35032f7aa821ec48612ccc78bc36f30c589c9b9 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 6 Jun 2022 12:35:02 -0600 Subject: show progress --- cmd/btrfs-fsck/main.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'cmd') diff --git a/cmd/btrfs-fsck/main.go b/cmd/btrfs-fsck/main.go index be9f313..bb67556 100644 --- a/cmd/btrfs-fsck/main.go +++ b/cmd/btrfs-fsck/main.go @@ -78,10 +78,12 @@ func Main(imgfilename string) (err error) { } reconstructedChunks := make(map[btrfs.LogicalAddr][]reconstructedStripe) for _, dev := range fs.Devices { - fmt.Printf("Pass 1: ... dev[%q] scanning for nodes\n", dev.Name()) + fmt.Printf("Pass 1: ... dev[%q] scanning for nodes...\n", dev.Name()) superblock, _ := dev.Superblock() foundNodes := make(map[btrfs.LogicalAddr][]btrfs.PhysicalAddr) var lostAndFoundChunks []btrfs.SysChunk + devSize, _ := dev.Size() + lastProgress := -1 if err := btrfsmisc.ScanForNodes(dev, superblock.Data, func(nodeRef *util.Ref[btrfs.PhysicalAddr, btrfs.Node], err error) { if err != nil { fmt.Printf("Pass 1: ... dev[%q] error: %v\n", dev.Name(), err) @@ -108,6 +110,12 @@ func Main(imgfilename string) (err error) { }) } } + }, func(pos btrfs.PhysicalAddr) { + pct := int(100 * float64(pos) / float64(devSize)) + if pct != lastProgress { + fmt.Printf("Pass 1: ... dev[%q] scanned %v%%\n", dev.Name(), pct) + lastProgress = pct + } }); err != nil { return err } -- cgit v1.2.3-2-g168b