Lines Matching full:leaf

10  * The objective is to do leaf/node validation checks when tree block is read
40 * @type: leaf or node
41 * @identifier: the necessary info to locate the leaf/node.
53 * Append generic "corrupt leaf/node root=%llu block=%llu slot=%d: " to @fmt.
72 btrfs_header_level(eb) == 0 ? "leaf" : "node", in generic_err()
99 btrfs_header_level(eb) == 0 ? "leaf" : "node", in file_extent_err()
109 #define CHECK_FE_ALIGNED(leaf, slot, fi, name, alignment) \ argument
111 if (unlikely(!IS_ALIGNED(btrfs_file_extent_##name((leaf), (fi)), \
113 file_extent_err((leaf), (slot), \
115 (#name), btrfs_file_extent_##name((leaf), (fi)), \
117 (!IS_ALIGNED(btrfs_file_extent_##name((leaf), (fi)), (alignment))); \
120 static u64 file_extent_end(struct extent_buffer *leaf, in file_extent_end() argument
127 if (btrfs_file_extent_type(leaf, extent) == BTRFS_FILE_EXTENT_INLINE) { in file_extent_end()
128 len = btrfs_file_extent_ram_bytes(leaf, extent); in file_extent_end()
129 end = ALIGN(key->offset + len, leaf->fs_info->sectorsize); in file_extent_end()
131 len = btrfs_file_extent_num_bytes(leaf, extent); in file_extent_end()
159 btrfs_header_level(eb) == 0 ? "leaf" : "node", in dir_item_err()
174 static bool check_prev_ino(struct extent_buffer *leaf, in check_prev_ino() argument
193 if (!is_fstree(btrfs_header_owner(leaf))) in check_prev_ino()
200 dir_item_err(leaf, slot, in check_prev_ino()
205 static int check_extent_data_item(struct extent_buffer *leaf, in check_extent_data_item() argument
209 struct btrfs_fs_info *fs_info = leaf->fs_info; in check_extent_data_item()
212 u32 item_size = btrfs_item_size(leaf, slot); in check_extent_data_item()
216 file_extent_err(leaf, slot, in check_extent_data_item()
228 if (unlikely(!check_prev_ino(leaf, key, slot, prev_key))) in check_extent_data_item()
231 fi = btrfs_item_ptr(leaf, slot, struct btrfs_file_extent_item); in check_extent_data_item()
238 file_extent_err(leaf, slot, in check_extent_data_item()
244 if (unlikely(btrfs_file_extent_type(leaf, fi) >= in check_extent_data_item()
246 file_extent_err(leaf, slot, in check_extent_data_item()
248 btrfs_file_extent_type(leaf, fi), in check_extent_data_item()
257 if (unlikely(btrfs_file_extent_compression(leaf, fi) >= in check_extent_data_item()
259 file_extent_err(leaf, slot, in check_extent_data_item()
261 btrfs_file_extent_compression(leaf, fi), in check_extent_data_item()
265 if (unlikely(btrfs_file_extent_encryption(leaf, fi))) { in check_extent_data_item()
266 file_extent_err(leaf, slot, in check_extent_data_item()
268 btrfs_file_extent_encryption(leaf, fi)); in check_extent_data_item()
271 if (btrfs_file_extent_type(leaf, fi) == BTRFS_FILE_EXTENT_INLINE) { in check_extent_data_item()
274 file_extent_err(leaf, slot, in check_extent_data_item()
281 if (btrfs_file_extent_compression(leaf, fi) != in check_extent_data_item()
287 btrfs_file_extent_ram_bytes(leaf, fi))) { in check_extent_data_item()
288 file_extent_err(leaf, slot, in check_extent_data_item()
291 btrfs_file_extent_ram_bytes(leaf, fi)); in check_extent_data_item()
299 file_extent_err(leaf, slot, in check_extent_data_item()
304 if (unlikely(CHECK_FE_ALIGNED(leaf, slot, fi, ram_bytes, sectorsize) || in check_extent_data_item()
305 CHECK_FE_ALIGNED(leaf, slot, fi, disk_bytenr, sectorsize) || in check_extent_data_item()
306 CHECK_FE_ALIGNED(leaf, slot, fi, disk_num_bytes, sectorsize) || in check_extent_data_item()
307 CHECK_FE_ALIGNED(leaf, slot, fi, offset, sectorsize) || in check_extent_data_item()
308 CHECK_FE_ALIGNED(leaf, slot, fi, num_bytes, sectorsize))) in check_extent_data_item()
312 if (unlikely(check_add_overflow(btrfs_file_extent_num_bytes(leaf, fi), in check_extent_data_item()
314 file_extent_err(leaf, slot, in check_extent_data_item()
317 btrfs_file_extent_num_bytes(leaf, fi)); in check_extent_data_item()
322 * Check that no two consecutive file extent items, in the same leaf, in check_extent_data_item()
331 prev_fi = btrfs_item_ptr(leaf, slot - 1, in check_extent_data_item()
333 prev_end = file_extent_end(leaf, prev_key, prev_fi); in check_extent_data_item()
335 file_extent_err(leaf, slot - 1, in check_extent_data_item()
345 static int check_csum_item(struct extent_buffer *leaf, struct btrfs_key *key, in check_csum_item() argument
348 struct btrfs_fs_info *fs_info = leaf->fs_info; in check_csum_item()
353 generic_err(leaf, slot, in check_csum_item()
359 generic_err(leaf, slot, in check_csum_item()
364 if (unlikely(!IS_ALIGNED(btrfs_item_size(leaf, slot), csumsize))) { in check_csum_item()
365 generic_err(leaf, slot, in check_csum_item()
367 btrfs_item_size(leaf, slot), csumsize); in check_csum_item()
374 prev_item_size = btrfs_item_size(leaf, slot - 1); in check_csum_item()
378 generic_err(leaf, slot - 1, in check_csum_item()
391 static int check_inode_key(struct extent_buffer *leaf, struct btrfs_key *key, in check_inode_key() argument
397 btrfs_item_key_to_cpu(leaf, &item_key, slot); in check_inode_key()
413 generic_err(leaf, slot, in check_inode_key()
420 dir_item_err(leaf, slot, in check_inode_key()
431 inode_item_err(leaf, slot, in check_inode_key()
435 dir_item_err(leaf, slot, in check_inode_key()
443 static int check_root_key(struct extent_buffer *leaf, struct btrfs_key *key, in check_root_key() argument
449 btrfs_item_key_to_cpu(leaf, &item_key, slot); in check_root_key()
460 generic_err(leaf, slot, in check_root_key()
469 generic_err(leaf, slot, "invalid root id 0"); in check_root_key()
471 dir_item_err(leaf, slot, in check_root_key()
478 dir_item_err(leaf, slot, in check_root_key()
495 generic_err(leaf, slot, "invalid root id 0 for reloc tree"); in check_root_key()
501 static int check_dir_item(struct extent_buffer *leaf, in check_dir_item() argument
505 struct btrfs_fs_info *fs_info = leaf->fs_info; in check_dir_item()
507 u32 item_size = btrfs_item_size(leaf, slot); in check_dir_item()
510 if (unlikely(!check_prev_ino(leaf, key, slot, prev_key))) in check_dir_item()
513 di = btrfs_item_ptr(leaf, slot, struct btrfs_dir_item); in check_dir_item()
526 dir_item_err(leaf, slot, in check_dir_item()
533 btrfs_dir_item_key_to_cpu(leaf, di, &location_key); in check_dir_item()
535 ret = check_root_key(leaf, &location_key, slot); in check_dir_item()
540 ret = check_inode_key(leaf, &location_key, slot); in check_dir_item()
544 dir_item_err(leaf, slot, in check_dir_item()
552 dir_type = btrfs_dir_ftype(leaf, di); in check_dir_item()
554 dir_item_err(leaf, slot, in check_dir_item()
562 dir_item_err(leaf, slot, in check_dir_item()
569 dir_item_err(leaf, slot, in check_dir_item()
579 name_len = btrfs_dir_name_len(leaf, di); in check_dir_item()
580 data_len = btrfs_dir_data_len(leaf, di); in check_dir_item()
582 dir_item_err(leaf, slot, in check_dir_item()
588 dir_item_err(leaf, slot, in check_dir_item()
596 dir_item_err(leaf, slot, in check_dir_item()
606 dir_item_err(leaf, slot, in check_dir_item()
620 read_extent_buffer(leaf, namebuf, in check_dir_item()
624 dir_item_err(leaf, slot, in check_dir_item()
654 btrfs_header_level(eb) == 0 ? "leaf" : "node", in block_group_err()
660 static int check_block_group_item(struct extent_buffer *leaf, in check_block_group_item() argument
663 struct btrfs_fs_info *fs_info = leaf->fs_info; in check_block_group_item()
665 u32 item_size = btrfs_item_size(leaf, slot); in check_block_group_item()
675 block_group_err(leaf, slot, in check_block_group_item()
681 block_group_err(leaf, slot, in check_block_group_item()
687 read_extent_buffer(leaf, &bgi, btrfs_item_ptr_offset(leaf, slot), in check_block_group_item()
699 block_group_err(leaf, slot, in check_block_group_item()
706 block_group_err(leaf, slot, in check_block_group_item()
714 block_group_err(leaf, slot, in check_block_group_item()
722 block_group_err(leaf, slot, in check_block_group_item()
735 block_group_err(leaf, slot, in check_block_group_item()
748 static void chunk_err(const struct extent_buffer *leaf, in chunk_err() argument
752 const struct btrfs_fs_info *fs_info = leaf->fs_info; in chunk_err()
760 is_sb = (leaf->start == BTRFS_SUPER_INFO_OFFSET); in chunk_err()
767 for (i = 0; i < btrfs_header_nritems(leaf); i++) { in chunk_err()
768 if (btrfs_item_ptr_offset(leaf, i) == in chunk_err()
785 "corrupt leaf: root=%llu block=%llu slot=%d chunk_start=%llu, %pV", in chunk_err()
786 BTRFS_CHUNK_TREE_OBJECTID, leaf->start, slot, in chunk_err()
797 int btrfs_check_chunk_valid(struct extent_buffer *leaf, in btrfs_check_chunk_valid() argument
800 struct btrfs_fs_info *fs_info = leaf->fs_info; in btrfs_check_chunk_valid()
813 length = btrfs_chunk_length(leaf, chunk); in btrfs_check_chunk_valid()
814 stripe_len = btrfs_chunk_stripe_len(leaf, chunk); in btrfs_check_chunk_valid()
815 num_stripes = btrfs_chunk_num_stripes(leaf, chunk); in btrfs_check_chunk_valid()
816 sub_stripes = btrfs_chunk_sub_stripes(leaf, chunk); in btrfs_check_chunk_valid()
817 type = btrfs_chunk_type(leaf, chunk); in btrfs_check_chunk_valid()
823 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
828 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
834 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
840 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
845 if (unlikely(btrfs_chunk_sector_size(leaf, chunk) != fs_info->sectorsize)) { in btrfs_check_chunk_valid()
846 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
848 btrfs_chunk_sector_size(leaf, chunk), in btrfs_check_chunk_valid()
853 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
858 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
864 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
878 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
885 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
889 btrfs_chunk_type(leaf, chunk)); in btrfs_check_chunk_valid()
895 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
901 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
910 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
923 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
945 chunk_err(leaf, chunk, logical, in btrfs_check_chunk_valid()
961 static int check_leaf_chunk_item(struct extent_buffer *leaf, in check_leaf_chunk_item() argument
967 if (unlikely(btrfs_item_size(leaf, slot) < sizeof(struct btrfs_chunk))) { in check_leaf_chunk_item()
968 chunk_err(leaf, chunk, key->offset, in check_leaf_chunk_item()
970 btrfs_item_size(leaf, slot), in check_leaf_chunk_item()
972 BTRFS_LEAF_DATA_SIZE(leaf->fs_info)); in check_leaf_chunk_item()
976 num_stripes = btrfs_chunk_num_stripes(leaf, chunk); in check_leaf_chunk_item()
982 btrfs_item_size(leaf, slot))) { in check_leaf_chunk_item()
983 chunk_err(leaf, chunk, key->offset, in check_leaf_chunk_item()
985 btrfs_item_size(leaf, slot), in check_leaf_chunk_item()
990 return btrfs_check_chunk_valid(leaf, chunk, key->offset); in check_leaf_chunk_item()
1010 btrfs_header_level(eb) == 0 ? "leaf" : "node", in dev_item_err()
1016 static int check_dev_item(struct extent_buffer *leaf, in check_dev_item() argument
1020 const u32 item_size = btrfs_item_size(leaf, slot); in check_dev_item()
1023 dev_item_err(leaf, slot, in check_dev_item()
1030 dev_item_err(leaf, slot, "invalid item size: has %u expect %zu", in check_dev_item()
1035 ditem = btrfs_item_ptr(leaf, slot, struct btrfs_dev_item); in check_dev_item()
1036 if (unlikely(btrfs_device_id(leaf, ditem) != key->offset)) { in check_dev_item()
1037 dev_item_err(leaf, slot, in check_dev_item()
1039 key->offset, btrfs_device_id(leaf, ditem)); in check_dev_item()
1048 if (unlikely(btrfs_device_bytes_used(leaf, ditem) > in check_dev_item()
1049 btrfs_device_total_bytes(leaf, ditem))) { in check_dev_item()
1050 dev_item_err(leaf, slot, in check_dev_item()
1052 btrfs_device_bytes_used(leaf, ditem), in check_dev_item()
1053 btrfs_device_total_bytes(leaf, ditem)); in check_dev_item()
1063 static int check_inode_item(struct extent_buffer *leaf, in check_inode_item() argument
1066 struct btrfs_fs_info *fs_info = leaf->fs_info; in check_inode_item()
1070 const u32 item_size = btrfs_item_size(leaf, slot); in check_inode_item()
1076 ret = check_inode_key(leaf, key, slot); in check_inode_item()
1081 generic_err(leaf, slot, "invalid item size: has %u expect %zu", in check_inode_item()
1086 iitem = btrfs_item_ptr(leaf, slot, struct btrfs_inode_item); in check_inode_item()
1089 if (unlikely(btrfs_inode_generation(leaf, iitem) > super_gen + 1)) { in check_inode_item()
1090 inode_item_err(leaf, slot, in check_inode_item()
1092 btrfs_inode_generation(leaf, iitem), in check_inode_item()
1097 if (unlikely(btrfs_inode_transid(leaf, iitem) > super_gen + 1)) { in check_inode_item()
1098 inode_item_err(leaf, slot, in check_inode_item()
1100 btrfs_inode_transid(leaf, iitem), super_gen + 1); in check_inode_item()
1109 mode = btrfs_inode_mode(leaf, iitem); in check_inode_item()
1111 inode_item_err(leaf, slot, in check_inode_item()
1124 inode_item_err(leaf, slot, in check_inode_item()
1130 if (unlikely(S_ISDIR(mode) && btrfs_inode_nlink(leaf, iitem) > 1)) { in check_inode_item()
1131 inode_item_err(leaf, slot, in check_inode_item()
1133 btrfs_inode_nlink(leaf, iitem)); in check_inode_item()
1136 btrfs_inode_split_flags(btrfs_inode_flags(leaf, iitem), &flags, &ro_flags); in check_inode_item()
1138 inode_item_err(leaf, slot, in check_inode_item()
1144 inode_item_err(leaf, slot, in check_inode_item()
1152 static int check_root_item(struct extent_buffer *leaf, struct btrfs_key *key, in check_root_item() argument
1155 struct btrfs_fs_info *fs_info = leaf->fs_info; in check_root_item()
1161 ret = check_root_key(leaf, key, slot); in check_root_item()
1165 if (unlikely(btrfs_item_size(leaf, slot) != sizeof(ri) && in check_root_item()
1166 btrfs_item_size(leaf, slot) != in check_root_item()
1168 generic_err(leaf, slot, in check_root_item()
1170 btrfs_item_size(leaf, slot), sizeof(ri), in check_root_item()
1180 read_extent_buffer(leaf, &ri, btrfs_item_ptr_offset(leaf, slot), in check_root_item()
1181 btrfs_item_size(leaf, slot)); in check_root_item()
1186 generic_err(leaf, slot, in check_root_item()
1194 generic_err(leaf, slot, in check_root_item()
1202 generic_err(leaf, slot, in check_root_item()
1211 generic_err(leaf, slot, in check_root_item()
1217 generic_err(leaf, slot, in check_root_item()
1223 generic_err(leaf, slot, in check_root_item()
1231 generic_err(leaf, slot, in check_root_item()
1265 btrfs_header_level(eb) == 0 ? "leaf" : "node", in extent_err()
1270 static int check_extent_item(struct extent_buffer *leaf, in check_extent_item() argument
1274 struct btrfs_fs_info *fs_info = leaf->fs_info; in check_extent_item()
1279 const u32 item_size = btrfs_item_size(leaf, slot); in check_extent_item()
1289 generic_err(leaf, slot, in check_extent_item()
1295 generic_err(leaf, slot, in check_extent_item()
1304 extent_err(leaf, slot, in check_extent_item()
1342 extent_err(leaf, slot, in check_extent_item()
1348 end = item_size + btrfs_item_ptr_offset(leaf, slot); in check_extent_item()
1351 ei = btrfs_item_ptr(leaf, slot, struct btrfs_extent_item); in check_extent_item()
1352 flags = btrfs_extent_flags(leaf, ei); in check_extent_item()
1353 total_refs = btrfs_extent_refs(leaf, ei); in check_extent_item()
1354 generation = btrfs_extent_generation(leaf, ei); in check_extent_item()
1357 extent_err(leaf, slot, in check_extent_item()
1365 extent_err(leaf, slot, in check_extent_item()
1375 extent_err(leaf, slot, in check_extent_item()
1382 extent_err(leaf, slot, in check_extent_item()
1388 extent_err(leaf, slot, in check_extent_item()
1394 extent_err(leaf, slot, in check_extent_item()
1406 if (unlikely(btrfs_tree_block_level(leaf, info) >= BTRFS_MAX_LEVEL)) { in check_extent_item()
1407 extent_err(leaf, slot, in check_extent_item()
1409 btrfs_tree_block_level(leaf, info), in check_extent_item()
1427 extent_err(leaf, slot, in check_extent_item()
1433 inline_type = btrfs_extent_inline_ref_type(leaf, iref); in check_extent_item()
1434 inline_offset = btrfs_extent_inline_ref_offset(leaf, iref); in check_extent_item()
1437 extent_err(leaf, slot, in check_extent_item()
1452 extent_err(leaf, slot, in check_extent_item()
1465 dref_offset = btrfs_extent_data_ref_offset(leaf, dref); in check_extent_item()
1467 btrfs_extent_data_ref_root(leaf, dref), in check_extent_item()
1468 btrfs_extent_data_ref_objectid(leaf, dref), in check_extent_item()
1469 btrfs_extent_data_ref_offset(leaf, dref)); in check_extent_item()
1472 extent_err(leaf, slot, in check_extent_item()
1477 inline_refs += btrfs_extent_data_ref_count(leaf, dref); in check_extent_item()
1484 extent_err(leaf, slot, in check_extent_item()
1489 inline_refs += btrfs_shared_data_ref_count(leaf, sref); in check_extent_item()
1495 extent_err(leaf, slot, "unknown inline ref type: %u", in check_extent_item()
1500 extent_err(leaf, slot, in check_extent_item()
1509 extent_err(leaf, slot, in check_extent_item()
1521 extent_err(leaf, slot, in check_extent_item()
1528 extent_err(leaf, slot, in check_extent_item()
1544 extent_err(leaf, slot, in check_extent_item()
1556 static int check_simple_keyed_refs(struct extent_buffer *leaf, in check_simple_keyed_refs() argument
1564 if (unlikely(btrfs_item_size(leaf, slot) != expect_item_size)) { in check_simple_keyed_refs()
1565 generic_err(leaf, slot, in check_simple_keyed_refs()
1567 btrfs_item_size(leaf, slot), in check_simple_keyed_refs()
1571 if (unlikely(!IS_ALIGNED(key->objectid, leaf->fs_info->sectorsize))) { in check_simple_keyed_refs()
1572 generic_err(leaf, slot, in check_simple_keyed_refs()
1574 key->objectid, leaf->fs_info->sectorsize); in check_simple_keyed_refs()
1578 !IS_ALIGNED(key->offset, leaf->fs_info->sectorsize))) { in check_simple_keyed_refs()
1579 extent_err(leaf, slot, in check_simple_keyed_refs()
1581 key->offset, leaf->fs_info->sectorsize); in check_simple_keyed_refs()
1587 static int check_extent_data_ref(struct extent_buffer *leaf, in check_extent_data_ref() argument
1591 unsigned long ptr = btrfs_item_ptr_offset(leaf, slot); in check_extent_data_ref()
1592 const unsigned long end = ptr + btrfs_item_size(leaf, slot); in check_extent_data_ref()
1594 if (unlikely(btrfs_item_size(leaf, slot) % sizeof(*dref) != 0)) { in check_extent_data_ref()
1595 generic_err(leaf, slot, in check_extent_data_ref()
1597 btrfs_item_size(leaf, slot), in check_extent_data_ref()
1601 if (unlikely(!IS_ALIGNED(key->objectid, leaf->fs_info->sectorsize))) { in check_extent_data_ref()
1602 generic_err(leaf, slot, in check_extent_data_ref()
1604 key->objectid, leaf->fs_info->sectorsize); in check_extent_data_ref()
1612 * overflow from the leaf due to hash collisions. in check_extent_data_ref()
1615 offset = btrfs_extent_data_ref_offset(leaf, dref); in check_extent_data_ref()
1616 if (unlikely(!IS_ALIGNED(offset, leaf->fs_info->sectorsize))) { in check_extent_data_ref()
1617 extent_err(leaf, slot, in check_extent_data_ref()
1619 offset, leaf->fs_info->sectorsize); in check_extent_data_ref()
1628 static int check_inode_ref(struct extent_buffer *leaf, in check_inode_ref() argument
1636 if (unlikely(!check_prev_ino(leaf, key, slot, prev_key))) in check_inode_ref()
1639 if (unlikely(btrfs_item_size(leaf, slot) <= sizeof(*iref))) { in check_inode_ref()
1640 inode_ref_err(leaf, slot, in check_inode_ref()
1642 btrfs_item_size(leaf, slot), in check_inode_ref()
1643 sizeof(*iref), BTRFS_LEAF_DATA_SIZE(leaf->fs_info)); in check_inode_ref()
1647 ptr = btrfs_item_ptr_offset(leaf, slot); in check_inode_ref()
1648 end = ptr + btrfs_item_size(leaf, slot); in check_inode_ref()
1653 inode_ref_err(leaf, slot, in check_inode_ref()
1660 namelen = btrfs_inode_ref_name_len(leaf, iref); in check_inode_ref()
1662 inode_ref_err(leaf, slot, in check_inode_ref()
1678 static int check_raid_stripe_extent(const struct extent_buffer *leaf, in check_raid_stripe_extent() argument
1682 btrfs_item_ptr(leaf, slot, struct btrfs_stripe_extent); in check_raid_stripe_extent()
1684 if (unlikely(!IS_ALIGNED(key->objectid, leaf->fs_info->sectorsize))) { in check_raid_stripe_extent()
1685 generic_err(leaf, slot, in check_raid_stripe_extent()
1687 key->objectid, leaf->fs_info->sectorsize); in check_raid_stripe_extent()
1691 if (unlikely(!btrfs_fs_incompat(leaf->fs_info, RAID_STRIPE_TREE))) { in check_raid_stripe_extent()
1692 generic_err(leaf, slot, in check_raid_stripe_extent()
1697 switch (btrfs_stripe_extent_encoding(leaf, stripe_extent)) { in check_raid_stripe_extent()
1708 generic_err(leaf, slot, "invalid raid stripe encoding %u", in check_raid_stripe_extent()
1709 btrfs_stripe_extent_encoding(leaf, stripe_extent)); in check_raid_stripe_extent()
1719 static enum btrfs_tree_block_status check_leaf_item(struct extent_buffer *leaf, in check_leaf_item() argument
1729 ret = check_extent_data_item(leaf, key, slot, prev_key); in check_leaf_item()
1732 ret = check_csum_item(leaf, key, slot, prev_key); in check_leaf_item()
1737 ret = check_dir_item(leaf, key, prev_key, slot); in check_leaf_item()
1740 ret = check_inode_ref(leaf, key, prev_key, slot); in check_leaf_item()
1743 ret = check_block_group_item(leaf, key, slot); in check_leaf_item()
1746 chunk = btrfs_item_ptr(leaf, slot, struct btrfs_chunk); in check_leaf_item()
1747 ret = check_leaf_chunk_item(leaf, chunk, key, slot); in check_leaf_item()
1750 ret = check_dev_item(leaf, key, slot); in check_leaf_item()
1753 ret = check_inode_item(leaf, key, slot); in check_leaf_item()
1756 ret = check_root_item(leaf, key, slot); in check_leaf_item()
1760 ret = check_extent_item(leaf, key, slot, prev_key); in check_leaf_item()
1765 ret = check_simple_keyed_refs(leaf, key, slot); in check_leaf_item()
1768 ret = check_extent_data_ref(leaf, key, slot); in check_leaf_item()
1771 ret = check_raid_stripe_extent(leaf, key, slot); in check_leaf_item()
1780 enum btrfs_tree_block_status __btrfs_check_leaf(struct extent_buffer *leaf) in __btrfs_check_leaf() argument
1782 struct btrfs_fs_info *fs_info = leaf->fs_info; in __btrfs_check_leaf()
1786 u32 nritems = btrfs_header_nritems(leaf); in __btrfs_check_leaf()
1789 if (unlikely(btrfs_header_level(leaf) != 0)) { in __btrfs_check_leaf()
1790 generic_err(leaf, 0, in __btrfs_check_leaf()
1791 "invalid level for leaf, have %d expect 0", in __btrfs_check_leaf()
1792 btrfs_header_level(leaf)); in __btrfs_check_leaf()
1804 if (nritems == 0 && !btrfs_header_flag(leaf, BTRFS_HEADER_FLAG_RELOC)) { in __btrfs_check_leaf()
1805 u64 owner = btrfs_header_owner(leaf); in __btrfs_check_leaf()
1813 generic_err(leaf, 0, in __btrfs_check_leaf()
1821 generic_err(leaf, 0, in __btrfs_check_leaf()
1831 generic_err(leaf, 0, in __btrfs_check_leaf()
1844 * Check the following things to make sure this is a good leaf, and in __btrfs_check_leaf()
1845 * leaf users won't need to bother with similar sanity checks: in __btrfs_check_leaf()
1849 * No overlap, no hole, all inside the leaf. in __btrfs_check_leaf()
1858 btrfs_item_key_to_cpu(leaf, &key, slot); in __btrfs_check_leaf()
1862 generic_err(leaf, slot, in __btrfs_check_leaf()
1870 item_data_end = (u64)btrfs_item_offset(leaf, slot) + in __btrfs_check_leaf()
1871 btrfs_item_size(leaf, slot); in __btrfs_check_leaf()
1874 * item data starts at the end of the leaf and grows towards the in __btrfs_check_leaf()
1880 item_end_expected = btrfs_item_offset(leaf, in __btrfs_check_leaf()
1883 generic_err(leaf, slot, in __btrfs_check_leaf()
1890 * Check to make sure that we don't point outside of the leaf, in __btrfs_check_leaf()
1892 * all point outside of the leaf. in __btrfs_check_leaf()
1895 generic_err(leaf, slot, in __btrfs_check_leaf()
1896 "slot end outside of leaf, have %llu expect range [0, %u]", in __btrfs_check_leaf()
1902 if (unlikely(btrfs_item_ptr_offset(leaf, slot) < in __btrfs_check_leaf()
1903 btrfs_item_nr_offset(leaf, slot) + sizeof(struct btrfs_item))) { in __btrfs_check_leaf()
1904 generic_err(leaf, slot, in __btrfs_check_leaf()
1906 btrfs_item_nr_offset(leaf, slot) + in __btrfs_check_leaf()
1908 btrfs_item_ptr_offset(leaf, slot)); in __btrfs_check_leaf()
1913 * We only want to do this if WRITTEN is set, otherwise the leaf in __btrfs_check_leaf()
1916 if (btrfs_header_flag(leaf, BTRFS_HEADER_FLAG_WRITTEN)) { in __btrfs_check_leaf()
1923 ret = check_leaf_item(leaf, &key, slot, &prev_key); in __btrfs_check_leaf()
1936 int btrfs_check_leaf(struct extent_buffer *leaf) in btrfs_check_leaf() argument
1940 ret = __btrfs_check_leaf(leaf); in btrfs_check_leaf()
2043 btrfs_header_level(eb) == 0 ? "leaf" : "node", in btrfs_check_eb_owner()
2058 btrfs_header_level(eb) == 0 ? "leaf" : "node", in btrfs_check_eb_owner()