diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2022-12-23 16:48:42 -0700 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2022-12-23 19:57:21 -0700 |
commit | 6330b26a9f9c7769c48e2bc90e065457f8e138ab (patch) | |
tree | 24dc5be9c5cfbe662db8b0684a7f72a8ef021d25 /lib/btrfsprogs/btrfsinspect/rebuildnodes/keyio | |
parent | 8fc3c78924da1dedd3adce3b923adf58e5ca732a (diff) |
rebuildnodes: Have the key index belong to the btree, and be smarter
Diffstat (limited to 'lib/btrfsprogs/btrfsinspect/rebuildnodes/keyio')
-rw-r--r-- | lib/btrfsprogs/btrfsinspect/rebuildnodes/keyio/keyio.go | 21 |
1 files changed, 2 insertions, 19 deletions
diff --git a/lib/btrfsprogs/btrfsinspect/rebuildnodes/keyio/keyio.go b/lib/btrfsprogs/btrfsinspect/rebuildnodes/keyio/keyio.go index 875b616..5ae9ce2 100644 --- a/lib/btrfsprogs/btrfsinspect/rebuildnodes/keyio/keyio.go +++ b/lib/btrfsprogs/btrfsinspect/rebuildnodes/keyio/keyio.go @@ -38,16 +38,14 @@ func (ptr ItemPtr) String() string { } type Handle struct { - Keys containers.SortedMap[KeyAndTree, ItemPtr] - rawFile diskio.File[btrfsvol.LogicalAddr] sb btrfstree.Superblock - graph *graph.Graph + graph graph.Graph cache *containers.LRUCache[btrfsvol.LogicalAddr, *diskio.Ref[btrfsvol.LogicalAddr, btrfstree.Node]] } -func NewHandle(file diskio.File[btrfsvol.LogicalAddr], sb btrfstree.Superblock, graph *graph.Graph) *Handle { +func NewHandle(file diskio.File[btrfsvol.LogicalAddr], sb btrfstree.Superblock, graph graph.Graph) *Handle { return &Handle{ rawFile: file, sb: sb, @@ -57,21 +55,6 @@ func NewHandle(file diskio.File[btrfsvol.LogicalAddr], sb btrfstree.Superblock, } } -func (o *Handle) InsertNode(nodeRef *diskio.Ref[btrfsvol.LogicalAddr, btrfstree.Node]) { - for i, item := range nodeRef.Data.BodyLeaf { - k := KeyAndTree{ - Key: item.Key, - TreeID: nodeRef.Data.Head.Owner, - } - if cur, ok := o.Keys.Load(k); !ok || o.graph.Nodes[cur.Node].Generation < nodeRef.Data.Head.Generation { - o.Keys.Store(k, ItemPtr{ - Node: nodeRef.Addr, - Idx: i, - }) - } - } -} - func (o *Handle) ReadNode(laddr btrfsvol.LogicalAddr) *diskio.Ref[btrfsvol.LogicalAddr, btrfstree.Node] { if cached, ok := o.cache.Get(laddr); ok { return cached |