summaryrefslogtreecommitdiff
path: root/lib/btrfs/btrfstree/btree_forrest.go
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2023-03-30 10:05:10 -0600
committerLuke Shumaker <lukeshu@lukeshu.com>2023-03-30 10:05:10 -0600
commite62b128e088346e891b8b2a5e6458cf77abc9d02 (patch)
treef92fd945ea2393431c01a1bd49ac16264673d467 /lib/btrfs/btrfstree/btree_forrest.go
parentcdc2df19c59965149e11c3a5710458c626ea0668 (diff)
parent6f1914f5db33a0d4431069eb9378cac68daf8cc0 (diff)
Merge branch 'lukeshu/tree-api-pt2-path'
Diffstat (limited to 'lib/btrfs/btrfstree/btree_forrest.go')
-rw-r--r--lib/btrfs/btrfstree/btree_forrest.go14
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/btrfs/btrfstree/btree_forrest.go b/lib/btrfs/btrfstree/btree_forrest.go
index b04bfc0..1875c2f 100644
--- a/lib/btrfs/btrfstree/btree_forrest.go
+++ b/lib/btrfs/btrfstree/btree_forrest.go
@@ -22,7 +22,9 @@ type TreeRoot struct {
Level uint8
Generation btrfsprim.Generation
- RootInode btrfsprim.ObjID // only for subvolume trees
+ RootInode btrfsprim.ObjID // only for subvolume trees
+ ParentUUID btrfsprim.UUID
+ ParentGen btrfsprim.Generation // offset of this tree's root item
}
// LookupTreeRoot is a utility function to help with implementing the
@@ -72,7 +74,10 @@ func LookupTreeRoot(_ context.Context, fs TreeOperator, sb Superblock, treeID bt
RootNode: rootItemBody.ByteNr,
Level: rootItemBody.Level,
Generation: rootItemBody.Generation,
+
RootInode: rootItemBody.RootDirID,
+ ParentUUID: rootItemBody.ParentUUID,
+ ParentGen: btrfsprim.Generation(rootItem.Key.Offset),
}, nil
case *btrfsitem.Error:
return nil, fmt.Errorf("malformed ROOT_ITEM for tree %v: %w", treeID, rootItemBody.Err)
@@ -83,10 +88,7 @@ func LookupTreeRoot(_ context.Context, fs TreeOperator, sb Superblock, treeID bt
}
type TreeOperatorImpl struct {
- NodeSource interface {
- NodeSource
- NodeFile
- }
+ NodeSource NodeSource
}
func (fs TreeOperatorImpl) RawTree(ctx context.Context, treeID btrfsprim.ObjID) (*RawTree, error) {
@@ -108,7 +110,7 @@ func (fs TreeOperatorImpl) RawTree(ctx context.Context, treeID btrfsprim.ObjID)
func (fs TreeOperatorImpl) TreeWalk(ctx context.Context, treeID btrfsprim.ObjID, errHandle func(*TreeError), cbs TreeWalkHandler) {
tree, err := fs.RawTree(ctx, treeID)
if err != nil {
- errHandle(&TreeError{Path: Path{{FromTree: treeID, ToMaxKey: btrfsprim.MaxKey}}, Err: err})
+ errHandle(&TreeError{Path: Path{PathRoot{TreeID: treeID}}, Err: err})
return
}
tree.TreeWalk(ctx, cbs)