aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/check-integrity.c110
-rw-r--r--fs/btrfs/ctree.h47
-rw-r--r--fs/btrfs/delayed-inode.c32
-rw-r--r--fs/btrfs/disk-io.c14
-rw-r--r--fs/btrfs/ioctl.c28
-rw-r--r--fs/btrfs/root-tree.c14
-rw-r--r--fs/btrfs/scrub.c12
-rw-r--r--fs/btrfs/transaction.c4
-rw-r--r--fs/btrfs/volumes.c2
9 files changed, 150 insertions, 113 deletions
diff --git a/fs/btrfs/check-integrity.c b/fs/btrfs/check-integrity.c
index 1431a6965017..1f706e93e622 100644
--- a/fs/btrfs/check-integrity.c
+++ b/fs/btrfs/check-integrity.c
@@ -813,7 +813,7 @@ static int btrfsic_process_superblock_dev_mirror(
813 (bh->b_data + (dev_bytenr & 4095)); 813 (bh->b_data + (dev_bytenr & 4095));
814 814
815 if (btrfs_super_bytenr(super_tmp) != dev_bytenr || 815 if (btrfs_super_bytenr(super_tmp) != dev_bytenr ||
816 super_tmp->magic != cpu_to_le64(BTRFS_MAGIC) || 816 btrfs_super_magic(super_tmp) != BTRFS_MAGIC ||
817 memcmp(device->uuid, super_tmp->dev_item.uuid, BTRFS_UUID_SIZE) || 817 memcmp(device->uuid, super_tmp->dev_item.uuid, BTRFS_UUID_SIZE) ||
818 btrfs_super_nodesize(super_tmp) != state->metablock_size || 818 btrfs_super_nodesize(super_tmp) != state->metablock_size ||
819 btrfs_super_leafsize(super_tmp) != state->metablock_size || 819 btrfs_super_leafsize(super_tmp) != state->metablock_size ||
@@ -880,20 +880,20 @@ static int btrfsic_process_superblock_dev_mirror(
880 tmp_disk_key.offset = 0; 880 tmp_disk_key.offset = 0;
881 switch (pass) { 881 switch (pass) {
882 case 0: 882 case 0:
883 tmp_disk_key.objectid = 883 btrfs_set_disk_key_objectid(&tmp_disk_key,
884 cpu_to_le64(BTRFS_ROOT_TREE_OBJECTID); 884 BTRFS_ROOT_TREE_OBJECTID);
885 additional_string = "initial root "; 885 additional_string = "initial root ";
886 next_bytenr = btrfs_super_root(super_tmp); 886 next_bytenr = btrfs_super_root(super_tmp);
887 break; 887 break;
888 case 1: 888 case 1:
889 tmp_disk_key.objectid = 889 btrfs_set_disk_key_objectid(&tmp_disk_key,
890 cpu_to_le64(BTRFS_CHUNK_TREE_OBJECTID); 890 BTRFS_CHUNK_TREE_OBJECTID);
891 additional_string = "initial chunk "; 891 additional_string = "initial chunk ";
892 next_bytenr = btrfs_super_chunk_root(super_tmp); 892 next_bytenr = btrfs_super_chunk_root(super_tmp);
893 break; 893 break;
894 case 2: 894 case 2:
895 tmp_disk_key.objectid = 895 btrfs_set_disk_key_objectid(&tmp_disk_key,
896 cpu_to_le64(BTRFS_TREE_LOG_OBJECTID); 896 BTRFS_TREE_LOG_OBJECTID);
897 additional_string = "initial log "; 897 additional_string = "initial log ";
898 next_bytenr = btrfs_super_log_root(super_tmp); 898 next_bytenr = btrfs_super_log_root(super_tmp);
899 if (0 == next_bytenr) 899 if (0 == next_bytenr)
@@ -1003,7 +1003,7 @@ continue_with_new_stack_frame:
1003 (struct btrfs_leaf *)sf->hdr; 1003 (struct btrfs_leaf *)sf->hdr;
1004 1004
1005 if (-1 == sf->i) { 1005 if (-1 == sf->i) {
1006 sf->nr = le32_to_cpu(leafhdr->header.nritems); 1006 sf->nr = btrfs_stack_header_nritems(&leafhdr->header);
1007 1007
1008 if (state->print_mask & BTRFSIC_PRINT_MASK_VERBOSE) 1008 if (state->print_mask & BTRFSIC_PRINT_MASK_VERBOSE)
1009 printk(KERN_INFO 1009 printk(KERN_INFO
@@ -1013,9 +1013,11 @@ continue_with_new_stack_frame:
1013 sf->block_ctx->start, 1013 sf->block_ctx->start,
1014 sf->nr, 1014 sf->nr,
1015 (unsigned long long) 1015 (unsigned long long)
1016 le64_to_cpu(leafhdr->header.generation), 1016 btrfs_stack_header_generation(
1017 &leafhdr->header),
1017 (unsigned long long) 1018 (unsigned long long)
1018 le64_to_cpu(leafhdr->header.owner)); 1019 btrfs_stack_header_owner(
1020 &leafhdr->header));
1019 } 1021 }
1020 1022
1021continue_with_current_leaf_stack_frame: 1023continue_with_current_leaf_stack_frame:
@@ -1047,10 +1049,10 @@ leaf_item_out_of_bounce_error:
1047 &disk_item, 1049 &disk_item,
1048 disk_item_offset, 1050 disk_item_offset,
1049 sizeof(struct btrfs_item)); 1051 sizeof(struct btrfs_item));
1050 item_offset = le32_to_cpu(disk_item.offset); 1052 item_offset = btrfs_stack_item_offset(&disk_item);
1051 item_size = le32_to_cpu(disk_item.size); 1053 item_size = btrfs_stack_item_offset(&disk_item);
1052 disk_key = &disk_item.key; 1054 disk_key = &disk_item.key;
1053 type = disk_key->type; 1055 type = btrfs_disk_key_type(disk_key);
1054 1056
1055 if (BTRFS_ROOT_ITEM_KEY == type) { 1057 if (BTRFS_ROOT_ITEM_KEY == type) {
1056 struct btrfs_root_item root_item; 1058 struct btrfs_root_item root_item;
@@ -1066,7 +1068,7 @@ leaf_item_out_of_bounce_error:
1066 sf->block_ctx, &root_item, 1068 sf->block_ctx, &root_item,
1067 root_item_offset, 1069 root_item_offset,
1068 item_size); 1070 item_size);
1069 next_bytenr = le64_to_cpu(root_item.bytenr); 1071 next_bytenr = btrfs_root_bytenr(&root_item);
1070 1072
1071 sf->error = 1073 sf->error =
1072 btrfsic_create_link_to_next_block( 1074 btrfsic_create_link_to_next_block(
@@ -1081,8 +1083,8 @@ leaf_item_out_of_bounce_error:
1081 &sf->num_copies, 1083 &sf->num_copies,
1082 &sf->mirror_num, 1084 &sf->mirror_num,
1083 disk_key, 1085 disk_key,
1084 le64_to_cpu(root_item. 1086 btrfs_root_generation(
1085 generation)); 1087 &root_item));
1086 if (sf->error) 1088 if (sf->error)
1087 goto one_stack_frame_backwards; 1089 goto one_stack_frame_backwards;
1088 1090
@@ -1130,7 +1132,7 @@ leaf_item_out_of_bounce_error:
1130 struct btrfs_node *const nodehdr = (struct btrfs_node *)sf->hdr; 1132 struct btrfs_node *const nodehdr = (struct btrfs_node *)sf->hdr;
1131 1133
1132 if (-1 == sf->i) { 1134 if (-1 == sf->i) {
1133 sf->nr = le32_to_cpu(nodehdr->header.nritems); 1135 sf->nr = btrfs_stack_header_nritems(&nodehdr->header);
1134 1136
1135 if (state->print_mask & BTRFSIC_PRINT_MASK_VERBOSE) 1137 if (state->print_mask & BTRFSIC_PRINT_MASK_VERBOSE)
1136 printk(KERN_INFO "node %llu level %d items %d" 1138 printk(KERN_INFO "node %llu level %d items %d"
@@ -1139,9 +1141,11 @@ leaf_item_out_of_bounce_error:
1139 sf->block_ctx->start, 1141 sf->block_ctx->start,
1140 nodehdr->header.level, sf->nr, 1142 nodehdr->header.level, sf->nr,
1141 (unsigned long long) 1143 (unsigned long long)
1142 le64_to_cpu(nodehdr->header.generation), 1144 btrfs_stack_header_generation(
1145 &nodehdr->header),
1143 (unsigned long long) 1146 (unsigned long long)
1144 le64_to_cpu(nodehdr->header.owner)); 1147 btrfs_stack_header_owner(
1148 &nodehdr->header));
1145 } 1149 }
1146 1150
1147continue_with_current_node_stack_frame: 1151continue_with_current_node_stack_frame:
@@ -1168,7 +1172,7 @@ continue_with_current_node_stack_frame:
1168 btrfsic_read_from_block_data( 1172 btrfsic_read_from_block_data(
1169 sf->block_ctx, &key_ptr, key_ptr_offset, 1173 sf->block_ctx, &key_ptr, key_ptr_offset,
1170 sizeof(struct btrfs_key_ptr)); 1174 sizeof(struct btrfs_key_ptr));
1171 next_bytenr = le64_to_cpu(key_ptr.blockptr); 1175 next_bytenr = btrfs_stack_key_blockptr(&key_ptr);
1172 1176
1173 sf->error = btrfsic_create_link_to_next_block( 1177 sf->error = btrfsic_create_link_to_next_block(
1174 state, 1178 state,
@@ -1182,7 +1186,7 @@ continue_with_current_node_stack_frame:
1182 &sf->num_copies, 1186 &sf->num_copies,
1183 &sf->mirror_num, 1187 &sf->mirror_num,
1184 &key_ptr.key, 1188 &key_ptr.key,
1185 le64_to_cpu(key_ptr.generation)); 1189 btrfs_stack_key_generation(&key_ptr));
1186 if (sf->error) 1190 if (sf->error)
1187 goto one_stack_frame_backwards; 1191 goto one_stack_frame_backwards;
1188 1192
@@ -1444,12 +1448,13 @@ static int btrfsic_handle_extent_data(
1444 file_extent_item_offset, 1448 file_extent_item_offset,
1445 offsetof(struct btrfs_file_extent_item, disk_num_bytes)); 1449 offsetof(struct btrfs_file_extent_item, disk_num_bytes));
1446 if (BTRFS_FILE_EXTENT_REG != file_extent_item.type || 1450 if (BTRFS_FILE_EXTENT_REG != file_extent_item.type ||
1447 ((u64)0) == le64_to_cpu(file_extent_item.disk_bytenr)) { 1451 btrfs_stack_file_extent_disk_bytenr(&file_extent_item) == 0) {
1448 if (state->print_mask & BTRFSIC_PRINT_MASK_VERY_VERBOSE) 1452 if (state->print_mask & BTRFSIC_PRINT_MASK_VERY_VERBOSE)
1449 printk(KERN_INFO "extent_data: type %u, disk_bytenr = %llu\n", 1453 printk(KERN_INFO "extent_data: type %u, disk_bytenr = %llu\n",
1450 file_extent_item.type, 1454 file_extent_item.type,
1451 (unsigned long long) 1455 (unsigned long long)
1452 le64_to_cpu(file_extent_item.disk_bytenr)); 1456 btrfs_stack_file_extent_disk_bytenr(
1457 &file_extent_item));
1453 return 0; 1458 return 0;
1454 } 1459 }
1455 1460
@@ -1463,19 +1468,20 @@ static int btrfsic_handle_extent_data(
1463 btrfsic_read_from_block_data(block_ctx, &file_extent_item, 1468 btrfsic_read_from_block_data(block_ctx, &file_extent_item,
1464 file_extent_item_offset, 1469 file_extent_item_offset,
1465 sizeof(struct btrfs_file_extent_item)); 1470 sizeof(struct btrfs_file_extent_item));
1466 next_bytenr = le64_to_cpu(file_extent_item.disk_bytenr) + 1471 next_bytenr = btrfs_stack_file_extent_disk_bytenr(&file_extent_item) +
1467 le64_to_cpu(file_extent_item.offset); 1472 btrfs_stack_file_extent_offset(&file_extent_item);
1468 generation = le64_to_cpu(file_extent_item.generation); 1473 generation = btrfs_stack_file_extent_generation(&file_extent_item);
1469 num_bytes = le64_to_cpu(file_extent_item.num_bytes); 1474 num_bytes = btrfs_stack_file_extent_num_bytes(&file_extent_item);
1470 generation = le64_to_cpu(file_extent_item.generation); 1475 generation = btrfs_stack_file_extent_generation(&file_extent_item);
1471 1476
1472 if (state->print_mask & BTRFSIC_PRINT_MASK_VERY_VERBOSE) 1477 if (state->print_mask & BTRFSIC_PRINT_MASK_VERY_VERBOSE)
1473 printk(KERN_INFO "extent_data: type %u, disk_bytenr = %llu," 1478 printk(KERN_INFO "extent_data: type %u, disk_bytenr = %llu,"
1474 " offset = %llu, num_bytes = %llu\n", 1479 " offset = %llu, num_bytes = %llu\n",
1475 file_extent_item.type, 1480 file_extent_item.type,
1476 (unsigned long long) 1481 (unsigned long long)
1477 le64_to_cpu(file_extent_item.disk_bytenr), 1482 btrfs_stack_file_extent_disk_bytenr(&file_extent_item),
1478 (unsigned long long)le64_to_cpu(file_extent_item.offset), 1483 (unsigned long long)
1484 btrfs_stack_file_extent_offset(&file_extent_item),
1479 (unsigned long long)num_bytes); 1485 (unsigned long long)num_bytes);
1480 while (num_bytes > 0) { 1486 while (num_bytes > 0) {
1481 u32 chunk_len; 1487 u32 chunk_len;
@@ -1896,8 +1902,8 @@ again:
1896 struct list_head *tmp_ref_to; 1902 struct list_head *tmp_ref_to;
1897 1903
1898 if (block->is_superblock) { 1904 if (block->is_superblock) {
1899 bytenr = le64_to_cpu(((struct btrfs_super_block *) 1905 bytenr = btrfs_super_bytenr((struct btrfs_super_block *)
1900 mapped_datav[0])->bytenr); 1906 mapped_datav[0]);
1901 if (num_pages * PAGE_CACHE_SIZE < 1907 if (num_pages * PAGE_CACHE_SIZE <
1902 BTRFS_SUPER_INFO_SIZE) { 1908 BTRFS_SUPER_INFO_SIZE) {
1903 printk(KERN_INFO 1909 printk(KERN_INFO
@@ -1923,8 +1929,9 @@ again:
1923 return; 1929 return;
1924 } 1930 }
1925 processed_len = state->metablock_size; 1931 processed_len = state->metablock_size;
1926 bytenr = le64_to_cpu(((struct btrfs_header *) 1932 bytenr = btrfs_stack_header_bytenr(
1927 mapped_datav[0])->bytenr); 1933 (struct btrfs_header *)
1934 mapped_datav[0]);
1928 btrfsic_cmp_log_and_dev_bytenr(state, bytenr, 1935 btrfsic_cmp_log_and_dev_bytenr(state, bytenr,
1929 dev_state, 1936 dev_state,
1930 dev_bytenr); 1937 dev_bytenr);
@@ -1992,13 +1999,13 @@ again:
1992 block->mirror_num, 1999 block->mirror_num,
1993 (unsigned long long)block->generation, 2000 (unsigned long long)block->generation,
1994 (unsigned long long) 2001 (unsigned long long)
1995 le64_to_cpu(block->disk_key.objectid), 2002 btrfs_disk_key_objectid(&block->disk_key),
1996 block->disk_key.type, 2003 block->disk_key.type,
1997 (unsigned long long) 2004 (unsigned long long)
1998 le64_to_cpu(block->disk_key.offset), 2005 btrfs_disk_key_offset(&block->disk_key),
1999 (unsigned long long) 2006 (unsigned long long)
2000 le64_to_cpu(((struct btrfs_header *) 2007 btrfs_stack_header_generation(
2001 mapped_datav[0])->generation), 2008 (struct btrfs_header *) mapped_datav[0]),
2002 (unsigned long long) 2009 (unsigned long long)
2003 state->max_superblock_generation); 2010 state->max_superblock_generation);
2004 btrfsic_dump_tree(state); 2011 btrfsic_dump_tree(state);
@@ -2015,8 +2022,9 @@ again:
2015 block->mirror_num, 2022 block->mirror_num,
2016 (unsigned long long)block->generation, 2023 (unsigned long long)block->generation,
2017 (unsigned long long) 2024 (unsigned long long)
2018 le64_to_cpu(((struct btrfs_header *) 2025 btrfs_stack_header_generation(
2019 mapped_datav[0])->generation)); 2026 (struct btrfs_header *)
2027 mapped_datav[0]));
2020 /* it would not be safe to go on */ 2028 /* it would not be safe to go on */
2021 btrfsic_dump_tree(state); 2029 btrfsic_dump_tree(state);
2022 goto continue_loop; 2030 goto continue_loop;
@@ -2184,8 +2192,9 @@ again:
2184 block_ctx.pagev = NULL; 2192 block_ctx.pagev = NULL;
2185 } else { 2193 } else {
2186 processed_len = state->metablock_size; 2194 processed_len = state->metablock_size;
2187 bytenr = le64_to_cpu(((struct btrfs_header *) 2195 bytenr = btrfs_stack_header_bytenr(
2188 mapped_datav[0])->bytenr); 2196 (struct btrfs_header *)
2197 mapped_datav[0]);
2189 btrfsic_cmp_log_and_dev_bytenr(state, bytenr, dev_state, 2198 btrfsic_cmp_log_and_dev_bytenr(state, bytenr, dev_state,
2190 dev_bytenr); 2199 dev_bytenr);
2191 if (state->print_mask & BTRFSIC_PRINT_MASK_VERBOSE) 2200 if (state->print_mask & BTRFSIC_PRINT_MASK_VERBOSE)
@@ -2434,13 +2443,14 @@ static int btrfsic_process_written_superblock(
2434 const char *additional_string = NULL; 2443 const char *additional_string = NULL;
2435 struct btrfs_disk_key tmp_disk_key; 2444 struct btrfs_disk_key tmp_disk_key;
2436 2445
2437 tmp_disk_key.type = BTRFS_ROOT_ITEM_KEY; 2446 btrfs_set_disk_key_objectid(&tmp_disk_key,
2438 tmp_disk_key.offset = 0; 2447 BTRFS_ROOT_ITEM_KEY);
2448 btrfs_set_disk_key_objectid(&tmp_disk_key, 0);
2439 2449
2440 switch (pass) { 2450 switch (pass) {
2441 case 0: 2451 case 0:
2442 tmp_disk_key.objectid = 2452 btrfs_set_disk_key_objectid(&tmp_disk_key,
2443 cpu_to_le64(BTRFS_ROOT_TREE_OBJECTID); 2453 BTRFS_ROOT_TREE_OBJECTID);
2444 additional_string = "root "; 2454 additional_string = "root ";
2445 next_bytenr = btrfs_super_root(super_hdr); 2455 next_bytenr = btrfs_super_root(super_hdr);
2446 if (state->print_mask & 2456 if (state->print_mask &
@@ -2449,8 +2459,8 @@ static int btrfsic_process_written_superblock(
2449 (unsigned long long)next_bytenr); 2459 (unsigned long long)next_bytenr);
2450 break; 2460 break;
2451 case 1: 2461 case 1:
2452 tmp_disk_key.objectid = 2462 btrfs_set_disk_key_objectid(&tmp_disk_key,
2453 cpu_to_le64(BTRFS_CHUNK_TREE_OBJECTID); 2463 BTRFS_CHUNK_TREE_OBJECTID);
2454 additional_string = "chunk "; 2464 additional_string = "chunk ";
2455 next_bytenr = btrfs_super_chunk_root(super_hdr); 2465 next_bytenr = btrfs_super_chunk_root(super_hdr);
2456 if (state->print_mask & 2466 if (state->print_mask &
@@ -2459,8 +2469,8 @@ static int btrfsic_process_written_superblock(
2459 (unsigned long long)next_bytenr); 2469 (unsigned long long)next_bytenr);
2460 break; 2470 break;
2461 case 2: 2471 case 2:
2462 tmp_disk_key.objectid = 2472 btrfs_set_disk_key_objectid(&tmp_disk_key,
2463 cpu_to_le64(BTRFS_TREE_LOG_OBJECTID); 2473 BTRFS_TREE_LOG_OBJECTID);
2464 additional_string = "log "; 2474 additional_string = "log ";
2465 next_bytenr = btrfs_super_log_root(super_hdr); 2475 next_bytenr = btrfs_super_log_root(super_hdr);
2466 if (0 == next_bytenr) 2476 if (0 == next_bytenr)
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 8cc03321a368..dda60e9f6b89 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -2240,6 +2240,23 @@ BTRFS_SETGET_FUNCS(inode_gid, struct btrfs_inode_item, gid, 32);
2240BTRFS_SETGET_FUNCS(inode_mode, struct btrfs_inode_item, mode, 32); 2240BTRFS_SETGET_FUNCS(inode_mode, struct btrfs_inode_item, mode, 32);
2241BTRFS_SETGET_FUNCS(inode_rdev, struct btrfs_inode_item, rdev, 64); 2241BTRFS_SETGET_FUNCS(inode_rdev, struct btrfs_inode_item, rdev, 64);
2242BTRFS_SETGET_FUNCS(inode_flags, struct btrfs_inode_item, flags, 64); 2242BTRFS_SETGET_FUNCS(inode_flags, struct btrfs_inode_item, flags, 64);
2243BTRFS_SETGET_STACK_FUNCS(stack_inode_generation, struct btrfs_inode_item,
2244 generation, 64);
2245BTRFS_SETGET_STACK_FUNCS(stack_inode_sequence, struct btrfs_inode_item,
2246 sequence, 64);
2247BTRFS_SETGET_STACK_FUNCS(stack_inode_transid, struct btrfs_inode_item,
2248 transid, 64);
2249BTRFS_SETGET_STACK_FUNCS(stack_inode_size, struct btrfs_inode_item, size, 64);
2250BTRFS_SETGET_STACK_FUNCS(stack_inode_nbytes, struct btrfs_inode_item,
2251 nbytes, 64);
2252BTRFS_SETGET_STACK_FUNCS(stack_inode_block_group, struct btrfs_inode_item,
2253 block_group, 64);
2254BTRFS_SETGET_STACK_FUNCS(stack_inode_nlink, struct btrfs_inode_item, nlink, 32);
2255BTRFS_SETGET_STACK_FUNCS(stack_inode_uid, struct btrfs_inode_item, uid, 32);
2256BTRFS_SETGET_STACK_FUNCS(stack_inode_gid, struct btrfs_inode_item, gid, 32);
2257BTRFS_SETGET_STACK_FUNCS(stack_inode_mode, struct btrfs_inode_item, mode, 32);
2258BTRFS_SETGET_STACK_FUNCS(stack_inode_rdev, struct btrfs_inode_item, rdev, 64);
2259BTRFS_SETGET_STACK_FUNCS(stack_inode_flags, struct btrfs_inode_item, flags, 64);
2243 2260
2244static inline struct btrfs_timespec * 2261static inline struct btrfs_timespec *
2245btrfs_inode_atime(struct btrfs_inode_item *inode_item) 2262btrfs_inode_atime(struct btrfs_inode_item *inode_item)
@@ -2267,6 +2284,8 @@ btrfs_inode_ctime(struct btrfs_inode_item *inode_item)
2267 2284
2268BTRFS_SETGET_FUNCS(timespec_sec, struct btrfs_timespec, sec, 64); 2285BTRFS_SETGET_FUNCS(timespec_sec, struct btrfs_timespec, sec, 64);
2269BTRFS_SETGET_FUNCS(timespec_nsec, struct btrfs_timespec, nsec, 32); 2286BTRFS_SETGET_FUNCS(timespec_nsec, struct btrfs_timespec, nsec, 32);
2287BTRFS_SETGET_STACK_FUNCS(stack_timespec_sec, struct btrfs_timespec, sec, 64);
2288BTRFS_SETGET_STACK_FUNCS(stack_timespec_nsec, struct btrfs_timespec, nsec, 32);
2270 2289
2271/* struct btrfs_dev_extent */ 2290/* struct btrfs_dev_extent */
2272BTRFS_SETGET_FUNCS(dev_extent_chunk_tree, struct btrfs_dev_extent, 2291BTRFS_SETGET_FUNCS(dev_extent_chunk_tree, struct btrfs_dev_extent,
@@ -2348,6 +2367,10 @@ BTRFS_SETGET_FUNCS(ref_count_v0, struct btrfs_extent_ref_v0, count, 32);
2348/* struct btrfs_node */ 2367/* struct btrfs_node */
2349BTRFS_SETGET_FUNCS(key_blockptr, struct btrfs_key_ptr, blockptr, 64); 2368BTRFS_SETGET_FUNCS(key_blockptr, struct btrfs_key_ptr, blockptr, 64);
2350BTRFS_SETGET_FUNCS(key_generation, struct btrfs_key_ptr, generation, 64); 2369BTRFS_SETGET_FUNCS(key_generation, struct btrfs_key_ptr, generation, 64);
2370BTRFS_SETGET_STACK_FUNCS(stack_key_blockptr, struct btrfs_key_ptr,
2371 blockptr, 64);
2372BTRFS_SETGET_STACK_FUNCS(stack_key_generation, struct btrfs_key_ptr,
2373 generation, 64);
2351 2374
2352static inline u64 btrfs_node_blockptr(struct extent_buffer *eb, int nr) 2375static inline u64 btrfs_node_blockptr(struct extent_buffer *eb, int nr)
2353{ 2376{
@@ -2404,6 +2427,8 @@ static inline void btrfs_set_node_key(struct extent_buffer *eb,
2404/* struct btrfs_item */ 2427/* struct btrfs_item */
2405BTRFS_SETGET_FUNCS(item_offset, struct btrfs_item, offset, 32); 2428BTRFS_SETGET_FUNCS(item_offset, struct btrfs_item, offset, 32);
2406BTRFS_SETGET_FUNCS(item_size, struct btrfs_item, size, 32); 2429BTRFS_SETGET_FUNCS(item_size, struct btrfs_item, size, 32);
2430BTRFS_SETGET_STACK_FUNCS(stack_item_offset, struct btrfs_item, offset, 32);
2431BTRFS_SETGET_STACK_FUNCS(stack_item_size, struct btrfs_item, size, 32);
2407 2432
2408static inline unsigned long btrfs_item_nr_offset(int nr) 2433static inline unsigned long btrfs_item_nr_offset(int nr)
2409{ 2434{
@@ -2466,6 +2491,13 @@ BTRFS_SETGET_FUNCS(dir_data_len, struct btrfs_dir_item, data_len, 16);
2466BTRFS_SETGET_FUNCS(dir_type, struct btrfs_dir_item, type, 8); 2491BTRFS_SETGET_FUNCS(dir_type, struct btrfs_dir_item, type, 8);
2467BTRFS_SETGET_FUNCS(dir_name_len, struct btrfs_dir_item, name_len, 16); 2492BTRFS_SETGET_FUNCS(dir_name_len, struct btrfs_dir_item, name_len, 16);
2468BTRFS_SETGET_FUNCS(dir_transid, struct btrfs_dir_item, transid, 64); 2493BTRFS_SETGET_FUNCS(dir_transid, struct btrfs_dir_item, transid, 64);
2494BTRFS_SETGET_STACK_FUNCS(stack_dir_type, struct btrfs_dir_item, type, 8);
2495BTRFS_SETGET_STACK_FUNCS(stack_dir_data_len, struct btrfs_dir_item,
2496 data_len, 16);
2497BTRFS_SETGET_STACK_FUNCS(stack_dir_name_len, struct btrfs_dir_item,
2498 name_len, 16);
2499BTRFS_SETGET_STACK_FUNCS(stack_dir_transid, struct btrfs_dir_item,
2500 transid, 64);
2469 2501
2470static inline void btrfs_dir_item_key(struct extent_buffer *eb, 2502static inline void btrfs_dir_item_key(struct extent_buffer *eb,
2471 struct btrfs_dir_item *item, 2503 struct btrfs_dir_item *item,
@@ -2568,6 +2600,12 @@ BTRFS_SETGET_HEADER_FUNCS(header_owner, struct btrfs_header, owner, 64);
2568BTRFS_SETGET_HEADER_FUNCS(header_nritems, struct btrfs_header, nritems, 32); 2600BTRFS_SETGET_HEADER_FUNCS(header_nritems, struct btrfs_header, nritems, 32);
2569BTRFS_SETGET_HEADER_FUNCS(header_flags, struct btrfs_header, flags, 64); 2601BTRFS_SETGET_HEADER_FUNCS(header_flags, struct btrfs_header, flags, 64);
2570BTRFS_SETGET_HEADER_FUNCS(header_level, struct btrfs_header, level, 8); 2602BTRFS_SETGET_HEADER_FUNCS(header_level, struct btrfs_header, level, 8);
2603BTRFS_SETGET_STACK_FUNCS(stack_header_generation, struct btrfs_header,
2604 generation, 64);
2605BTRFS_SETGET_STACK_FUNCS(stack_header_owner, struct btrfs_header, owner, 64);
2606BTRFS_SETGET_STACK_FUNCS(stack_header_nritems, struct btrfs_header,
2607 nritems, 32);
2608BTRFS_SETGET_STACK_FUNCS(stack_header_bytenr, struct btrfs_header, bytenr, 64);
2571 2609
2572static inline int btrfs_header_flag(struct extent_buffer *eb, u64 flag) 2610static inline int btrfs_header_flag(struct extent_buffer *eb, u64 flag)
2573{ 2611{
@@ -2830,6 +2868,7 @@ BTRFS_SETGET_STACK_FUNCS(super_csum_type, struct btrfs_super_block,
2830 csum_type, 16); 2868 csum_type, 16);
2831BTRFS_SETGET_STACK_FUNCS(super_cache_generation, struct btrfs_super_block, 2869BTRFS_SETGET_STACK_FUNCS(super_cache_generation, struct btrfs_super_block,
2832 cache_generation, 64); 2870 cache_generation, 64);
2871BTRFS_SETGET_STACK_FUNCS(super_magic, struct btrfs_super_block, magic, 64);
2833 2872
2834static inline int btrfs_super_csum_size(struct btrfs_super_block *s) 2873static inline int btrfs_super_csum_size(struct btrfs_super_block *s)
2835{ 2874{
@@ -2847,6 +2886,14 @@ static inline unsigned long btrfs_leaf_data(struct extent_buffer *l)
2847 2886
2848/* struct btrfs_file_extent_item */ 2887/* struct btrfs_file_extent_item */
2849BTRFS_SETGET_FUNCS(file_extent_type, struct btrfs_file_extent_item, type, 8); 2888BTRFS_SETGET_FUNCS(file_extent_type, struct btrfs_file_extent_item, type, 8);
2889BTRFS_SETGET_STACK_FUNCS(stack_file_extent_disk_bytenr,
2890 struct btrfs_file_extent_item, disk_bytenr, 64);
2891BTRFS_SETGET_STACK_FUNCS(stack_file_extent_offset,
2892 struct btrfs_file_extent_item, offset, 64);
2893BTRFS_SETGET_STACK_FUNCS(stack_file_extent_generation,
2894 struct btrfs_file_extent_item, generation, 64);
2895BTRFS_SETGET_STACK_FUNCS(stack_file_extent_num_bytes,
2896 struct btrfs_file_extent_item, num_bytes, 64);
2850 2897
2851static inline unsigned long 2898static inline unsigned long
2852btrfs_file_extent_inline_start(struct btrfs_file_extent_item *e) 2899btrfs_file_extent_inline_start(struct btrfs_file_extent_item *e)
diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c
index 375510913fe7..685957ac208e 100644
--- a/fs/btrfs/delayed-inode.c
+++ b/fs/btrfs/delayed-inode.c
@@ -21,6 +21,7 @@
21#include "delayed-inode.h" 21#include "delayed-inode.h"
22#include "disk-io.h" 22#include "disk-io.h"
23#include "transaction.h" 23#include "transaction.h"
24#include "ctree.h"
24 25
25#define BTRFS_DELAYED_WRITEBACK 512 26#define BTRFS_DELAYED_WRITEBACK 512
26#define BTRFS_DELAYED_BACKGROUND 128 27#define BTRFS_DELAYED_BACKGROUND 128
@@ -1453,10 +1454,10 @@ int btrfs_insert_delayed_dir_index(struct btrfs_trans_handle *trans,
1453 1454
1454 dir_item = (struct btrfs_dir_item *)delayed_item->data; 1455 dir_item = (struct btrfs_dir_item *)delayed_item->data;
1455 dir_item->location = *disk_key; 1456 dir_item->location = *disk_key;
1456 dir_item->transid = cpu_to_le64(trans->transid); 1457 btrfs_set_stack_dir_transid(dir_item, trans->transid);
1457 dir_item->data_len = 0; 1458 btrfs_set_stack_dir_data_len(dir_item, 0);
1458 dir_item->name_len = cpu_to_le16(name_len); 1459 btrfs_set_stack_dir_name_len(dir_item, name_len);
1459 dir_item->type = type; 1460 btrfs_set_stack_dir_type(dir_item, type);
1460 memcpy((char *)(dir_item + 1), name, name_len); 1461 memcpy((char *)(dir_item + 1), name, name_len);
1461 1462
1462 ret = btrfs_delayed_item_reserve_metadata(trans, root, delayed_item); 1463 ret = btrfs_delayed_item_reserve_metadata(trans, root, delayed_item);
@@ -1699,7 +1700,7 @@ int btrfs_readdir_delayed_dir_index(struct dir_context *ctx,
1699 1700
1700 di = (struct btrfs_dir_item *)curr->data; 1701 di = (struct btrfs_dir_item *)curr->data;
1701 name = (char *)(di + 1); 1702 name = (char *)(di + 1);
1702 name_len = le16_to_cpu(di->name_len); 1703 name_len = btrfs_stack_dir_name_len(di);
1703 1704
1704 d_type = btrfs_filetype_table[di->type]; 1705 d_type = btrfs_filetype_table[di->type];
1705 btrfs_disk_key_to_cpu(&location, &di->location); 1706 btrfs_disk_key_to_cpu(&location, &di->location);
@@ -1716,27 +1717,6 @@ int btrfs_readdir_delayed_dir_index(struct dir_context *ctx,
1716 return 0; 1717 return 0;
1717} 1718}
1718 1719
1719BTRFS_SETGET_STACK_FUNCS(stack_inode_generation, struct btrfs_inode_item,
1720 generation, 64);
1721BTRFS_SETGET_STACK_FUNCS(stack_inode_sequence, struct btrfs_inode_item,
1722 sequence, 64);
1723BTRFS_SETGET_STACK_FUNCS(stack_inode_transid, struct btrfs_inode_item,
1724 transid, 64);
1725BTRFS_SETGET_STACK_FUNCS(stack_inode_size, struct btrfs_inode_item, size, 64);
1726BTRFS_SETGET_STACK_FUNCS(stack_inode_nbytes, struct btrfs_inode_item,
1727 nbytes, 64);
1728BTRFS_SETGET_STACK_FUNCS(stack_inode_block_group, struct btrfs_inode_item,
1729 block_group, 64);
1730BTRFS_SETGET_STACK_FUNCS(stack_inode_nlink, struct btrfs_inode_item, nlink, 32);
1731BTRFS_SETGET_STACK_FUNCS(stack_inode_uid, struct btrfs_inode_item, uid, 32);
1732BTRFS_SETGET_STACK_FUNCS(stack_inode_gid, struct btrfs_inode_item, gid, 32);
1733BTRFS_SETGET_STACK_FUNCS(stack_inode_mode, struct btrfs_inode_item, mode, 32);
1734BTRFS_SETGET_STACK_FUNCS(stack_inode_rdev, struct btrfs_inode_item, rdev, 64);
1735BTRFS_SETGET_STACK_FUNCS(stack_inode_flags, struct btrfs_inode_item, flags, 64);
1736
1737BTRFS_SETGET_STACK_FUNCS(stack_timespec_sec, struct btrfs_timespec, sec, 64);
1738BTRFS_SETGET_STACK_FUNCS(stack_timespec_nsec, struct btrfs_timespec, nsec, 32);
1739
1740static void fill_stack_inode_item(struct btrfs_trans_handle *trans, 1720static void fill_stack_inode_item(struct btrfs_trans_handle *trans,
1741 struct btrfs_inode_item *inode_item, 1721 struct btrfs_inode_item *inode_item,
1742 struct inode *inode) 1722 struct inode *inode)
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 6b092a1c4e37..56fcf8439f42 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -1413,11 +1413,11 @@ int btrfs_add_log_tree(struct btrfs_trans_handle *trans,
1413 log_root->root_key.offset = root->root_key.objectid; 1413 log_root->root_key.offset = root->root_key.objectid;
1414 1414
1415 inode_item = &log_root->root_item.inode; 1415 inode_item = &log_root->root_item.inode;
1416 inode_item->generation = cpu_to_le64(1); 1416 btrfs_set_stack_inode_generation(inode_item, 1);
1417 inode_item->size = cpu_to_le64(3); 1417 btrfs_set_stack_inode_size(inode_item, 3);
1418 inode_item->nlink = cpu_to_le32(1); 1418 btrfs_set_stack_inode_nlink(inode_item, 1);
1419 inode_item->nbytes = cpu_to_le64(root->leafsize); 1419 btrfs_set_stack_inode_nbytes(inode_item, root->leafsize);
1420 inode_item->mode = cpu_to_le32(S_IFDIR | 0755); 1420 btrfs_set_stack_inode_mode(inode_item, S_IFDIR | 0755);
1421 1421
1422 btrfs_set_root_node(&log_root->root_item, log_root->node); 1422 btrfs_set_root_node(&log_root->root_item, log_root->node);
1423 1423
@@ -2575,7 +2575,7 @@ int open_ctree(struct super_block *sb,
2575 sb->s_blocksize = sectorsize; 2575 sb->s_blocksize = sectorsize;
2576 sb->s_blocksize_bits = blksize_bits(sectorsize); 2576 sb->s_blocksize_bits = blksize_bits(sectorsize);
2577 2577
2578 if (disk_super->magic != cpu_to_le64(BTRFS_MAGIC)) { 2578 if (btrfs_super_magic(disk_super) != BTRFS_MAGIC) {
2579 printk(KERN_INFO "btrfs: valid FS not found on %s\n", sb->s_id); 2579 printk(KERN_INFO "btrfs: valid FS not found on %s\n", sb->s_id);
2580 goto fail_sb_buffer; 2580 goto fail_sb_buffer;
2581 } 2581 }
@@ -2991,7 +2991,7 @@ struct buffer_head *btrfs_read_dev_super(struct block_device *bdev)
2991 2991
2992 super = (struct btrfs_super_block *)bh->b_data; 2992 super = (struct btrfs_super_block *)bh->b_data;
2993 if (btrfs_super_bytenr(super) != bytenr || 2993 if (btrfs_super_bytenr(super) != bytenr ||
2994 super->magic != cpu_to_le64(BTRFS_MAGIC)) { 2994 btrfs_super_magic(super) != BTRFS_MAGIC) {
2995 brelse(bh); 2995 brelse(bh);
2996 continue; 2996 continue;
2997 } 2997 }
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 841044b80658..f856c97952db 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -436,15 +436,15 @@ static noinline int create_subvol(struct inode *dir,
436 memset(&root_item, 0, sizeof(root_item)); 436 memset(&root_item, 0, sizeof(root_item));
437 437
438 inode_item = &root_item.inode; 438 inode_item = &root_item.inode;
439 inode_item->generation = cpu_to_le64(1); 439 btrfs_set_stack_inode_generation(inode_item, 1);
440 inode_item->size = cpu_to_le64(3); 440 btrfs_set_stack_inode_size(inode_item, 3);
441 inode_item->nlink = cpu_to_le32(1); 441 btrfs_set_stack_inode_nlink(inode_item, 1);
442 inode_item->nbytes = cpu_to_le64(root->leafsize); 442 btrfs_set_stack_inode_nbytes(inode_item, root->leafsize);
443 inode_item->mode = cpu_to_le32(S_IFDIR | 0755); 443 btrfs_set_stack_inode_mode(inode_item, S_IFDIR | 0755);
444 444
445 root_item.flags = 0; 445 btrfs_set_root_flags(&root_item, 0);
446 root_item.byte_limit = 0; 446 btrfs_set_root_limit(&root_item, 0);
447 inode_item->flags = cpu_to_le64(BTRFS_INODE_ROOT_ITEM_INIT); 447 btrfs_set_stack_inode_flags(inode_item, BTRFS_INODE_ROOT_ITEM_INIT);
448 448
449 btrfs_set_root_bytenr(&root_item, leaf->start); 449 btrfs_set_root_bytenr(&root_item, leaf->start);
450 btrfs_set_root_generation(&root_item, trans->transid); 450 btrfs_set_root_generation(&root_item, trans->transid);
@@ -457,8 +457,8 @@ static noinline int create_subvol(struct inode *dir,
457 btrfs_root_generation(&root_item)); 457 btrfs_root_generation(&root_item));
458 uuid_le_gen(&new_uuid); 458 uuid_le_gen(&new_uuid);
459 memcpy(root_item.uuid, new_uuid.b, BTRFS_UUID_SIZE); 459 memcpy(root_item.uuid, new_uuid.b, BTRFS_UUID_SIZE);
460 root_item.otime.sec = cpu_to_le64(cur_time.tv_sec); 460 btrfs_set_stack_timespec_sec(&root_item.otime, cur_time.tv_sec);
461 root_item.otime.nsec = cpu_to_le32(cur_time.tv_nsec); 461 btrfs_set_stack_timespec_nsec(&root_item.otime, cur_time.tv_nsec);
462 root_item.ctime = root_item.otime; 462 root_item.ctime = root_item.otime;
463 btrfs_set_root_ctransid(&root_item, trans->transid); 463 btrfs_set_root_ctransid(&root_item, trans->transid);
464 btrfs_set_root_otransid(&root_item, trans->transid); 464 btrfs_set_root_otransid(&root_item, trans->transid);
@@ -4011,10 +4011,10 @@ static long btrfs_ioctl_set_received_subvol(struct file *file,
4011 memcpy(root_item->received_uuid, sa->uuid, BTRFS_UUID_SIZE); 4011 memcpy(root_item->received_uuid, sa->uuid, BTRFS_UUID_SIZE);
4012 btrfs_set_root_stransid(root_item, sa->stransid); 4012 btrfs_set_root_stransid(root_item, sa->stransid);
4013 btrfs_set_root_rtransid(root_item, sa->rtransid); 4013 btrfs_set_root_rtransid(root_item, sa->rtransid);
4014 root_item->stime.sec = cpu_to_le64(sa->stime.sec); 4014 btrfs_set_stack_timespec_sec(&root_item->stime, sa->stime.sec);
4015 root_item->stime.nsec = cpu_to_le32(sa->stime.nsec); 4015 btrfs_set_stack_timespec_nsec(&root_item->stime, sa->stime.nsec);
4016 root_item->rtime.sec = cpu_to_le64(sa->rtime.sec); 4016 btrfs_set_stack_timespec_sec(&root_item->rtime, sa->rtime.sec);
4017 root_item->rtime.nsec = cpu_to_le32(sa->rtime.nsec); 4017 btrfs_set_stack_timespec_nsec(&root_item->rtime, sa->rtime.nsec);
4018 4018
4019 ret = btrfs_update_root(trans, root->fs_info->tree_root, 4019 ret = btrfs_update_root(trans, root->fs_info->tree_root,
4020 &root->root_key, &root->root_item); 4020 &root->root_key, &root->root_item);
diff --git a/fs/btrfs/root-tree.c b/fs/btrfs/root-tree.c
index ffb1036ef10d..70193d0e7058 100644
--- a/fs/btrfs/root-tree.c
+++ b/fs/btrfs/root-tree.c
@@ -490,13 +490,13 @@ again:
490 */ 490 */
491void btrfs_check_and_init_root_item(struct btrfs_root_item *root_item) 491void btrfs_check_and_init_root_item(struct btrfs_root_item *root_item)
492{ 492{
493 u64 inode_flags = le64_to_cpu(root_item->inode.flags); 493 u64 inode_flags = btrfs_stack_inode_flags(&root_item->inode);
494 494
495 if (!(inode_flags & BTRFS_INODE_ROOT_ITEM_INIT)) { 495 if (!(inode_flags & BTRFS_INODE_ROOT_ITEM_INIT)) {
496 inode_flags |= BTRFS_INODE_ROOT_ITEM_INIT; 496 inode_flags |= BTRFS_INODE_ROOT_ITEM_INIT;
497 root_item->inode.flags = cpu_to_le64(inode_flags); 497 btrfs_set_stack_inode_flags(&root_item->inode, inode_flags);
498 root_item->flags = 0; 498 btrfs_set_root_flags(root_item, 0);
499 root_item->byte_limit = 0; 499 btrfs_set_root_limit(root_item, 0);
500 } 500 }
501} 501}
502 502
@@ -507,8 +507,8 @@ void btrfs_update_root_times(struct btrfs_trans_handle *trans,
507 struct timespec ct = CURRENT_TIME; 507 struct timespec ct = CURRENT_TIME;
508 508
509 spin_lock(&root->root_item_lock); 509 spin_lock(&root->root_item_lock);
510 item->ctransid = cpu_to_le64(trans->transid); 510 btrfs_set_root_ctransid(item, trans->transid);
511 item->ctime.sec = cpu_to_le64(ct.tv_sec); 511 btrfs_set_stack_timespec_sec(&item->ctime, ct.tv_sec);
512 item->ctime.nsec = cpu_to_le32(ct.tv_nsec); 512 btrfs_set_stack_timespec_nsec(&item->ctime, ct.tv_nsec);
513 spin_unlock(&root->root_item_lock); 513 spin_unlock(&root->root_item_lock);
514} 514}
diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c
index 64a157becbe5..266f24febce3 100644
--- a/fs/btrfs/scrub.c
+++ b/fs/btrfs/scrub.c
@@ -1345,12 +1345,12 @@ static void scrub_recheck_block_checksum(struct btrfs_fs_info *fs_info,
1345 mapped_buffer = kmap_atomic(sblock->pagev[0]->page); 1345 mapped_buffer = kmap_atomic(sblock->pagev[0]->page);
1346 h = (struct btrfs_header *)mapped_buffer; 1346 h = (struct btrfs_header *)mapped_buffer;
1347 1347
1348 if (sblock->pagev[0]->logical != le64_to_cpu(h->bytenr) || 1348 if (sblock->pagev[0]->logical != btrfs_stack_header_bytenr(h) ||
1349 memcmp(h->fsid, fs_info->fsid, BTRFS_UUID_SIZE) || 1349 memcmp(h->fsid, fs_info->fsid, BTRFS_UUID_SIZE) ||
1350 memcmp(h->chunk_tree_uuid, fs_info->chunk_tree_uuid, 1350 memcmp(h->chunk_tree_uuid, fs_info->chunk_tree_uuid,
1351 BTRFS_UUID_SIZE)) { 1351 BTRFS_UUID_SIZE)) {
1352 sblock->header_error = 1; 1352 sblock->header_error = 1;
1353 } else if (generation != le64_to_cpu(h->generation)) { 1353 } else if (generation != btrfs_stack_header_generation(h)) {
1354 sblock->header_error = 1; 1354 sblock->header_error = 1;
1355 sblock->generation_error = 1; 1355 sblock->generation_error = 1;
1356 } 1356 }
@@ -1720,10 +1720,10 @@ static int scrub_checksum_tree_block(struct scrub_block *sblock)
1720 * b) the page is already kmapped 1720 * b) the page is already kmapped
1721 */ 1721 */
1722 1722
1723 if (sblock->pagev[0]->logical != le64_to_cpu(h->bytenr)) 1723 if (sblock->pagev[0]->logical != btrfs_stack_header_bytenr(h))
1724 ++fail; 1724 ++fail;
1725 1725
1726 if (sblock->pagev[0]->generation != le64_to_cpu(h->generation)) 1726 if (sblock->pagev[0]->generation != btrfs_stack_header_generation(h))
1727 ++fail; 1727 ++fail;
1728 1728
1729 if (memcmp(h->fsid, fs_info->fsid, BTRFS_UUID_SIZE)) 1729 if (memcmp(h->fsid, fs_info->fsid, BTRFS_UUID_SIZE))
@@ -1786,10 +1786,10 @@ static int scrub_checksum_super(struct scrub_block *sblock)
1786 s = (struct btrfs_super_block *)mapped_buffer; 1786 s = (struct btrfs_super_block *)mapped_buffer;
1787 memcpy(on_disk_csum, s->csum, sctx->csum_size); 1787 memcpy(on_disk_csum, s->csum, sctx->csum_size);
1788 1788
1789 if (sblock->pagev[0]->logical != le64_to_cpu(s->bytenr)) 1789 if (sblock->pagev[0]->logical != btrfs_super_bytenr(s))
1790 ++fail_cor; 1790 ++fail_cor;
1791 1791
1792 if (sblock->pagev[0]->generation != le64_to_cpu(s->generation)) 1792 if (sblock->pagev[0]->generation != btrfs_super_generation(s))
1793 ++fail_gen; 1793 ++fail_gen;
1794 1794
1795 if (memcmp(s->fsid, fs_info->fsid, BTRFS_UUID_SIZE)) 1795 if (memcmp(s->fsid, fs_info->fsid, BTRFS_UUID_SIZE))
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index af1931a5960d..18f7e71d1593 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -1225,8 +1225,8 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
1225 btrfs_set_root_stransid(new_root_item, 0); 1225 btrfs_set_root_stransid(new_root_item, 0);
1226 btrfs_set_root_rtransid(new_root_item, 0); 1226 btrfs_set_root_rtransid(new_root_item, 0);
1227 } 1227 }
1228 new_root_item->otime.sec = cpu_to_le64(cur_time.tv_sec); 1228 btrfs_set_stack_timespec_sec(&new_root_item->otime, cur_time.tv_sec);
1229 new_root_item->otime.nsec = cpu_to_le32(cur_time.tv_nsec); 1229 btrfs_set_stack_timespec_nsec(&new_root_item->otime, cur_time.tv_nsec);
1230 btrfs_set_root_otransid(new_root_item, trans->transid); 1230 btrfs_set_root_otransid(new_root_item, trans->transid);
1231 1231
1232 old = btrfs_lock_root_node(root); 1232 old = btrfs_lock_root_node(root);
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index 4c1dd540631e..557a7438f929 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -865,7 +865,7 @@ int btrfs_scan_one_device(const char *path, fmode_t flags, void *holder,
865 disk_super = p + (bytenr & ~PAGE_CACHE_MASK); 865 disk_super = p + (bytenr & ~PAGE_CACHE_MASK);
866 866
867 if (btrfs_super_bytenr(disk_super) != bytenr || 867 if (btrfs_super_bytenr(disk_super) != bytenr ||
868 disk_super->magic != cpu_to_le64(BTRFS_MAGIC)) 868 btrfs_super_magic(disk_super) != BTRFS_MAGIC)
869 goto error_unmap; 869 goto error_unmap;
870 870
871 devid = btrfs_stack_device_id(&disk_super->dev_item); 871 devid = btrfs_stack_device_id(&disk_super->dev_item);