Lines Matching full:leaf
10 * The objective is to do leaf/node validation checks when tree block is read
32 * @type: leaf or node
33 * @identifier: the necessary info to locate the leaf/node.
45 * Append generic "corrupt leaf/node root=%llu block=%llu slot=%d: " to @fmt.
64 btrfs_header_level(eb) == 0 ? "leaf" : "node", in generic_err()
91 btrfs_header_level(eb) == 0 ? "leaf" : "node", in file_extent_err()
101 #define CHECK_FE_ALIGNED(leaf, slot, fi, name, alignment) \ argument
103 if (!IS_ALIGNED(btrfs_file_extent_##name((leaf), (fi)), (alignment))) \
104 file_extent_err((leaf), (slot), \
106 (#name), btrfs_file_extent_##name((leaf), (fi)), \
108 (!IS_ALIGNED(btrfs_file_extent_##name((leaf), (fi)), (alignment))); \
111 static u64 file_extent_end(struct extent_buffer *leaf, in file_extent_end() argument
118 if (btrfs_file_extent_type(leaf, extent) == BTRFS_FILE_EXTENT_INLINE) { in file_extent_end()
119 len = btrfs_file_extent_ram_bytes(leaf, extent); in file_extent_end()
120 end = ALIGN(key->offset + len, leaf->fs_info->sectorsize); in file_extent_end()
122 len = btrfs_file_extent_num_bytes(leaf, extent); in file_extent_end()
150 btrfs_header_level(eb) == 0 ? "leaf" : "node", in dir_item_err()
165 static bool check_prev_ino(struct extent_buffer *leaf, in check_prev_ino() argument
184 if (!is_fstree(btrfs_header_owner(leaf))) in check_prev_ino()
191 dir_item_err(leaf, slot, in check_prev_ino()
196 static int check_extent_data_item(struct extent_buffer *leaf, in check_extent_data_item() argument
200 struct btrfs_fs_info *fs_info = leaf->fs_info; in check_extent_data_item()
203 u32 item_size = btrfs_item_size_nr(leaf, slot); in check_extent_data_item()
207 file_extent_err(leaf, slot, in check_extent_data_item()
219 if (!check_prev_ino(leaf, key, slot, prev_key)) in check_extent_data_item()
222 fi = btrfs_item_ptr(leaf, slot, struct btrfs_file_extent_item); in check_extent_data_item()
229 file_extent_err(leaf, slot, in check_extent_data_item()
235 if (btrfs_file_extent_type(leaf, fi) >= BTRFS_NR_FILE_EXTENT_TYPES) { in check_extent_data_item()
236 file_extent_err(leaf, slot, in check_extent_data_item()
238 btrfs_file_extent_type(leaf, fi), in check_extent_data_item()
247 if (btrfs_file_extent_compression(leaf, fi) >= BTRFS_NR_COMPRESS_TYPES) { in check_extent_data_item()
248 file_extent_err(leaf, slot, in check_extent_data_item()
250 btrfs_file_extent_compression(leaf, fi), in check_extent_data_item()
254 if (btrfs_file_extent_encryption(leaf, fi)) { in check_extent_data_item()
255 file_extent_err(leaf, slot, in check_extent_data_item()
257 btrfs_file_extent_encryption(leaf, fi)); in check_extent_data_item()
260 if (btrfs_file_extent_type(leaf, fi) == BTRFS_FILE_EXTENT_INLINE) { in check_extent_data_item()
263 file_extent_err(leaf, slot, in check_extent_data_item()
270 if (btrfs_file_extent_compression(leaf, fi) != in check_extent_data_item()
276 btrfs_file_extent_ram_bytes(leaf, fi)) { in check_extent_data_item()
277 file_extent_err(leaf, slot, in check_extent_data_item()
280 btrfs_file_extent_ram_bytes(leaf, fi)); in check_extent_data_item()
288 file_extent_err(leaf, slot, in check_extent_data_item()
293 if (CHECK_FE_ALIGNED(leaf, slot, fi, ram_bytes, sectorsize) || in check_extent_data_item()
294 CHECK_FE_ALIGNED(leaf, slot, fi, disk_bytenr, sectorsize) || in check_extent_data_item()
295 CHECK_FE_ALIGNED(leaf, slot, fi, disk_num_bytes, sectorsize) || in check_extent_data_item()
296 CHECK_FE_ALIGNED(leaf, slot, fi, offset, sectorsize) || in check_extent_data_item()
297 CHECK_FE_ALIGNED(leaf, slot, fi, num_bytes, sectorsize)) in check_extent_data_item()
301 if (check_add_overflow(btrfs_file_extent_num_bytes(leaf, fi), in check_extent_data_item()
303 file_extent_err(leaf, slot, in check_extent_data_item()
306 btrfs_file_extent_num_bytes(leaf, fi)); in check_extent_data_item()
311 * Check that no two consecutive file extent items, in the same leaf, in check_extent_data_item()
320 prev_fi = btrfs_item_ptr(leaf, slot - 1, in check_extent_data_item()
322 prev_end = file_extent_end(leaf, prev_key, prev_fi); in check_extent_data_item()
324 file_extent_err(leaf, slot - 1, in check_extent_data_item()
334 static int check_csum_item(struct extent_buffer *leaf, struct btrfs_key *key, in check_csum_item() argument
337 struct btrfs_fs_info *fs_info = leaf->fs_info; in check_csum_item()
342 generic_err(leaf, slot, in check_csum_item()
348 generic_err(leaf, slot, in check_csum_item()
353 if (!IS_ALIGNED(btrfs_item_size_nr(leaf, slot), csumsize)) { in check_csum_item()
354 generic_err(leaf, slot, in check_csum_item()
356 btrfs_item_size_nr(leaf, slot), csumsize); in check_csum_item()
363 prev_item_size = btrfs_item_size_nr(leaf, slot - 1); in check_csum_item()
367 generic_err(leaf, slot - 1, in check_csum_item()
380 static int check_inode_key(struct extent_buffer *leaf, struct btrfs_key *key, in check_inode_key() argument
386 btrfs_item_key_to_cpu(leaf, &item_key, slot); in check_inode_key()
401 generic_err(leaf, slot, in check_inode_key()
408 dir_item_err(leaf, slot, in check_inode_key()
419 inode_item_err(leaf, slot, in check_inode_key()
423 dir_item_err(leaf, slot, in check_inode_key()
431 static int check_root_key(struct extent_buffer *leaf, struct btrfs_key *key, in check_root_key() argument
437 btrfs_item_key_to_cpu(leaf, &item_key, slot); in check_root_key()
443 generic_err(leaf, slot, "invalid root id 0"); in check_root_key()
445 dir_item_err(leaf, slot, in check_root_key()
452 dir_item_err(leaf, slot, in check_root_key()
468 generic_err(leaf, slot, "invalid root id 0 for reloc tree"); in check_root_key()
474 static int check_dir_item(struct extent_buffer *leaf, in check_dir_item() argument
478 struct btrfs_fs_info *fs_info = leaf->fs_info; in check_dir_item()
480 u32 item_size = btrfs_item_size_nr(leaf, slot); in check_dir_item()
483 if (!check_prev_ino(leaf, key, slot, prev_key)) in check_dir_item()
485 di = btrfs_item_ptr(leaf, slot, struct btrfs_dir_item); in check_dir_item()
498 dir_item_err(leaf, slot, in check_dir_item()
505 btrfs_dir_item_key_to_cpu(leaf, di, &location_key); in check_dir_item()
507 ret = check_root_key(leaf, &location_key, slot); in check_dir_item()
512 ret = check_inode_key(leaf, &location_key, slot); in check_dir_item()
516 dir_item_err(leaf, slot, in check_dir_item()
524 dir_type = btrfs_dir_type(leaf, di); in check_dir_item()
526 dir_item_err(leaf, slot, in check_dir_item()
534 dir_item_err(leaf, slot, in check_dir_item()
541 dir_item_err(leaf, slot, in check_dir_item()
551 name_len = btrfs_dir_name_len(leaf, di); in check_dir_item()
552 data_len = btrfs_dir_data_len(leaf, di); in check_dir_item()
554 dir_item_err(leaf, slot, in check_dir_item()
560 dir_item_err(leaf, slot, in check_dir_item()
568 dir_item_err(leaf, slot, in check_dir_item()
578 dir_item_err(leaf, slot, in check_dir_item()
592 read_extent_buffer(leaf, namebuf, in check_dir_item()
596 dir_item_err(leaf, slot, in check_dir_item()
626 btrfs_header_level(eb) == 0 ? "leaf" : "node", in block_group_err()
632 static int check_block_group_item(struct extent_buffer *leaf, in check_block_group_item() argument
636 u32 item_size = btrfs_item_size_nr(leaf, slot); in check_block_group_item()
645 block_group_err(leaf, slot, in check_block_group_item()
651 block_group_err(leaf, slot, in check_block_group_item()
657 read_extent_buffer(leaf, &bgi, btrfs_item_ptr_offset(leaf, slot), in check_block_group_item()
661 block_group_err(leaf, slot, in check_block_group_item()
669 block_group_err(leaf, slot, in check_block_group_item()
677 block_group_err(leaf, slot, in check_block_group_item()
690 block_group_err(leaf, slot, in check_block_group_item()
703 static void chunk_err(const struct extent_buffer *leaf, in chunk_err() argument
707 const struct btrfs_fs_info *fs_info = leaf->fs_info; in chunk_err()
715 is_sb = (leaf->start == BTRFS_SUPER_INFO_OFFSET); in chunk_err()
722 for (i = 0; i < btrfs_header_nritems(leaf); i++) { in chunk_err()
723 if (btrfs_item_ptr_offset(leaf, i) == in chunk_err()
740 "corrupt leaf: root=%llu block=%llu slot=%d chunk_start=%llu, %pV", in chunk_err()
741 BTRFS_CHUNK_TREE_OBJECTID, leaf->start, slot, in chunk_err()
752 int btrfs_check_chunk_valid(struct extent_buffer *leaf, in btrfs_check_chunk_valid() argument
755 struct btrfs_fs_info *fs_info = leaf->fs_info; in btrfs_check_chunk_valid()
768 length = btrfs_chunk_length(leaf, chunk); in btrfs_check_chunk_valid()
769 stripe_len = btrfs_chunk_stripe_len(leaf, chunk); in btrfs_check_chunk_valid()
770 num_stripes = btrfs_chunk_num_stripes(leaf, chunk); in btrfs_check_chunk_valid()
771 sub_stripes = btrfs_chunk_sub_stripes(leaf, chunk); in btrfs_check_chunk_valid()
772 type = btrfs_chunk_type(leaf, chunk); in btrfs_check_chunk_valid()
778 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
783 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
789 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
795 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
800 if (btrfs_chunk_sector_size(leaf, chunk) != fs_info->sectorsize) { in btrfs_check_chunk_valid()
801 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
803 btrfs_chunk_sector_size(leaf, chunk), in btrfs_check_chunk_valid()
808 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
813 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
819 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
826 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
830 btrfs_chunk_type(leaf, chunk)); in btrfs_check_chunk_valid()
836 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
842 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
850 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
863 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
875 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
891 static int check_leaf_chunk_item(struct extent_buffer *leaf, in check_leaf_chunk_item() argument
897 if (btrfs_item_size_nr(leaf, slot) < sizeof(struct btrfs_chunk)) { in check_leaf_chunk_item()
898 chunk_err(leaf, chunk, key->offset, in check_leaf_chunk_item()
900 btrfs_item_size_nr(leaf, slot), in check_leaf_chunk_item()
902 BTRFS_LEAF_DATA_SIZE(leaf->fs_info)); in check_leaf_chunk_item()
906 num_stripes = btrfs_chunk_num_stripes(leaf, chunk); in check_leaf_chunk_item()
912 btrfs_item_size_nr(leaf, slot)) { in check_leaf_chunk_item()
913 chunk_err(leaf, chunk, key->offset, in check_leaf_chunk_item()
915 btrfs_item_size_nr(leaf, slot), in check_leaf_chunk_item()
920 return btrfs_check_chunk_valid(leaf, chunk, key->offset); in check_leaf_chunk_item()
940 btrfs_header_level(eb) == 0 ? "leaf" : "node", in dev_item_err()
946 static int check_dev_item(struct extent_buffer *leaf, in check_dev_item() argument
950 const u32 item_size = btrfs_item_size_nr(leaf, slot); in check_dev_item()
953 dev_item_err(leaf, slot, in check_dev_item()
960 dev_item_err(leaf, slot, "invalid item size: has %u expect %zu", in check_dev_item()
965 ditem = btrfs_item_ptr(leaf, slot, struct btrfs_dev_item); in check_dev_item()
966 if (btrfs_device_id(leaf, ditem) != key->offset) { in check_dev_item()
967 dev_item_err(leaf, slot, in check_dev_item()
969 key->offset, btrfs_device_id(leaf, ditem)); in check_dev_item()
978 if (btrfs_device_bytes_used(leaf, ditem) > in check_dev_item()
979 btrfs_device_total_bytes(leaf, ditem)) { in check_dev_item()
980 dev_item_err(leaf, slot, in check_dev_item()
982 btrfs_device_bytes_used(leaf, ditem), in check_dev_item()
983 btrfs_device_total_bytes(leaf, ditem)); in check_dev_item()
993 static int check_inode_item(struct extent_buffer *leaf, in check_inode_item() argument
996 struct btrfs_fs_info *fs_info = leaf->fs_info; in check_inode_item()
1000 const u32 item_size = btrfs_item_size_nr(leaf, slot); in check_inode_item()
1004 ret = check_inode_key(leaf, key, slot); in check_inode_item()
1009 generic_err(leaf, slot, "invalid item size: has %u expect %zu", in check_inode_item()
1014 iitem = btrfs_item_ptr(leaf, slot, struct btrfs_inode_item); in check_inode_item()
1017 if (btrfs_inode_generation(leaf, iitem) > super_gen + 1) { in check_inode_item()
1018 inode_item_err(leaf, slot, in check_inode_item()
1020 btrfs_inode_generation(leaf, iitem), in check_inode_item()
1025 if (btrfs_inode_transid(leaf, iitem) > super_gen + 1) { in check_inode_item()
1026 inode_item_err(leaf, slot, in check_inode_item()
1028 btrfs_inode_transid(leaf, iitem), super_gen + 1); in check_inode_item()
1037 mode = btrfs_inode_mode(leaf, iitem); in check_inode_item()
1039 inode_item_err(leaf, slot, in check_inode_item()
1052 inode_item_err(leaf, slot, in check_inode_item()
1058 if (S_ISDIR(mode) && btrfs_inode_nlink(leaf, iitem) > 1) { in check_inode_item()
1059 inode_item_err(leaf, slot, in check_inode_item()
1061 btrfs_inode_nlink(leaf, iitem)); in check_inode_item()
1064 if (btrfs_inode_flags(leaf, iitem) & ~BTRFS_INODE_FLAG_MASK) { in check_inode_item()
1065 inode_item_err(leaf, slot, in check_inode_item()
1067 btrfs_inode_flags(leaf, iitem) & in check_inode_item()
1074 static int check_root_item(struct extent_buffer *leaf, struct btrfs_key *key, in check_root_item() argument
1077 struct btrfs_fs_info *fs_info = leaf->fs_info; in check_root_item()
1083 ret = check_root_key(leaf, key, slot); in check_root_item()
1087 if (btrfs_item_size_nr(leaf, slot) != sizeof(ri) && in check_root_item()
1088 btrfs_item_size_nr(leaf, slot) != btrfs_legacy_root_item_size()) { in check_root_item()
1089 generic_err(leaf, slot, in check_root_item()
1091 btrfs_item_size_nr(leaf, slot), sizeof(ri), in check_root_item()
1101 read_extent_buffer(leaf, &ri, btrfs_item_ptr_offset(leaf, slot), in check_root_item()
1102 btrfs_item_size_nr(leaf, slot)); in check_root_item()
1107 generic_err(leaf, slot, in check_root_item()
1115 generic_err(leaf, slot, in check_root_item()
1123 generic_err(leaf, slot, in check_root_item()
1132 generic_err(leaf, slot, in check_root_item()
1138 generic_err(leaf, slot, in check_root_item()
1144 generic_err(leaf, slot, in check_root_item()
1152 generic_err(leaf, slot, in check_root_item()
1186 btrfs_header_level(eb) == 0 ? "leaf" : "node", in extent_err()
1191 static int check_extent_item(struct extent_buffer *leaf, in check_extent_item() argument
1194 struct btrfs_fs_info *fs_info = leaf->fs_info; in check_extent_item()
1199 const u32 item_size = btrfs_item_size_nr(leaf, slot); in check_extent_item()
1207 generic_err(leaf, slot, in check_extent_item()
1213 generic_err(leaf, slot, in check_extent_item()
1222 extent_err(leaf, slot, in check_extent_item()
1248 extent_err(leaf, slot, in check_extent_item()
1254 end = item_size + btrfs_item_ptr_offset(leaf, slot); in check_extent_item()
1257 ei = btrfs_item_ptr(leaf, slot, struct btrfs_extent_item); in check_extent_item()
1258 flags = btrfs_extent_flags(leaf, ei); in check_extent_item()
1259 total_refs = btrfs_extent_refs(leaf, ei); in check_extent_item()
1260 generation = btrfs_extent_generation(leaf, ei); in check_extent_item()
1262 extent_err(leaf, slot, in check_extent_item()
1270 extent_err(leaf, slot, in check_extent_item()
1280 extent_err(leaf, slot, in check_extent_item()
1287 extent_err(leaf, slot, in check_extent_item()
1293 extent_err(leaf, slot, in check_extent_item()
1306 if (btrfs_tree_block_level(leaf, info) >= BTRFS_MAX_LEVEL) { in check_extent_item()
1307 extent_err(leaf, slot, in check_extent_item()
1309 btrfs_tree_block_level(leaf, info), in check_extent_item()
1326 extent_err(leaf, slot, in check_extent_item()
1332 inline_type = btrfs_extent_inline_ref_type(leaf, iref); in check_extent_item()
1333 inline_offset = btrfs_extent_inline_ref_offset(leaf, iref); in check_extent_item()
1335 extent_err(leaf, slot, in check_extent_item()
1349 extent_err(leaf, slot, in check_extent_item()
1362 dref_offset = btrfs_extent_data_ref_offset(leaf, dref); in check_extent_item()
1364 extent_err(leaf, slot, in check_extent_item()
1369 inline_refs += btrfs_extent_data_ref_count(leaf, dref); in check_extent_item()
1375 extent_err(leaf, slot, in check_extent_item()
1380 inline_refs += btrfs_shared_data_ref_count(leaf, sref); in check_extent_item()
1383 extent_err(leaf, slot, "unknown inline ref type: %u", in check_extent_item()
1391 extent_err(leaf, slot, in check_extent_item()
1398 extent_err(leaf, slot, in check_extent_item()
1406 static int check_simple_keyed_refs(struct extent_buffer *leaf, in check_simple_keyed_refs() argument
1414 if (btrfs_item_size_nr(leaf, slot) != expect_item_size) { in check_simple_keyed_refs()
1415 generic_err(leaf, slot, in check_simple_keyed_refs()
1417 btrfs_item_size_nr(leaf, slot), in check_simple_keyed_refs()
1421 if (!IS_ALIGNED(key->objectid, leaf->fs_info->sectorsize)) { in check_simple_keyed_refs()
1422 generic_err(leaf, slot, in check_simple_keyed_refs()
1424 key->objectid, leaf->fs_info->sectorsize); in check_simple_keyed_refs()
1428 !IS_ALIGNED(key->offset, leaf->fs_info->sectorsize)) { in check_simple_keyed_refs()
1429 extent_err(leaf, slot, in check_simple_keyed_refs()
1431 key->offset, leaf->fs_info->sectorsize); in check_simple_keyed_refs()
1437 static int check_extent_data_ref(struct extent_buffer *leaf, in check_extent_data_ref() argument
1441 unsigned long ptr = btrfs_item_ptr_offset(leaf, slot); in check_extent_data_ref()
1442 const unsigned long end = ptr + btrfs_item_size_nr(leaf, slot); in check_extent_data_ref()
1444 if (btrfs_item_size_nr(leaf, slot) % sizeof(*dref) != 0) { in check_extent_data_ref()
1445 generic_err(leaf, slot, in check_extent_data_ref()
1447 btrfs_item_size_nr(leaf, slot), in check_extent_data_ref()
1451 if (!IS_ALIGNED(key->objectid, leaf->fs_info->sectorsize)) { in check_extent_data_ref()
1452 generic_err(leaf, slot, in check_extent_data_ref()
1454 key->objectid, leaf->fs_info->sectorsize); in check_extent_data_ref()
1462 * overflow from the leaf due to hash collisions. in check_extent_data_ref()
1465 offset = btrfs_extent_data_ref_offset(leaf, dref); in check_extent_data_ref()
1466 if (!IS_ALIGNED(offset, leaf->fs_info->sectorsize)) { in check_extent_data_ref()
1467 extent_err(leaf, slot, in check_extent_data_ref()
1469 offset, leaf->fs_info->sectorsize); in check_extent_data_ref()
1478 static int check_inode_ref(struct extent_buffer *leaf, in check_inode_ref() argument
1486 if (!check_prev_ino(leaf, key, slot, prev_key)) in check_inode_ref()
1489 if (btrfs_item_size_nr(leaf, slot) <= sizeof(*iref)) { in check_inode_ref()
1490 inode_ref_err(leaf, slot, in check_inode_ref()
1492 btrfs_item_size_nr(leaf, slot), in check_inode_ref()
1493 sizeof(*iref), BTRFS_LEAF_DATA_SIZE(leaf->fs_info)); in check_inode_ref()
1497 ptr = btrfs_item_ptr_offset(leaf, slot); in check_inode_ref()
1498 end = ptr + btrfs_item_size_nr(leaf, slot); in check_inode_ref()
1503 inode_ref_err(leaf, slot, in check_inode_ref()
1510 namelen = btrfs_inode_ref_name_len(leaf, iref); in check_inode_ref()
1512 inode_ref_err(leaf, slot, in check_inode_ref()
1531 static int check_leaf_item(struct extent_buffer *leaf, in check_leaf_item() argument
1540 ret = check_extent_data_item(leaf, key, slot, prev_key); in check_leaf_item()
1543 ret = check_csum_item(leaf, key, slot, prev_key); in check_leaf_item()
1548 ret = check_dir_item(leaf, key, prev_key, slot); in check_leaf_item()
1551 ret = check_inode_ref(leaf, key, prev_key, slot); in check_leaf_item()
1554 ret = check_block_group_item(leaf, key, slot); in check_leaf_item()
1557 chunk = btrfs_item_ptr(leaf, slot, struct btrfs_chunk); in check_leaf_item()
1558 ret = check_leaf_chunk_item(leaf, chunk, key, slot); in check_leaf_item()
1561 ret = check_dev_item(leaf, key, slot); in check_leaf_item()
1564 ret = check_inode_item(leaf, key, slot); in check_leaf_item()
1567 ret = check_root_item(leaf, key, slot); in check_leaf_item()
1571 ret = check_extent_item(leaf, key, slot); in check_leaf_item()
1576 ret = check_simple_keyed_refs(leaf, key, slot); in check_leaf_item()
1579 ret = check_extent_data_ref(leaf, key, slot); in check_leaf_item()
1585 static int check_leaf(struct extent_buffer *leaf, bool check_item_data) in check_leaf() argument
1587 struct btrfs_fs_info *fs_info = leaf->fs_info; in check_leaf()
1591 u32 nritems = btrfs_header_nritems(leaf); in check_leaf()
1594 if (btrfs_header_level(leaf) != 0) { in check_leaf()
1595 generic_err(leaf, 0, in check_leaf()
1596 "invalid level for leaf, have %d expect 0", in check_leaf()
1597 btrfs_header_level(leaf)); in check_leaf()
1609 if (nritems == 0 && !btrfs_header_flag(leaf, BTRFS_HEADER_FLAG_RELOC)) { in check_leaf()
1610 u64 owner = btrfs_header_owner(leaf); in check_leaf()
1619 generic_err(leaf, 0, in check_leaf()
1626 generic_err(leaf, 0, in check_leaf()
1637 * Check the following things to make sure this is a good leaf, and in check_leaf()
1638 * leaf users won't need to bother with similar sanity checks: in check_leaf()
1642 * No overlap, no hole, all inside the leaf. in check_leaf()
1651 btrfs_item_key_to_cpu(leaf, &key, slot); in check_leaf()
1655 generic_err(leaf, slot, in check_leaf()
1665 * item data starts at the end of the leaf and grows towards the in check_leaf()
1671 item_end_expected = btrfs_item_offset_nr(leaf, in check_leaf()
1673 if (btrfs_item_end_nr(leaf, slot) != item_end_expected) { in check_leaf()
1674 generic_err(leaf, slot, in check_leaf()
1676 btrfs_item_end_nr(leaf, slot), in check_leaf()
1682 * Check to make sure that we don't point outside of the leaf, in check_leaf()
1684 * all point outside of the leaf. in check_leaf()
1686 if (btrfs_item_end_nr(leaf, slot) > in check_leaf()
1688 generic_err(leaf, slot, in check_leaf()
1689 "slot end outside of leaf, have %u expect range [0, %u]", in check_leaf()
1690 btrfs_item_end_nr(leaf, slot), in check_leaf()
1697 btrfs_item_ptr_offset(leaf, slot)) { in check_leaf()
1698 generic_err(leaf, slot, in check_leaf()
1702 btrfs_item_ptr_offset(leaf, slot)); in check_leaf()
1711 ret = check_leaf_item(leaf, &key, slot, &prev_key); in check_leaf()
1724 int btrfs_check_leaf_full(struct extent_buffer *leaf) in btrfs_check_leaf_full() argument
1726 return check_leaf(leaf, true); in btrfs_check_leaf_full()
1730 int btrfs_check_leaf_relaxed(struct extent_buffer *leaf) in btrfs_check_leaf_relaxed() argument
1732 return check_leaf(leaf, false); in btrfs_check_leaf_relaxed()