summaryrefslogtreecommitdiff
path: root/lib/btrfsutil
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2023-03-22 17:25:54 -0400
committerLuke Shumaker <lukeshu@lukeshu.com>2023-03-23 18:36:55 -0600
commit418553acc64567ebc95122e28b07657526c92923 (patch)
tree9cb910940a1e16982f5c5012a4fbeb37ba172f82 /lib/btrfsutil
parentd11a5357df7d155a7a3e92a67971d3d52ff6ad86 (diff)
btrfs: Consider the generation when checking if a node owner is OK
Diffstat (limited to 'lib/btrfsutil')
-rw-r--r--lib/btrfsutil/old_rebuilt_forrest.go9
-rw-r--r--lib/btrfsutil/rebuilt_readitem.go9
2 files changed, 10 insertions, 8 deletions
diff --git a/lib/btrfsutil/old_rebuilt_forrest.go b/lib/btrfsutil/old_rebuilt_forrest.go
index a3fc0e2..5b99892 100644
--- a/lib/btrfsutil/old_rebuilt_forrest.go
+++ b/lib/btrfsutil/old_rebuilt_forrest.go
@@ -240,10 +240,11 @@ func (bt *OldRebuiltForrest) readNode(nodeInfo nodeInfo) *btrfstree.Node {
LAddr: containers.OptionalValue(nodeInfo.LAddr),
Level: containers.OptionalValue(nodeInfo.Level),
Generation: containers.OptionalValue(nodeInfo.Generation),
- Owner: func(treeID btrfsprim.ObjID, _ btrfsprim.Generation) error {
- if treeID != nodeInfo.Owner {
- return fmt.Errorf("expected owner=%v but claims to have owner=%v",
- nodeInfo.Owner, treeID)
+ Owner: func(treeID btrfsprim.ObjID, gen btrfsprim.Generation) error {
+ if treeID != nodeInfo.Owner || gen != nodeInfo.Generation {
+ return fmt.Errorf("expected owner=%v generation=%v but claims to have owner=%v generation=%v",
+ nodeInfo.Owner, nodeInfo.Generation,
+ treeID, gen)
}
return nil
},
diff --git a/lib/btrfsutil/rebuilt_readitem.go b/lib/btrfsutil/rebuilt_readitem.go
index 5de6864..03a7cdc 100644
--- a/lib/btrfsutil/rebuilt_readitem.go
+++ b/lib/btrfsutil/rebuilt_readitem.go
@@ -42,10 +42,11 @@ func (ts *RebuiltForrest) readNode(ctx context.Context, laddr btrfsvol.LogicalAd
LAddr: containers.OptionalValue(laddr),
Level: containers.OptionalValue(graphInfo.Level),
Generation: containers.OptionalValue(graphInfo.Generation),
- Owner: func(treeID btrfsprim.ObjID, _ btrfsprim.Generation) error {
- if treeID != graphInfo.Owner {
- return fmt.Errorf("expected owner=%v but claims to have owner=%v",
- graphInfo.Owner, treeID)
+ Owner: func(treeID btrfsprim.ObjID, gen btrfsprim.Generation) error {
+ if treeID != graphInfo.Owner || gen != graphInfo.Generation {
+ return fmt.Errorf("expected owner=%v generation=%v but claims to have owner=%v generation=%v",
+ graphInfo.Owner, graphInfo.Generation,
+ treeID, gen)
}
return nil
},