diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2022-06-06 12:26:09 -0600 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2022-06-06 12:26:09 -0600 |
commit | 7a464fd038977ba1d57d730e7f15a4df5c8ca91a (patch) | |
tree | fb09c0e57c5a744a20ee4c734016237da84e5a46 | |
parent | 432c52514c037402f1bbfb13ebf5997c4a2f0033 (diff) |
fix
-rw-r--r-- | cmd/btrfs-fsck/main.go | 4 | ||||
-rw-r--r-- | pkg/btrfs/crc32c.go | 5 | ||||
-rw-r--r-- | pkg/btrfsmisc/fsck.go | 5 |
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 } |