summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChandan Rajendra <chandan@linux.vnet.ibm.com>2016-12-01 19:21:14 +0530
committerDavid Sterba <dsterba@suse.com>2016-12-14 15:06:35 +0100
commit4981c8d2347775e93678fdec2a10697843a71093 (patch)
treec563423473aef8f8b3e4123ecc72d39e0b614780
parentfd60bbfcba42954fd7157a9e6f852e776befa247 (diff)
btrfs-progs: Use helper function to access btrfs_super_block->sys_chunk_array_size
btrfs_super_block->sys_chunk_array_size is stored as le32 data on disk. However insert_temp_chunk_item() writes sys_chunk_array_size in host cpu order. This commit fixes this by using super block access helper functions to read and write btrfs_super_block->sys_chunk_array_size field. Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com> Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--utils.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/utils.c b/utils.c
index 69b580ad..acbdf9f2 100644
--- a/utils.c
+++ b/utils.c
@@ -560,14 +560,18 @@ static int insert_temp_chunk_item(int fd, struct extent_buffer *buf,
*/
if (type & BTRFS_BLOCK_GROUP_SYSTEM) {
char *cur;
+ u32 array_size;
- cur = (char *)sb->sys_chunk_array + sb->sys_chunk_array_size;
+ cur = (char *)sb->sys_chunk_array
+ + btrfs_super_sys_array_size(sb);
memcpy(cur, &disk_key, sizeof(disk_key));
cur += sizeof(disk_key);
read_extent_buffer(buf, cur, (unsigned long int)chunk,
btrfs_chunk_item_size(1));
- sb->sys_chunk_array_size += btrfs_chunk_item_size(1) +
+ array_size = btrfs_super_sys_array_size(sb);
+ array_size += btrfs_chunk_item_size(1) +
sizeof(disk_key);
+ btrfs_set_super_sys_array_size(sb, array_size);
ret = write_temp_super(fd, sb, cfg->super_bytenr);
}