Lines Matching refs:eb

122 				 struct extent_buffer *eb, u64 parent_transid,  in verify_parent_transid()  argument
128 if (!parent_transid || btrfs_header_generation(eb) == parent_transid) in verify_parent_transid()
134 lock_extent(io_tree, eb->start, eb->start + eb->len - 1, &cached_state); in verify_parent_transid()
135 if (extent_buffer_uptodate(eb) && in verify_parent_transid()
136 btrfs_header_generation(eb) == parent_transid) { in verify_parent_transid()
140 btrfs_err_rl(eb->fs_info, in verify_parent_transid()
142 eb->start, eb->read_mirror, in verify_parent_transid()
143 parent_transid, btrfs_header_generation(eb)); in verify_parent_transid()
145 clear_extent_buffer_uptodate(eb); in verify_parent_transid()
147 unlock_extent(io_tree, eb->start, eb->start + eb->len - 1, in verify_parent_transid()
191 int btrfs_verify_level_key(struct extent_buffer *eb, int level, in btrfs_verify_level_key() argument
194 struct btrfs_fs_info *fs_info = eb->fs_info; in btrfs_verify_level_key()
199 found_level = btrfs_header_level(eb); in btrfs_verify_level_key()
205 eb->start, level, found_level); in btrfs_verify_level_key()
218 if (btrfs_header_generation(eb) > fs_info->last_trans_committed) in btrfs_verify_level_key()
222 if (btrfs_header_nritems(eb) == 0) { in btrfs_verify_level_key()
225 eb->start); in btrfs_verify_level_key()
231 btrfs_node_key_to_cpu(eb, &found_key, 0); in btrfs_verify_level_key()
233 btrfs_item_key_to_cpu(eb, &found_key, 0); in btrfs_verify_level_key()
241 eb->start, parent_transid, first_key->objectid, in btrfs_verify_level_key()
257 int btrfs_read_extent_buffer(struct extent_buffer *eb, in btrfs_read_extent_buffer() argument
261 struct btrfs_fs_info *fs_info = eb->fs_info; in btrfs_read_extent_buffer()
271 clear_bit(EXTENT_BUFFER_CORRUPT, &eb->bflags); in btrfs_read_extent_buffer()
272 ret = read_extent_buffer_pages(eb, WAIT_COMPLETE, mirror_num); in btrfs_read_extent_buffer()
274 if (verify_parent_transid(io_tree, eb, in btrfs_read_extent_buffer()
277 else if (btrfs_verify_level_key(eb, level, in btrfs_read_extent_buffer()
285 eb->start, eb->len); in btrfs_read_extent_buffer()
291 failed_mirror = eb->read_mirror; in btrfs_read_extent_buffer()
303 btrfs_repair_eb_io_failure(eb, failed_mirror); in btrfs_read_extent_buffer()
308 static int csum_one_extent_buffer(struct extent_buffer *eb) in csum_one_extent_buffer() argument
310 struct btrfs_fs_info *fs_info = eb->fs_info; in csum_one_extent_buffer()
314 ASSERT(memcmp_extent_buffer(eb, fs_info->fs_devices->metadata_uuid, in csum_one_extent_buffer()
317 csum_tree_block(eb, result); in csum_one_extent_buffer()
319 if (btrfs_header_level(eb)) in csum_one_extent_buffer()
320 ret = btrfs_check_node(eb); in csum_one_extent_buffer()
322 ret = btrfs_check_leaf_full(eb); in csum_one_extent_buffer()
331 if (unlikely(btrfs_header_generation(eb) <= fs_info->last_trans_committed)) { in csum_one_extent_buffer()
335 eb->start, btrfs_header_generation(eb), in csum_one_extent_buffer()
339 write_extent_buffer(eb, result, 0, fs_info->csum_size); in csum_one_extent_buffer()
344 btrfs_print_tree(eb, 0); in csum_one_extent_buffer()
346 eb->start); in csum_one_extent_buffer()
362 struct extent_buffer *eb; in csum_dirty_subpage_buffers() local
365 eb = find_extent_buffer(fs_info, cur); in csum_dirty_subpage_buffers()
370 if (WARN_ON(!eb)) in csum_dirty_subpage_buffers()
373 if (WARN_ON(cur != btrfs_header_bytenr(eb))) { in csum_dirty_subpage_buffers()
374 free_extent_buffer(eb); in csum_dirty_subpage_buffers()
378 free_extent_buffer(eb); in csum_dirty_subpage_buffers()
382 ret = csum_one_extent_buffer(eb); in csum_dirty_subpage_buffers()
383 free_extent_buffer(eb); in csum_dirty_subpage_buffers()
400 struct extent_buffer *eb; in csum_dirty_buffer() local
405 eb = (struct extent_buffer *)page->private; in csum_dirty_buffer()
406 if (page != eb->pages[0]) in csum_dirty_buffer()
409 found_start = btrfs_header_bytenr(eb); in csum_dirty_buffer()
411 if (test_bit(EXTENT_BUFFER_NO_CHECK, &eb->bflags)) { in csum_dirty_buffer()
425 return csum_one_extent_buffer(eb); in csum_dirty_buffer()
428 static int check_tree_block_fsid(struct extent_buffer *eb) in check_tree_block_fsid() argument
430 struct btrfs_fs_info *fs_info = eb->fs_info; in check_tree_block_fsid()
435 read_extent_buffer(eb, fsid, offsetof(struct btrfs_header, fsid), in check_tree_block_fsid()
458 static int validate_extent_buffer(struct extent_buffer *eb) in validate_extent_buffer() argument
460 struct btrfs_fs_info *fs_info = eb->fs_info; in validate_extent_buffer()
468 found_start = btrfs_header_bytenr(eb); in validate_extent_buffer()
469 if (found_start != eb->start) { in validate_extent_buffer()
472 eb->read_mirror, eb->start, found_start); in validate_extent_buffer()
476 if (check_tree_block_fsid(eb)) { in validate_extent_buffer()
478 eb->start, eb->read_mirror); in validate_extent_buffer()
482 found_level = btrfs_header_level(eb); in validate_extent_buffer()
486 eb->read_mirror, btrfs_header_level(eb), eb->start); in validate_extent_buffer()
491 csum_tree_block(eb, result); in validate_extent_buffer()
492 header_csum = page_address(eb->pages[0]) + in validate_extent_buffer()
493 get_eb_offset_in_page(eb, offsetof(struct btrfs_header, csum)); in validate_extent_buffer()
498 eb->start, eb->read_mirror, in validate_extent_buffer()
501 btrfs_header_level(eb)); in validate_extent_buffer()
511 if (found_level == 0 && btrfs_check_leaf_full(eb)) { in validate_extent_buffer()
512 set_bit(EXTENT_BUFFER_CORRUPT, &eb->bflags); in validate_extent_buffer()
516 if (found_level > 0 && btrfs_check_node(eb)) in validate_extent_buffer()
520 set_extent_buffer_uptodate(eb); in validate_extent_buffer()
524 eb->start, eb->read_mirror); in validate_extent_buffer()
533 struct extent_buffer *eb; in validate_subpage_buffer() local
544 eb = find_extent_buffer(fs_info, start); in validate_subpage_buffer()
549 ASSERT(eb); in validate_subpage_buffer()
551 reads_done = atomic_dec_and_test(&eb->io_pages); in validate_subpage_buffer()
555 eb->read_mirror = mirror; in validate_subpage_buffer()
556 if (test_bit(EXTENT_BUFFER_READ_ERR, &eb->bflags)) { in validate_subpage_buffer()
560 ret = validate_extent_buffer(eb); in validate_subpage_buffer()
564 set_extent_buffer_uptodate(eb); in validate_subpage_buffer()
566 free_extent_buffer(eb); in validate_subpage_buffer()
573 atomic_inc(&eb->io_pages); in validate_subpage_buffer()
574 clear_extent_buffer_uptodate(eb); in validate_subpage_buffer()
575 free_extent_buffer(eb); in validate_subpage_buffer()
583 struct extent_buffer *eb; in btrfs_validate_metadata_buffer() local
592 eb = (struct extent_buffer *)page->private; in btrfs_validate_metadata_buffer()
598 atomic_inc(&eb->refs); in btrfs_validate_metadata_buffer()
600 reads_done = atomic_dec_and_test(&eb->io_pages); in btrfs_validate_metadata_buffer()
604 eb->read_mirror = mirror; in btrfs_validate_metadata_buffer()
605 if (test_bit(EXTENT_BUFFER_READ_ERR, &eb->bflags)) { in btrfs_validate_metadata_buffer()
609 ret = validate_extent_buffer(eb); in btrfs_validate_metadata_buffer()
617 atomic_inc(&eb->io_pages); in btrfs_validate_metadata_buffer()
618 clear_extent_buffer_uptodate(eb); in btrfs_validate_metadata_buffer()
620 free_extent_buffer(eb); in btrfs_validate_metadata_buffer()
856 struct extent_buffer *eb; in btree_dirty_folio() local
861 eb = folio_get_private(folio); in btree_dirty_folio()
862 BUG_ON(!eb); in btree_dirty_folio()
863 BUG_ON(!test_bit(EXTENT_BUFFER_DIRTY, &eb->bflags)); in btree_dirty_folio()
864 BUG_ON(!atomic_read(&eb->refs)); in btree_dirty_folio()
865 btrfs_assert_tree_write_locked(eb); in btree_dirty_folio()
885 eb = find_extent_buffer(fs_info, cur); in btree_dirty_folio()
886 ASSERT(eb); in btree_dirty_folio()
887 ASSERT(test_bit(EXTENT_BUFFER_DIRTY, &eb->bflags)); in btree_dirty_folio()
888 ASSERT(atomic_read(&eb->refs)); in btree_dirty_folio()
889 btrfs_assert_tree_write_locked(eb); in btree_dirty_folio()
890 free_extent_buffer(eb); in btree_dirty_folio()
5041 struct extent_buffer *eb; in btrfs_destroy_marked_extents() local
5053 eb = find_extent_buffer(fs_info, start); in btrfs_destroy_marked_extents()
5055 if (!eb) in btrfs_destroy_marked_extents()
5057 wait_on_extent_buffer_writeback(eb); in btrfs_destroy_marked_extents()
5060 &eb->bflags)) in btrfs_destroy_marked_extents()
5061 clear_extent_buffer_dirty(eb); in btrfs_destroy_marked_extents()
5062 free_extent_buffer_stale(eb); in btrfs_destroy_marked_extents()