summaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2022-06-06 23:56:11 -0600
committerLuke Shumaker <lukeshu@lukeshu.com>2022-06-06 23:56:11 -0600
commit69f0420fdb3701fd6ed6a682835e3ba282b7bdbb (patch)
tree2a48cfd35792fb3dca803f2982a9cb0f7a03c03c /pkg
parent07b7c8a2a12a09c49659efbe522ad1c3f7161aed (diff)
fixup
Diffstat (limited to 'pkg')
-rw-r--r--pkg/btrfs/crc32c.go2
-rw-r--r--pkg/btrfs/types_btree.go48
2 files changed, 26 insertions, 24 deletions
diff --git a/pkg/btrfs/crc32c.go b/pkg/btrfs/crc32c.go
index 8266706..ab2d6e9 100644
--- a/pkg/btrfs/crc32c.go
+++ b/pkg/btrfs/crc32c.go
@@ -9,7 +9,7 @@ import (
type CSum [0x20]byte
func (csum CSum) String() string {
- return fmt.Sprintf("%x", csum)
+ return fmt.Sprintf("%x", [0x20]byte(csum))
}
func CRC32c(data []byte) CSum {
diff --git a/pkg/btrfs/types_btree.go b/pkg/btrfs/types_btree.go
index f72be96..734c859 100644
--- a/pkg/btrfs/types_btree.go
+++ b/pkg/btrfs/types_btree.go
@@ -204,7 +204,7 @@ func (node *Node) marshalInternalTo(bodyBuf []byte) error {
}
if copy(bodyBuf[n:], bs) < len(bs) {
return fmt.Errorf("item %d: not enough space: need at least %d+%d=%d bytes, but only have %d",
- n, len(bs), n+len(bs), len(bodyBuf))
+ i, n, len(bs), n+len(bs), len(bodyBuf))
}
n += len(bs)
}
@@ -346,7 +346,7 @@ func ReadNode[Addr ~int64](fs util.File[Addr], sb Superblock, addr Addr, laddrCB
if laddrCB != nil {
if err := laddrCB(nodeRef.Data.Head.Addr); err != nil {
- return nodeRef, fmt.Errorf("btrfs.ReadNode: node@%d: %w", err)
+ return nodeRef, fmt.Errorf("btrfs.ReadNode: node@%d: %w", addr, err)
}
}
@@ -410,34 +410,36 @@ func (fs *FS) WalkTree(nodeAddr LogicalAddr, cbs WalkTreeHandler) error {
}
return fmt.Errorf("btrfs.FS.WalkTree: %w", err)
}
- for _, item := range node.Data.BodyInternal {
- if cbs.PreKeyPointer != nil {
- if err := cbs.PreKeyPointer(item); err != nil {
- if errors.Is(err, iofs.SkipDir) {
- continue
+ if node != nil {
+ for _, item := range node.Data.BodyInternal {
+ if cbs.PreKeyPointer != nil {
+ if err := cbs.PreKeyPointer(item); err != nil {
+ if errors.Is(err, iofs.SkipDir) {
+ continue
+ }
+ return err
}
+ }
+ if err := fs.WalkTree(item.BlockPtr, cbs); err != nil {
return err
}
- }
- if err := fs.WalkTree(item.BlockPtr, cbs); err != nil {
- return err
- }
- if cbs.PostKeyPointer != nil {
- if err := cbs.PostKeyPointer(item); err != nil {
- if errors.Is(err, iofs.SkipDir) {
- continue
+ if cbs.PostKeyPointer != nil {
+ if err := cbs.PostKeyPointer(item); err != nil {
+ if errors.Is(err, iofs.SkipDir) {
+ continue
+ }
+ return err
}
- return err
}
}
- }
- for _, item := range node.Data.BodyLeaf {
- if cbs.Item != nil {
- if err := cbs.Item(item.Head.Key, item.Body); err != nil {
- if errors.Is(err, iofs.SkipDir) {
- continue
+ for _, item := range node.Data.BodyLeaf {
+ if cbs.Item != nil {
+ if err := cbs.Item(item.Head.Key, item.Body); err != nil {
+ if errors.Is(err, iofs.SkipDir) {
+ continue
+ }
+ return fmt.Errorf("btrfs.FS.WalkTree: callback: %w", err)
}
- return fmt.Errorf("btrfs.FS.WalkTree: callback: %w", err)
}
}
}