summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd/btrfs-fsck/main.go4
-rw-r--r--pkg/btrfs/crc32c.go5
-rw-r--r--pkg/btrfsmisc/fsck.go5
3 files changed, 9 insertions, 5 deletions
diff --git a/cmd/btrfs-fsck/main.go b/cmd/btrfs-fsck/main.go
index 79237a6..be9f313 100644
--- a/cmd/btrfs-fsck/main.go
+++ b/cmd/btrfs-fsck/main.go
@@ -211,7 +211,7 @@ func Main(imgfilename string) (err error) {
stripeSize := stripes[0].Size
for _, stripe := range stripes {
if stripe.Size != stripeSize {
- panic("mismatch")
+ panic("TODO: mismatch")
}
}
itemSize := uint32(binstruct.StaticSize(btrfsitem.ChunkHeader{}) + (len(stripes) * binstruct.StaticSize(btrfsitem.ChunkStripe{})))
@@ -240,7 +240,7 @@ func Main(imgfilename string) (err error) {
Size: stripeSize,
Owner: btrfs.EXTENT_TREE_OBJECTID,
StripeLen: 65536, // ???
- Type: TODO,
+ Type: 0, // TODO
IOOptimalAlign: superblock.Data.DevItem.IOOptimalAlign,
IOOptimalWidth: superblock.Data.DevItem.IOOptimalWidth,
IOMinSize: superblock.Data.DevItem.IOMinSize,
diff --git a/pkg/btrfs/crc32c.go b/pkg/btrfs/crc32c.go
index 4ea4169..8266706 100644
--- a/pkg/btrfs/crc32c.go
+++ b/pkg/btrfs/crc32c.go
@@ -2,11 +2,16 @@ package btrfs
import (
"encoding/binary"
+ "fmt"
"hash/crc32"
)
type CSum [0x20]byte
+func (csum CSum) String() string {
+ return fmt.Sprintf("%x", csum)
+}
+
func CRC32c(data []byte) CSum {
crc := crc32.Update(0, crc32.MakeTable(crc32.Castagnoli), data)
diff --git a/pkg/btrfsmisc/fsck.go b/pkg/btrfsmisc/fsck.go
index a771cf4..e44dcb6 100644
--- a/pkg/btrfsmisc/fsck.go
+++ b/pkg/btrfsmisc/fsck.go
@@ -45,14 +45,13 @@ func ScanForNodes(dev *btrfs.Device, sb btrfs.Superblock, fn func(*util.Ref[btrf
Size: sb.NodeSize,
},
}
- var nodeHeader btrfs.NodeHeader
- if _, err := binstruct.Unmarshal(nodeBuf, &nodeHeader); err != nil {
+ if _, err := binstruct.Unmarshal(nodeBuf, &nodeRef.Data.Head); err != nil {
fn(nil, fmt.Errorf("sector@%d: %w", pos, err))
}
// sanity checking
- if nodeHeader.MetadataUUID != sb.EffectiveMetadataUUID() {
+ if nodeRef.Data.Head.MetadataUUID != sb.EffectiveMetadataUUID() {
//fmt.Printf("sector@%d does not look like a node\n", pos)
continue
}