diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2022-08-30 01:39:24 -0600 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2022-08-30 21:29:44 -0600 |
commit | a371ae78e5280f0a2075692dbb2cfeed4c39bddb (patch) | |
tree | d4edff9cb0c3089d5ed22d98517fac20b9a71c63 | |
parent | 9a3006e0de95aba2c5c5509fac7d7a2a24943d4a (diff) |
misc fix
-rw-r--r-- | go.mod | 2 | ||||
-rw-r--r-- | go.sum | 4 | ||||
-rw-r--r-- | lib/btrfs/btrfstree/readnode.go | 2 | ||||
-rw-r--r-- | lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuilttrees.go | 2 | ||||
-rw-r--r-- | lib/btrfsprogs/btrfsinspect/rebuildnodes/s2_classify.go | 1 | ||||
-rw-r--r-- | lib/btrfsprogs/btrfsinspect/rebuildnodes/s3_reinit.go | 2 | ||||
-rw-r--r-- | lib/btrfsprogs/btrfsinspect/rebuildnodes/s3_reinit_test.go | 80 |
7 files changed, 87 insertions, 6 deletions
@@ -7,7 +7,7 @@ module git.lukeshu.com/btrfs-progs-ng go 1.19 require ( - git.lukeshu.com/go/lowmemjson v0.0.0-20220822033959-325838f35ce9 + git.lukeshu.com/go/lowmemjson v0.0.0-20220830073646-8cf459090af5 github.com/datawire/dlib v1.3.0 github.com/datawire/ocibuild v0.0.3-0.20220423003204-fc6a4e9f90dc github.com/davecgh/go-spew v1.1.1 @@ -1,5 +1,5 @@ -git.lukeshu.com/go/lowmemjson v0.0.0-20220822033959-325838f35ce9 h1:YSrCKYaOFOtbBP2+rS6X0smKx07VvHTr9N7NgN+u05E= -git.lukeshu.com/go/lowmemjson v0.0.0-20220822033959-325838f35ce9/go.mod h1:7StdaFpmZNKYJmQ67fGbzcIcnrGjmD54f/2WbeHLaBw= +git.lukeshu.com/go/lowmemjson v0.0.0-20220830073646-8cf459090af5 h1:+aUVtC977Hbwhz4wrxNm5KBd8XLpoNfBvEtm2ZrX91s= +git.lukeshu.com/go/lowmemjson v0.0.0-20220830073646-8cf459090af5/go.mod h1:7StdaFpmZNKYJmQ67fGbzcIcnrGjmD54f/2WbeHLaBw= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/datawire/dlib v1.3.0 h1:KkmyXU1kwm3oPBk1ypR70YbcOlEXWzEbx5RE0iRXTGk= github.com/datawire/dlib v1.3.0/go.mod h1:NiGDmetmbkBvtznpWSx6C0vA0s0LK9aHna3LJDqjruk= diff --git a/lib/btrfs/btrfstree/readnode.go b/lib/btrfs/btrfstree/readnode.go index b1c34e4..e363241 100644 --- a/lib/btrfs/btrfstree/readnode.go +++ b/lib/btrfs/btrfstree/readnode.go @@ -51,7 +51,7 @@ func FSReadNode( var ok bool exp, ok = fs.ParentTree(exp) if !ok { - // Failed lookup up parent info; fail open. + // Failed look up parent info; fail open. return nil } if exp == 0 { diff --git a/lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuilttrees.go b/lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuilttrees.go index 0a321ea..9daf97f 100644 --- a/lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuilttrees.go +++ b/lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuilttrees.go @@ -23,7 +23,7 @@ type RebuiltTrees struct { type _FS interface { diskio.File[btrfsvol.LogicalAddr] - ParentTree(btrfsprim.ObjID) (btrfsprim.ObjID, bool) + btrfstree.NodeFile btrfstree.NodeSource btrfstree.TreeOperator } diff --git a/lib/btrfsprogs/btrfsinspect/rebuildnodes/s2_classify.go b/lib/btrfsprogs/btrfsinspect/rebuildnodes/s2_classify.go index 36e5395..57c26e7 100644 --- a/lib/btrfsprogs/btrfsinspect/rebuildnodes/s2_classify.go +++ b/lib/btrfsprogs/btrfsinspect/rebuildnodes/s2_classify.go @@ -74,6 +74,7 @@ func classifyNodes(ctx context.Context, fs _FS, scanResults btrfsinspect.ScanDev }, } + progress() btrfsutil.WalkAllTrees(ctx, fs, btrfsutil.WalkAllTreesHandler{ TreeWalkHandler: walkHandler, Err: func(err *btrfsutil.WalkError) { diff --git a/lib/btrfsprogs/btrfsinspect/rebuildnodes/s3_reinit.go b/lib/btrfsprogs/btrfsinspect/rebuildnodes/s3_reinit.go index a7b2f29..fc46d27 100644 --- a/lib/btrfsprogs/btrfsinspect/rebuildnodes/s3_reinit.go +++ b/lib/btrfsprogs/btrfsinspect/rebuildnodes/s3_reinit.go @@ -105,7 +105,7 @@ func reInitBrokenNodes(ctx context.Context, fs _FS, badNodes []badNode) (map[btr min, max := spanOfTreePath(fs, path) node := RebuiltNode{ - Errs: containers.Set[string]{err.Error(): struct{}{}}, + Errs: containers.Set[string]{badNode.Err: struct{}{}}, MinKey: min, MaxKey: max, InTrees: containers.Set[btrfsprim.ObjID]{path.Node(-1).FromTree: struct{}{}}, diff --git a/lib/btrfsprogs/btrfsinspect/rebuildnodes/s3_reinit_test.go b/lib/btrfsprogs/btrfsinspect/rebuildnodes/s3_reinit_test.go new file mode 100644 index 0000000..b361606 --- /dev/null +++ b/lib/btrfsprogs/btrfsinspect/rebuildnodes/s3_reinit_test.go @@ -0,0 +1,80 @@ +// Copyright (C) 2022 Luke Shumaker <lukeshu@lukeshu.com> +// +// SPDX-License-Identifier: GPL-2.0-or-later + +package rebuildnodes_test + +import ( + "strings" + "testing" + + "git.lukeshu.com/go/lowmemjson" + "github.com/stretchr/testify/assert" + + "git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfsprim" + "git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfstree" + "git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfsvol" + "git.lukeshu.com/btrfs-progs-ng/lib/btrfsprogs/btrfsinspect/rebuildnodes" + "git.lukeshu.com/btrfs-progs-ng/lib/containers" +) + +func TestEncodeRebuiltNodes(t *testing.T) { + dat := map[btrfsvol.LogicalAddr]*rebuildnodes.RebuiltNode{ + 100007133184: { + Errs: containers.Set[string]{ + "btrfs.ReadNode: node@0x0000001748e3c000: expected generation\u003c=6596014 but claims to be generation=6596025": struct{}{}, + }, + MinKey: btrfsprim.Key{}, + MaxKey: btrfsprim.Key{}, + InTrees: containers.Set[btrfsprim.ObjID]{ + 257: struct{}{}, + }, + Node: btrfstree.Node{}, + }, + } + var buf strings.Builder + assert.NoError(t, lowmemjson.Encode(&lowmemjson.ReEncoder{ + Out: &buf, + + Indent: "\t", + ForceTrailingNewlines: true, + }, dat)) + assert.Equal(t, `{ + "100007133184": { + "Errs": [ + "btrfs.ReadNode: node@0x0000001748e3c000: expected generation\u003c=6596014 but claims to be generation=6596025" + ], + "MinKey": { + "ObjectID": 0, + "ItemType": 0, + "Offset": 0 + }, + "MaxKey": { + "ObjectID": 0, + "ItemType": 0, + "Offset": 0 + }, + "InTrees": [ + 257 + ], + "Size": 0, + "ChecksumType": 0, + "Head": { + "Checksum": "0000000000000000000000000000000000000000000000000000000000000000", + "MetadataUUID": "00000000-0000-0000-0000-000000000000", + "Addr": 0, + "Flags": 0, + "BackrefRev": 0, + "ChunkTreeUUID": "00000000-0000-0000-0000-000000000000", + "Generation": 0, + "Owner": 0, + "NumItems": 0, + "Level": 0 + }, + "BodyInternal": null, + "BodyLeaf": null, + "Padding": null + } +} +`, buf.String()) +} |