From fdbe325563be8e223ed8b9f2a89426cf39f4903e Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 16 Apr 2023 23:35:04 -0600 Subject: btrfs: Subvolume: loadFile: Fix errors around extent gaps --- lib/btrfs/io4_fs.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/btrfs') diff --git a/lib/btrfs/io4_fs.go b/lib/btrfs/io4_fs.go index 9b70713..1b7837e 100644 --- a/lib/btrfs/io4_fs.go +++ b/lib/btrfs/io4_fs.go @@ -423,7 +423,7 @@ func (sv *Subvolume) loadFile(_ context.Context, inode btrfsprim.ObjID, file *Fi if err != nil { file.Errs = append(file.Errs, fmt.Errorf("extent %v: %w", extent.OffsetWithinFile, err)) } - pos += size + pos = extent.OffsetWithinFile + size } if file.InodeItem != nil && pos != file.InodeItem.NumBytes { if file.InodeItem.NumBytes > pos { -- cgit v1.2.3-2-g168b From 5e7fe4c3d25fdecb3b5d4ad5f752fb0a6bddac85 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 17 Apr 2023 15:43:53 -0600 Subject: btrfs: FS: AcquireNode: Shorten errors --- lib/btrfs/io3_btree.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'lib/btrfs') diff --git a/lib/btrfs/io3_btree.go b/lib/btrfs/io3_btree.go index c9e1d79..7518561 100644 --- a/lib/btrfs/io3_btree.go +++ b/lib/btrfs/io3_btree.go @@ -6,7 +6,6 @@ package btrfs import ( "context" - "fmt" "git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfsprim" "git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfstree" @@ -44,7 +43,7 @@ func (fs *FS) AcquireNode(ctx context.Context, addr btrfsvol.LogicalAddr, exp bt if nodeEntry.node != nil { if err := exp.Check(nodeEntry.node); err != nil { fs.cacheNodes.Release(addr) - return nil, fmt.Errorf("btrfs.FS.AcquireNode: node@%v: %w", addr, err) + return nil, err } } -- cgit v1.2.3-2-g168b From 1a979d52855911980acc0b6f366d808c5734c054 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 17 Apr 2023 15:53:42 -0600 Subject: btrfstree: Wrap the error for UUID lookup failures --- lib/btrfs/btrfstree/btree_tree.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib/btrfs') diff --git a/lib/btrfs/btrfstree/btree_tree.go b/lib/btrfs/btrfstree/btree_tree.go index b9b9201..b071b7d 100644 --- a/lib/btrfs/btrfstree/btree_tree.go +++ b/lib/btrfs/btrfstree/btree_tree.go @@ -328,7 +328,8 @@ func (tree *RawTree) TreeParentID(ctx context.Context) (btrfsprim.ObjID, btrfspr } parentIDItem, err := uuidTree.TreeLookup(ctx, btrfsitem.UUIDToKey(tree.ParentUUID)) if err != nil { - return 0, 0, err + return 0, 0, fmt.Errorf("tree %s: failed to look up UUID: %v: %w", + tree.ID.Format(btrfsprim.ROOT_TREE_OBJECTID), tree.ParentUUID, err) } switch parentIDBody := parentIDItem.Body.(type) { case *btrfsitem.UUIDMap: -- cgit v1.2.3-2-g168b From a74c2cd52a12614565349577b8a5a6fbdcf337c3 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sat, 4 Mar 2023 09:42:44 -0700 Subject: btrfsutil: RebuiltTree: Properly track errors for the btrfstree.Tree API --- lib/btrfs/btrfstree/path.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lib/btrfs') diff --git a/lib/btrfs/btrfstree/path.go b/lib/btrfs/btrfstree/path.go index 327a39b..3fd43c8 100644 --- a/lib/btrfs/btrfstree/path.go +++ b/lib/btrfs/btrfstree/path.go @@ -134,7 +134,7 @@ func (path Path) String() string { return ret.String() } -func checkOwner( +func CheckOwner( ctx context.Context, forrest Forrest, treeID btrfsprim.ObjID, ownerToCheck btrfsprim.ObjID, genToCheck btrfsprim.Generation, ) error { @@ -194,7 +194,7 @@ func (path Path) NodeExpectations(ctx context.Context) (_ btrfsvol.LogicalAddr, Level: containers.OptionalValue(lastElem.ToLevel), Generation: containers.OptionalValue(lastElem.ToGeneration), Owner: func(owner btrfsprim.ObjID, gen btrfsprim.Generation) error { - return checkOwner(ctx, firstElem.Forrest, lastElem.TreeID, + return CheckOwner(ctx, firstElem.Forrest, lastElem.TreeID, owner, gen) }, MinItem: containers.OptionalValue(btrfsprim.Key{}), @@ -206,7 +206,7 @@ func (path Path) NodeExpectations(ctx context.Context) (_ btrfsvol.LogicalAddr, Level: containers.OptionalValue(lastElem.ToLevel), Generation: containers.OptionalValue(lastElem.ToGeneration), Owner: func(owner btrfsprim.ObjID, gen btrfsprim.Generation) error { - return checkOwner(ctx, firstElem.Forrest, lastElem.FromTree, + return CheckOwner(ctx, firstElem.Forrest, lastElem.FromTree, owner, gen) }, MinItem: containers.OptionalValue(lastElem.ToMinKey), -- cgit v1.2.3-2-g168b