summaryrefslogtreecommitdiff
path: root/cmd/btrfs-rec/inspect_scandevices.go
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2023-02-28 20:33:28 -0700
committerLuke Shumaker <lukeshu@lukeshu.com>2023-03-14 21:31:45 -0600
commit5f45fa7d378edae2fac73517384749fc73d24e89 (patch)
tree3d38d72068a131e689ab5a8441ae4a6b1308b9f0 /cmd/btrfs-rec/inspect_scandevices.go
parent2e1946a200bf2d6374ecc097916d664f49fd8417 (diff)
tree-wide: Don't pass around a full rebuildmappings.ScanDevicesResult when a simple list of nodes will do
Diffstat (limited to 'cmd/btrfs-rec/inspect_scandevices.go')
-rw-r--r--cmd/btrfs-rec/inspect_scandevices.go25
1 files changed, 25 insertions, 0 deletions
diff --git a/cmd/btrfs-rec/inspect_scandevices.go b/cmd/btrfs-rec/inspect_scandevices.go
index 0542d6a..f93d99d 100644
--- a/cmd/btrfs-rec/inspect_scandevices.go
+++ b/cmd/btrfs-rec/inspect_scandevices.go
@@ -5,6 +5,7 @@
package main
import (
+ "context"
"os"
"git.lukeshu.com/go/lowmemjson"
@@ -14,6 +15,9 @@ import (
"git.lukeshu.com/btrfs-progs-ng/cmd/btrfs-rec/inspect/rebuildmappings"
"git.lukeshu.com/btrfs-progs-ng/lib/btrfs"
+ "git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfsvol"
+ "git.lukeshu.com/btrfs-progs-ng/lib/containers"
+ "git.lukeshu.com/btrfs-progs-ng/lib/maps"
)
func init() {
@@ -44,3 +48,24 @@ func init() {
},
})
}
+
+func readNodeList(ctx context.Context, filename string) ([]btrfsvol.LogicalAddr, error) {
+ if filename == "" {
+ return nil, nil
+ }
+ results, err := readJSONFile[rebuildmappings.ScanDevicesResult](ctx, filename)
+ if err != nil {
+ return nil, err
+ }
+ var cnt int
+ for _, devResults := range results {
+ cnt += len(devResults.FoundNodes)
+ }
+ set := make(containers.Set[btrfsvol.LogicalAddr], cnt)
+ for _, devResults := range results {
+ for laddr := range devResults.FoundNodes {
+ set.Insert(laddr)
+ }
+ }
+ return maps.SortedKeys(set), nil
+}