btrfs-progs: fix endian bugs in chunk rebuilding
A disk_key was set by hand instead of using the endian helpers. I *think* the second one is just a typo. The chunk's num_stripes was already initialized from the record, but it's le16. So we'll set the item's size based on the record's native num_stripes. Signed-off-by: Zach Brown <zab@redhat.com> Signed-off-by: David Sterba <dsterba@suse.cz> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
This commit is contained in:
parent
51c5811583
commit
2cd95f945a
|
@ -1031,9 +1031,9 @@ static int __rebuild_chunk_root(struct btrfs_trans_handle *trans,
|
|||
if (min_devid > dev->devid)
|
||||
min_devid = dev->devid;
|
||||
}
|
||||
disk_key.objectid = BTRFS_DEV_ITEMS_OBJECTID;
|
||||
disk_key.type = BTRFS_DEV_ITEM_KEY;
|
||||
disk_key.offset = min_devid;
|
||||
btrfs_set_disk_key_objectid(&disk_key, BTRFS_DEV_ITEMS_OBJECTID);
|
||||
btrfs_set_disk_key_type(&disk_key, BTRFS_DEV_ITEM_KEY);
|
||||
btrfs_set_disk_key_offset(&disk_key, min_devid);
|
||||
|
||||
cow = btrfs_alloc_free_block(trans, root, root->sectorsize,
|
||||
BTRFS_CHUNK_TREE_OBJECTID,
|
||||
|
@ -1117,7 +1117,7 @@ static int __rebuild_chunk_items(struct btrfs_trans_handle *trans,
|
|||
key.offset = chunk_rec->offset;
|
||||
|
||||
ret = btrfs_insert_item(trans, chunk_root, &key, chunk,
|
||||
btrfs_chunk_item_size(chunk->num_stripes));
|
||||
btrfs_chunk_item_size(chunk_rec->num_stripes));
|
||||
free(chunk);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
|
Loading…
Reference in New Issue