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()
354 btrfs_header_owner(eb) == BTRFS_TREE_LOG_OBJECTID); in csum_one_extent_buffer()
369 struct extent_buffer *eb; in csum_dirty_subpage_buffers() local
372 eb = find_extent_buffer(fs_info, cur); in csum_dirty_subpage_buffers()
377 if (WARN_ON(!eb)) in csum_dirty_subpage_buffers()
380 if (WARN_ON(cur != btrfs_header_bytenr(eb))) { in csum_dirty_subpage_buffers()
381 free_extent_buffer(eb); in csum_dirty_subpage_buffers()
385 free_extent_buffer(eb); in csum_dirty_subpage_buffers()
389 ret = csum_one_extent_buffer(eb); in csum_dirty_subpage_buffers()
390 free_extent_buffer(eb); in csum_dirty_subpage_buffers()
407 struct extent_buffer *eb; in csum_dirty_buffer() local
412 eb = (struct extent_buffer *)page->private; in csum_dirty_buffer()
413 if (page != eb->pages[0]) in csum_dirty_buffer()
416 found_start = btrfs_header_bytenr(eb); in csum_dirty_buffer()
418 if (test_bit(EXTENT_BUFFER_NO_CHECK, &eb->bflags)) { in csum_dirty_buffer()
432 return csum_one_extent_buffer(eb); in csum_dirty_buffer()
435 static int check_tree_block_fsid(struct extent_buffer *eb) in check_tree_block_fsid() argument
437 struct btrfs_fs_info *fs_info = eb->fs_info; in check_tree_block_fsid()
442 read_extent_buffer(eb, fsid, offsetof(struct btrfs_header, fsid), in check_tree_block_fsid()
465 static int validate_extent_buffer(struct extent_buffer *eb) in validate_extent_buffer() argument
467 struct btrfs_fs_info *fs_info = eb->fs_info; in validate_extent_buffer()
475 found_start = btrfs_header_bytenr(eb); in validate_extent_buffer()
476 if (found_start != eb->start) { in validate_extent_buffer()
479 eb->read_mirror, eb->start, found_start); in validate_extent_buffer()
483 if (check_tree_block_fsid(eb)) { in validate_extent_buffer()
485 eb->start, eb->read_mirror); in validate_extent_buffer()
489 found_level = btrfs_header_level(eb); in validate_extent_buffer()
493 eb->read_mirror, btrfs_header_level(eb), eb->start); in validate_extent_buffer()
498 csum_tree_block(eb, result); in validate_extent_buffer()
499 header_csum = page_address(eb->pages[0]) + in validate_extent_buffer()
500 get_eb_offset_in_page(eb, offsetof(struct btrfs_header, csum)); in validate_extent_buffer()
505 eb->start, eb->read_mirror, in validate_extent_buffer()
508 btrfs_header_level(eb)); in validate_extent_buffer()
518 if (found_level == 0 && btrfs_check_leaf_full(eb)) { in validate_extent_buffer()
519 set_bit(EXTENT_BUFFER_CORRUPT, &eb->bflags); in validate_extent_buffer()
523 if (found_level > 0 && btrfs_check_node(eb)) in validate_extent_buffer()
527 set_extent_buffer_uptodate(eb); in validate_extent_buffer()
531 eb->start, eb->read_mirror); in validate_extent_buffer()
540 struct extent_buffer *eb; in validate_subpage_buffer() local
551 eb = find_extent_buffer(fs_info, start); in validate_subpage_buffer()
556 ASSERT(eb); in validate_subpage_buffer()
558 reads_done = atomic_dec_and_test(&eb->io_pages); in validate_subpage_buffer()
562 eb->read_mirror = mirror; in validate_subpage_buffer()
563 if (test_bit(EXTENT_BUFFER_READ_ERR, &eb->bflags)) { in validate_subpage_buffer()
567 ret = validate_extent_buffer(eb); in validate_subpage_buffer()
571 set_extent_buffer_uptodate(eb); in validate_subpage_buffer()
573 free_extent_buffer(eb); in validate_subpage_buffer()
580 atomic_inc(&eb->io_pages); in validate_subpage_buffer()
581 clear_extent_buffer_uptodate(eb); in validate_subpage_buffer()
582 free_extent_buffer(eb); in validate_subpage_buffer()
590 struct extent_buffer *eb; in btrfs_validate_metadata_buffer() local
599 eb = (struct extent_buffer *)page->private; in btrfs_validate_metadata_buffer()
605 atomic_inc(&eb->refs); in btrfs_validate_metadata_buffer()
607 reads_done = atomic_dec_and_test(&eb->io_pages); in btrfs_validate_metadata_buffer()
611 eb->read_mirror = mirror; in btrfs_validate_metadata_buffer()
612 if (test_bit(EXTENT_BUFFER_READ_ERR, &eb->bflags)) { in btrfs_validate_metadata_buffer()
616 ret = validate_extent_buffer(eb); in btrfs_validate_metadata_buffer()
624 atomic_inc(&eb->io_pages); in btrfs_validate_metadata_buffer()
625 clear_extent_buffer_uptodate(eb); in btrfs_validate_metadata_buffer()
627 free_extent_buffer(eb); in btrfs_validate_metadata_buffer()
864 struct extent_buffer *eb; in btree_dirty_folio() local
869 eb = folio_get_private(folio); in btree_dirty_folio()
870 BUG_ON(!eb); in btree_dirty_folio()
871 BUG_ON(!test_bit(EXTENT_BUFFER_DIRTY, &eb->bflags)); in btree_dirty_folio()
872 BUG_ON(!atomic_read(&eb->refs)); in btree_dirty_folio()
873 btrfs_assert_tree_write_locked(eb); in btree_dirty_folio()
894 eb = find_extent_buffer(fs_info, cur); in btree_dirty_folio()
895 ASSERT(eb); in btree_dirty_folio()
896 ASSERT(test_bit(EXTENT_BUFFER_DIRTY, &eb->bflags)); in btree_dirty_folio()
897 ASSERT(atomic_read(&eb->refs)); in btree_dirty_folio()
898 btrfs_assert_tree_write_locked(eb); in btree_dirty_folio()
899 free_extent_buffer(eb); in btree_dirty_folio()
5095 struct extent_buffer *eb; in btrfs_destroy_marked_extents() local
5107 eb = find_extent_buffer(fs_info, start); in btrfs_destroy_marked_extents()
5109 if (!eb) in btrfs_destroy_marked_extents()
5111 wait_on_extent_buffer_writeback(eb); in btrfs_destroy_marked_extents()
5114 &eb->bflags)) in btrfs_destroy_marked_extents()
5115 clear_extent_buffer_dirty(eb); in btrfs_destroy_marked_extents()
5116 free_extent_buffer_stale(eb); in btrfs_destroy_marked_extents()