summaryrefslogtreecommitdiff
path: root/cmd/btrfs-fsck
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2022-07-02 16:25:03 -0600
committerLuke Shumaker <lukeshu@lukeshu.com>2022-07-02 16:43:01 -0600
commit9ddcd2c3ed2f85247161c5ffa653f33e6a01a9cd (patch)
tree5d673cf90f37ae7e75b1b4bbe41bc700cfe98c1f /cmd/btrfs-fsck
parenteab4dbebf66fa92597a2804c39eb4a4670f5e2ca (diff)
move things around
Diffstat (limited to 'cmd/btrfs-fsck')
-rw-r--r--cmd/btrfs-fsck/pass0.go3
-rw-r--r--cmd/btrfs-fsck/pass1.go18
-rw-r--r--cmd/btrfs-fsck/pass2.go13
3 files changed, 18 insertions, 16 deletions
diff --git a/cmd/btrfs-fsck/pass0.go b/cmd/btrfs-fsck/pass0.go
index c0c872b..28e0501 100644
--- a/cmd/btrfs-fsck/pass0.go
+++ b/cmd/btrfs-fsck/pass0.go
@@ -5,10 +5,11 @@ import (
"os"
"lukeshu.com/btrfs-tools/pkg/btrfs"
+ "lukeshu.com/btrfs-tools/pkg/btrfs/btrfsvol"
"lukeshu.com/btrfs-tools/pkg/util"
)
-func pass0(filenames ...string) (*btrfs.FS, *util.Ref[btrfs.PhysicalAddr, btrfs.Superblock], error) {
+func pass0(filenames ...string) (*btrfs.FS, *util.Ref[btrfsvol.PhysicalAddr, btrfs.Superblock], error) {
fmt.Printf("\nPass 0: init and superblocks...\n")
fs := new(btrfs.FS)
diff --git a/cmd/btrfs-fsck/pass1.go b/cmd/btrfs-fsck/pass1.go
index e75e4fe..f8626af 100644
--- a/cmd/btrfs-fsck/pass1.go
+++ b/cmd/btrfs-fsck/pass1.go
@@ -17,14 +17,14 @@ import (
"lukeshu.com/btrfs-tools/pkg/util"
)
-func pass1(fs *btrfs.FS, superblock *util.Ref[btrfs.PhysicalAddr, btrfs.Superblock]) (map[btrfs.LogicalAddr]struct{}, error) {
+func pass1(fs *btrfs.FS, superblock *util.Ref[btrfsvol.PhysicalAddr, btrfs.Superblock]) (map[btrfsvol.LogicalAddr]struct{}, error) {
fmt.Printf("\nPass 1: chunk mappings...\n")
fmt.Printf("Pass 1: ... walking fs\n")
- visitedNodes := make(map[btrfs.LogicalAddr]struct{})
+ visitedNodes := make(map[btrfsvol.LogicalAddr]struct{})
btrfsmisc.WalkFS(fs, btrfsmisc.WalkFSHandler{
TreeWalkHandler: btrfs.TreeWalkHandler{
- Node: func(path btrfs.TreePath, node *util.Ref[btrfs.LogicalAddr, btrfs.Node], err error) error {
+ Node: func(path btrfs.TreePath, node *util.Ref[btrfsvol.LogicalAddr, btrfs.Node], err error) error {
if err != nil {
err = fmt.Errorf("%v: %w", path, err)
fmt.Printf("Pass 1: ... walk fs: error: %v\n", err)
@@ -40,7 +40,7 @@ func pass1(fs *btrfs.FS, superblock *util.Ref[btrfs.PhysicalAddr, btrfs.Superblo
},
})
- fsFoundNodes := make(map[btrfs.LogicalAddr]struct{})
+ fsFoundNodes := make(map[btrfsvol.LogicalAddr]struct{})
for _, dev := range fs.LV.PhysicalVolumes() {
fmt.Printf("Pass 1: ... dev[%q] scanning for nodes...\n", dev.Name())
devResult, err := pass1ScanOneDev(dev, superblock.Data)
@@ -69,7 +69,7 @@ func pass1(fs *btrfs.FS, superblock *util.Ref[btrfs.PhysicalAddr, btrfs.Superblo
}
type pass1ScanOneDevResult struct {
- FoundNodes map[btrfs.LogicalAddr][]btrfs.PhysicalAddr
+ FoundNodes map[btrfsvol.LogicalAddr][]btrfsvol.PhysicalAddr
FoundChunks []btrfs.SysChunk
FoundBlockGroups []sysBlockGroup
FoundDevExtents []sysDevExtent
@@ -236,13 +236,13 @@ func pass1ScanOneDev_printProgress(dev *btrfs.Device, pct int, result pass1ScanO
func pass1ScanOneDev_real(dev *btrfs.Device, superblock btrfs.Superblock) (pass1ScanOneDevResult, error) {
result := pass1ScanOneDevResult{
- FoundNodes: make(map[btrfs.LogicalAddr][]btrfs.PhysicalAddr),
+ FoundNodes: make(map[btrfsvol.LogicalAddr][]btrfsvol.PhysicalAddr),
}
devSize, _ := dev.Size()
lastProgress := -1
- err := btrfsmisc.ScanForNodes(dev, superblock, func(nodeRef *util.Ref[btrfs.PhysicalAddr, btrfs.Node], err error) {
+ err := btrfsmisc.ScanForNodes(dev, superblock, func(nodeRef *util.Ref[btrfsvol.PhysicalAddr, btrfs.Node], err error) {
if err != nil {
fmt.Printf("Pass 1: ... dev[%q] error: %v\n", dev.Name(), err)
return
@@ -291,7 +291,7 @@ func pass1ScanOneDev_real(dev *btrfs.Device, superblock btrfs.Superblock) (pass1
})
}
}
- }, func(pos btrfs.PhysicalAddr) {
+ }, func(pos btrfsvol.PhysicalAddr) {
pct := int(100 * float64(pos) / float64(devSize))
if pct != lastProgress || pos == devSize {
pass1ScanOneDev_printProgress(dev, pct, result)
@@ -372,7 +372,7 @@ func pass1WriteReconstructedChunks(fs *btrfs.FS) {
// store that node at the root node of the chunk tree. This
// isn't true in general, but it's true of my particular
// filesystem.
- reconstructedNode := &util.Ref[btrfs.LogicalAddr, btrfs.Node]{
+ reconstructedNode := &util.Ref[btrfsvol.LogicalAddr, btrfs.Node]{
File: fs,
Addr: superblock.ChunkTree,
Data: btrfs.Node{
diff --git a/cmd/btrfs-fsck/pass2.go b/cmd/btrfs-fsck/pass2.go
index 989b79f..95a307c 100644
--- a/cmd/btrfs-fsck/pass2.go
+++ b/cmd/btrfs-fsck/pass2.go
@@ -5,17 +5,18 @@ import (
iofs "io/fs"
"lukeshu.com/btrfs-tools/pkg/btrfs"
+ "lukeshu.com/btrfs-tools/pkg/btrfs/btrfsvol"
"lukeshu.com/btrfs-tools/pkg/btrfsmisc"
"lukeshu.com/btrfs-tools/pkg/util"
)
-func pass2(fs *btrfs.FS, foundNodes map[btrfs.LogicalAddr]struct{}) {
+func pass2(fs *btrfs.FS, foundNodes map[btrfsvol.LogicalAddr]struct{}) {
fmt.Printf("\nPass 2: orphaned nodes\n")
- visitedNodes := make(map[btrfs.LogicalAddr]struct{})
+ visitedNodes := make(map[btrfsvol.LogicalAddr]struct{})
btrfsmisc.WalkFS(fs, btrfsmisc.WalkFSHandler{
TreeWalkHandler: btrfs.TreeWalkHandler{
- Node: func(path btrfs.TreePath, node *util.Ref[btrfs.LogicalAddr, btrfs.Node], err error) error {
+ Node: func(path btrfs.TreePath, node *util.Ref[btrfsvol.LogicalAddr, btrfs.Node], err error) error {
visitedNodes[node.Addr] = struct{}{}
return nil
},
@@ -25,20 +26,20 @@ func pass2(fs *btrfs.FS, foundNodes map[btrfs.LogicalAddr]struct{}) {
},
})
- orphanedNodes := make(map[btrfs.LogicalAddr]int)
+ orphanedNodes := make(map[btrfsvol.LogicalAddr]int)
for foundNode := range foundNodes {
if _, visited := visitedNodes[foundNode]; !visited {
orphanedNodes[foundNode] = 0
}
}
- orphanedRoots := make(map[btrfs.LogicalAddr]struct{}, len(orphanedNodes))
+ orphanedRoots := make(map[btrfsvol.LogicalAddr]struct{}, len(orphanedNodes))
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[btrfs.LogicalAddr, btrfs.Node], _ error) error {
+ 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)