summaryrefslogtreecommitdiff
path: root/pkg/btrfs/btrfsitem
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/btrfs/btrfsitem')
-rw-r--r--pkg/btrfs/btrfsitem/item_chunk.go1
-rw-r--r--pkg/btrfs/btrfsitem/item_dir.go1
-rw-r--r--pkg/btrfs/btrfsitem/item_inoderef.go1
-rw-r--r--pkg/btrfs/btrfsitem/item_uuid.go10
4 files changed, 7 insertions, 6 deletions
diff --git a/pkg/btrfs/btrfsitem/item_chunk.go b/pkg/btrfs/btrfsitem/item_chunk.go
index 826ecc6..eae8339 100644
--- a/pkg/btrfs/btrfsitem/item_chunk.go
+++ b/pkg/btrfs/btrfsitem/item_chunk.go
@@ -34,6 +34,7 @@ func (chunk *Chunk) UnmarshalBinary(dat []byte) (int, error) {
if err != nil {
return n, err
}
+ chunk.Stripes = nil
for i := 0; i < int(chunk.NumStripes); i++ {
var stripe ChunkStripe
_n, err := binstruct.Unmarshal(dat[n:], &stripe)
diff --git a/pkg/btrfs/btrfsitem/item_dir.go b/pkg/btrfs/btrfsitem/item_dir.go
index afef12d..6814041 100644
--- a/pkg/btrfs/btrfsitem/item_dir.go
+++ b/pkg/btrfs/btrfsitem/item_dir.go
@@ -10,6 +10,7 @@ import (
type DirList []Dir // DIR_ITEM=84, DIR_INDEX=96, XATTR_ITEM=24
func (o *DirList) UnmarshalBinary(dat []byte) (int, error) {
+ *o = nil
n := 0
for n < len(dat) {
var ref Dir
diff --git a/pkg/btrfs/btrfsitem/item_inoderef.go b/pkg/btrfs/btrfsitem/item_inoderef.go
index e59c4b3..39b7738 100644
--- a/pkg/btrfs/btrfsitem/item_inoderef.go
+++ b/pkg/btrfs/btrfsitem/item_inoderef.go
@@ -7,6 +7,7 @@ import (
type InodeRefList []InodeRef // INODE_REF=12
func (o *InodeRefList) UnmarshalBinary(dat []byte) (int, error) {
+ *o = nil
n := 0
for n < len(dat) {
var ref InodeRef
diff --git a/pkg/btrfs/btrfsitem/item_uuid.go b/pkg/btrfs/btrfsitem/item_uuid.go
index 894ccff..d66e102 100644
--- a/pkg/btrfs/btrfsitem/item_uuid.go
+++ b/pkg/btrfs/btrfsitem/item_uuid.go
@@ -7,12 +7,10 @@ import (
// The Key for this item is a UUID, and the item is a list of
// subvolume IDs (ObjectIDs) that that UUID maps to.
-type UUIDMap struct { // UUID_SUBVOL=251 UUID_RECEIVED_SUBVOL=252
- SubvolIDs []internal.ObjID
-}
+type UUIDMap []internal.ObjID // UUID_SUBVOL=251 UUID_RECEIVED_SUBVOL=252
func (o *UUIDMap) UnmarshalBinary(dat []byte) (int, error) {
- o.SubvolIDs = nil
+ *o = nil
var n int
for len(dat) > n {
var subvolID internal.ObjID
@@ -21,14 +19,14 @@ func (o *UUIDMap) UnmarshalBinary(dat []byte) (int, error) {
if err != nil {
return n, err
}
- o.SubvolIDs = append(o.SubvolIDs, subvolID)
+ *o = append(*o, subvolID)
}
return n, nil
}
func (o UUIDMap) MarshalBinary() ([]byte, error) {
var ret []byte
- for _, subvolID := range o.SubvolIDs {
+ for _, subvolID := range o {
bs, err := binstruct.Marshal(subvolID)
ret = append(ret, bs...)
if err != nil {