summaryrefslogtreecommitdiff
path: root/cmd/btrfs-rec/inspect_lstrees.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_lstrees.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_lstrees.go')
-rw-r--r--cmd/btrfs-rec/inspect_lstrees.go43
1 files changed, 18 insertions, 25 deletions
diff --git a/cmd/btrfs-rec/inspect_lstrees.go b/cmd/btrfs-rec/inspect_lstrees.go
index df2473c..0c82fe0 100644
--- a/cmd/btrfs-rec/inspect_lstrees.go
+++ b/cmd/btrfs-rec/inspect_lstrees.go
@@ -12,7 +12,6 @@ import (
"github.com/datawire/ocibuild/pkg/cliutil"
"github.com/spf13/cobra"
- "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/btrfsitem"
"git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfsprim"
@@ -36,13 +35,9 @@ func init() {
},
RunE: func(fs *btrfs.FS, cmd *cobra.Command, _ []string) error {
ctx := cmd.Context()
- var scanResults rebuildmappings.ScanDevicesResult
- if scandevicesFilename != "" {
- var err error
- scanResults, err = readJSONFile[rebuildmappings.ScanDevicesResult](ctx, scandevicesFilename)
- if err != nil {
- return err
- }
+ nodeList, err := readNodeList(ctx, scandevicesFilename)
+ if err != nil {
+ return err
}
var treeErrCnt int
@@ -98,23 +93,21 @@ func init() {
treeItemCnt = make(map[btrfsitem.Type]int)
textui.Fprintf(os.Stdout, "lost+found\n")
sb, _ := fs.Superblock()
- for _, devResults := range scanResults {
- for laddr := range devResults.FoundNodes {
- if visitedNodes.Has(laddr) {
- continue
- }
- visitedNodes.Insert(laddr)
- node, err := btrfstree.ReadNode[btrfsvol.LogicalAddr](fs, *sb, laddr, btrfstree.NodeExpectations{
- LAddr: containers.Optional[btrfsvol.LogicalAddr]{OK: true, Val: laddr},
- })
- if err != nil {
- treeErrCnt++
- continue
- }
- for _, item := range node.Data.BodyLeaf {
- typ := item.Key.ItemType
- treeItemCnt[typ]++
- }
+ for _, laddr := range nodeList {
+ if visitedNodes.Has(laddr) {
+ continue
+ }
+ visitedNodes.Insert(laddr)
+ node, err := btrfstree.ReadNode[btrfsvol.LogicalAddr](fs, *sb, laddr, btrfstree.NodeExpectations{
+ LAddr: containers.Optional[btrfsvol.LogicalAddr]{OK: true, Val: laddr},
+ })
+ if err != nil {
+ treeErrCnt++
+ continue
+ }
+ for _, item := range node.Data.BodyLeaf {
+ typ := item.Key.ItemType
+ treeItemCnt[typ]++
}
}
flush()