diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2023-02-28 20:33:28 -0700 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2023-03-14 21:31:45 -0600 |
commit | 5f45fa7d378edae2fac73517384749fc73d24e89 (patch) | |
tree | 3d38d72068a131e689ab5a8441ae4a6b1308b9f0 /cmd/btrfs-rec/inspect_scandevices.go | |
parent | 2e1946a200bf2d6374ecc097916d664f49fd8417 (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.go | 25 |
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 +} |