From 8e27c43c1b882c8f2f759eec556f90229c067cc9 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 8 Jul 2022 00:05:52 -0600 Subject: get initial expected levels from the superblock --- cmd/btrfs-fsck/pass2.go | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) (limited to 'cmd/btrfs-fsck/pass2.go') diff --git a/cmd/btrfs-fsck/pass2.go b/cmd/btrfs-fsck/pass2.go index 95a307c..a8c0c9b 100644 --- a/cmd/btrfs-fsck/pass2.go +++ b/cmd/btrfs-fsck/pass2.go @@ -2,7 +2,6 @@ package main import ( "fmt" - iofs "io/fs" "lukeshu.com/btrfs-tools/pkg/btrfs" "lukeshu.com/btrfs-tools/pkg/btrfs/btrfsvol" @@ -14,7 +13,7 @@ func pass2(fs *btrfs.FS, foundNodes map[btrfsvol.LogicalAddr]struct{}) { fmt.Printf("\nPass 2: orphaned nodes\n") visitedNodes := make(map[btrfsvol.LogicalAddr]struct{}) - btrfsmisc.WalkFS(fs, btrfsmisc.WalkFSHandler{ + btrfsmisc.WalkAllTrees(fs, btrfsmisc.WalkAllTreesHandler{ TreeWalkHandler: btrfs.TreeWalkHandler{ Node: func(path btrfs.TreePath, node *util.Ref[btrfsvol.LogicalAddr, btrfs.Node], err error) error { visitedNodes[node.Addr] = struct{}{} @@ -37,26 +36,28 @@ func pass2(fs *btrfs.FS, foundNodes map[btrfsvol.LogicalAddr]struct{}) { for node := range orphanedNodes { orphanedRoots[node] = struct{}{} } - for potentialRoot := range orphanedRoots { - if err := fs.TreeWalk(potentialRoot, btrfs.TreeWalkHandler{ - Node: func(path btrfs.TreePath, _ *util.Ref[btrfsvol.LogicalAddr, btrfs.Node], _ error) error { - nodeAddr := path[len(path)-1].NodeAddr - if nodeAddr != potentialRoot { - delete(orphanedRoots, nodeAddr) - } - orphanedNodes[nodeAddr] = orphanedNodes[nodeAddr] + 1 - visitCnt := orphanedNodes[nodeAddr] - if visitCnt > 1 { - return iofs.SkipDir - } - return nil - }, - }); err != nil { - fmt.Printf("Pass 2: walk orphans: error: %v\n", err) + /* + for potentialRoot := range orphanedRoots { + if err := fs.TreeWalk(potentialRoot, btrfs.TreeWalkHandler{ + Node: func(path btrfs.TreePath, _ *util.Ref[btrfsvol.LogicalAddr, btrfs.Node], _ error) error { + nodeAddr := path[len(path)-1].NodeAddr + if nodeAddr != potentialRoot { + delete(orphanedRoots, nodeAddr) + } + orphanedNodes[nodeAddr] = orphanedNodes[nodeAddr] + 1 + visitCnt := orphanedNodes[nodeAddr] + if visitCnt > 1 { + return iofs.SkipDir + } + return nil + }, + }); err != nil { + fmt.Printf("Pass 2: walk orphans: error: %v\n", err) + } } - } - for _, node := range util.SortedMapKeys(orphanedRoots) { - fmt.Printf("Pass 2: orphaned root: %v\n", node) - } + for _, node := range util.SortedMapKeys(orphanedRoots) { + fmt.Printf("Pass 2: orphaned root: %v\n", node) + } + */ } -- cgit v1.2.3-2-g168b