From 4981c8d2347775e93678fdec2a10697843a71093 Mon Sep 17 00:00:00 2001 From: Chandan Rajendra Date: Thu, 1 Dec 2016 19:21:14 +0530 Subject: [PATCH] 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 Signed-off-by: David Sterba --- utils.c | 8 ++++++-- 1 file 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); }