btrfs-progs: fix in-place byte swapping

Storing fixed-endian values in native cpu types defeats the purpose of
using sparse endian types to find endian conversion bugs.

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:
Zach Brown 2013-08-14 16:16:39 -07:00 committed by David Sterba
parent 47c072c2d8
commit 73043664dc
2 changed files with 6 additions and 5 deletions

View File

@ -688,11 +688,11 @@ static void print_uuid_item(struct extent_buffer *l, unsigned long offset,
return; return;
} }
while (item_size) { while (item_size) {
u64 subvol_id; __le64 subvol_id;
read_extent_buffer(l, &subvol_id, offset, sizeof(u64)); read_extent_buffer(l, &subvol_id, offset, sizeof(u64));
subvol_id = le64_to_cpu(subvol_id); printf("\t\tsubvol_id %llu\n",
printf("\t\tsubvol_id %llu\n", (unsigned long long)subvol_id); (unsigned long long)le64_to_cpu(subvol_id));
item_size -= sizeof(u64); item_size -= sizeof(u64);
offset += sizeof(u64); offset += sizeof(u64);
} }

View File

@ -43,6 +43,7 @@ static int btrfs_uuid_tree_lookup_any(int fd, const u8 *uuid, u8 type,
struct btrfs_ioctl_search_args search_arg; struct btrfs_ioctl_search_args search_arg;
struct btrfs_ioctl_search_header *search_header; struct btrfs_ioctl_search_header *search_header;
u32 item_size; u32 item_size;
__le64 lesubid;
btrfs_uuid_to_key(uuid, &key_objectid, &key_offset); btrfs_uuid_to_key(uuid, &key_objectid, &key_offset);
@ -82,8 +83,8 @@ static int btrfs_uuid_tree_lookup_any(int fd, const u8 *uuid, u8 type,
} }
/* return first stored id */ /* return first stored id */
memcpy(subid, search_header + 1, sizeof(*subid)); memcpy(&lesubid, search_header + 1, sizeof(lesubid));
*subid = le64_to_cpu(*subid); *subid = le64_to_cpu(lesubid);
out: out:
return ret; return ret;