From cd46b6b734d833a9e2d83ba92e8f7348e63afe7e Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sat, 2 Jul 2022 16:42:13 -0600 Subject: implement EXTENT_CSUM --- pkg/btrfs/btrfsitem/items.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'pkg/btrfs/btrfsitem/items.go') diff --git a/pkg/btrfs/btrfsitem/items.go b/pkg/btrfs/btrfsitem/items.go index 1a3b883..5ad3471 100644 --- a/pkg/btrfs/btrfsitem/items.go +++ b/pkg/btrfs/btrfsitem/items.go @@ -5,6 +5,7 @@ import ( "reflect" "lukeshu.com/btrfs-tools/pkg/binstruct" + "lukeshu.com/btrfs-tools/pkg/btrfs/btrfssum" "lukeshu.com/btrfs-tools/pkg/btrfs/internal" ) @@ -31,7 +32,7 @@ func (o *Error) UnmarshalBinary(dat []byte) (int, error) { } // Rather than returning a separate error value, return an Error item. -func UnmarshalItem(key internal.Key, dat []byte) Item { +func UnmarshalItem(key internal.Key, csumType btrfssum.CSumType, dat []byte) Item { var gotyp reflect.Type if key.ItemType == UNTYPED_KEY { var ok bool @@ -54,6 +55,9 @@ func UnmarshalItem(key internal.Key, dat []byte) Item { } } retPtr := reflect.New(gotyp) + if csums, ok := retPtr.Interface().(*ExtentCSum); ok { + csums.ChecksumSize = csumType.Size() + } n, err := binstruct.Unmarshal(dat, retPtr.Interface()) if err != nil { return Error{ -- cgit v1.2.3-2-g168b