summaryrefslogtreecommitdiff
path: root/lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuild_graph.go
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2022-12-27 01:14:34 -0700
committerLuke Shumaker <lukeshu@lukeshu.com>2023-01-05 19:48:17 -0700
commit5590315b11557aa48999d09700631ad9239ce03b (patch)
tree0a2246a0ff601a397219c478f943d05245b71ad6 /lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuild_graph.go
parentf416f777b2c2cac095e851e6799020f91e34aed1 (diff)
rebuildnodes: Optimize: Try to avoid disk access for DIR_INDEX
Diffstat (limited to 'lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuild_graph.go')
-rw-r--r--lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuild_graph.go10
1 files changed, 3 insertions, 7 deletions
diff --git a/lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuild_graph.go b/lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuild_graph.go
index bf4c95d..271595e 100644
--- a/lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuild_graph.go
+++ b/lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuild_graph.go
@@ -7,7 +7,6 @@ package rebuildnodes
import (
"context"
"fmt"
- "reflect"
"git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfsitem"
"git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfsprim"
@@ -20,7 +19,7 @@ type rebuildCallbacks interface {
fsErr(ctx context.Context, e error)
want(ctx context.Context, reason string, treeID btrfsprim.ObjID, objID btrfsprim.ObjID, typ btrfsprim.ItemType)
wantOff(ctx context.Context, reason string, treeID btrfsprim.ObjID, objID btrfsprim.ObjID, typ btrfsprim.ItemType, off uint64)
- wantFunc(ctx context.Context, reason string, treeID btrfsprim.ObjID, objID btrfsprim.ObjID, typ btrfsprim.ItemType, fn func(btrfsitem.Item) bool)
+ wantDirIndex(ctx context.Context, reason string, treeID btrfsprim.ObjID, objID btrfsprim.ObjID, name []byte)
wantCSum(ctx context.Context, reason string, beg, end btrfsvol.LogicalAddr) // interval is [beg, end)
wantFileExt(ctx context.Context, reason string, treeID btrfsprim.ObjID, ino btrfsprim.ObjID, size int64)
}
@@ -65,13 +64,10 @@ func handleItem(o rebuildCallbacks, ctx context.Context, treeID btrfsprim.ObjID,
// siblings
switch item.Key.ItemType {
case btrfsitem.DIR_ITEM_KEY:
- o.wantFunc(ctx, "corresponding DIR_INDEX",
+ o.wantDirIndex(ctx, "corresponding DIR_INDEX",
treeID,
item.Key.ObjectID,
- btrfsitem.DIR_INDEX_KEY,
- func(peerItem btrfsitem.Item) bool {
- return reflect.DeepEqual(item, peerItem)
- })
+ body.Name)
case btrfsitem.DIR_INDEX_KEY:
o.wantOff(ctx, "corresponding DIR_ITEM",
treeID,