Lines Matching refs:eb
188 void btrfs_set_buffer_lockdep_class(u64 objectid, struct extent_buffer *eb, in btrfs_set_buffer_lockdep_class() argument
200 lockdep_set_class_and_name(&eb->lock, in btrfs_set_buffer_lockdep_class()
239 struct extent_buffer *eb, u64 parent_transid, in verify_parent_transid() argument
245 if (!parent_transid || btrfs_header_generation(eb) == parent_transid) in verify_parent_transid()
251 lock_extent_bits(io_tree, eb->start, eb->start + eb->len - 1, in verify_parent_transid()
253 if (extent_buffer_uptodate(eb) && in verify_parent_transid()
254 btrfs_header_generation(eb) == parent_transid) { in verify_parent_transid()
258 btrfs_err_rl(eb->fs_info, in verify_parent_transid()
260 eb->start, in verify_parent_transid()
261 parent_transid, btrfs_header_generation(eb)); in verify_parent_transid()
263 clear_extent_buffer_uptodate(eb); in verify_parent_transid()
265 unlock_extent_cached(io_tree, eb->start, eb->start + eb->len - 1, in verify_parent_transid()
311 int btrfs_verify_level_key(struct extent_buffer *eb, int level, in btrfs_verify_level_key() argument
314 struct btrfs_fs_info *fs_info = eb->fs_info; in btrfs_verify_level_key()
319 found_level = btrfs_header_level(eb); in btrfs_verify_level_key()
325 eb->start, level, found_level); in btrfs_verify_level_key()
338 if (btrfs_header_generation(eb) > fs_info->last_trans_committed) in btrfs_verify_level_key()
342 if (btrfs_header_nritems(eb) == 0) { in btrfs_verify_level_key()
345 eb->start); in btrfs_verify_level_key()
351 btrfs_node_key_to_cpu(eb, &found_key, 0); in btrfs_verify_level_key()
353 btrfs_item_key_to_cpu(eb, &found_key, 0); in btrfs_verify_level_key()
361 eb->start, parent_transid, first_key->objectid, in btrfs_verify_level_key()
377 static int btree_read_extent_buffer_pages(struct extent_buffer *eb, in btree_read_extent_buffer_pages() argument
381 struct btrfs_fs_info *fs_info = eb->fs_info; in btree_read_extent_buffer_pages()
391 clear_bit(EXTENT_BUFFER_CORRUPT, &eb->bflags); in btree_read_extent_buffer_pages()
392 ret = read_extent_buffer_pages(eb, WAIT_COMPLETE, mirror_num); in btree_read_extent_buffer_pages()
394 if (verify_parent_transid(io_tree, eb, in btree_read_extent_buffer_pages()
397 else if (btrfs_verify_level_key(eb, level, in btree_read_extent_buffer_pages()
405 eb->start, eb->len); in btree_read_extent_buffer_pages()
411 failed_mirror = eb->read_mirror; in btree_read_extent_buffer_pages()
423 btrfs_repair_eb_io_failure(eb, failed_mirror); in btree_read_extent_buffer_pages()
428 static int csum_one_extent_buffer(struct extent_buffer *eb) in csum_one_extent_buffer() argument
430 struct btrfs_fs_info *fs_info = eb->fs_info; in csum_one_extent_buffer()
434 ASSERT(memcmp_extent_buffer(eb, fs_info->fs_devices->metadata_uuid, in csum_one_extent_buffer()
437 csum_tree_block(eb, result); in csum_one_extent_buffer()
439 if (btrfs_header_level(eb)) in csum_one_extent_buffer()
440 ret = btrfs_check_node(eb); in csum_one_extent_buffer()
442 ret = btrfs_check_leaf_full(eb); in csum_one_extent_buffer()
445 btrfs_print_tree(eb, 0); in csum_one_extent_buffer()
448 eb->start); in csum_one_extent_buffer()
452 write_extent_buffer(eb, result, 0, fs_info->csum_size); in csum_one_extent_buffer()
468 struct extent_buffer *eb; in csum_dirty_subpage_buffers() local
471 eb = find_extent_buffer(fs_info, cur); in csum_dirty_subpage_buffers()
476 if (WARN_ON(!eb)) in csum_dirty_subpage_buffers()
479 if (WARN_ON(cur != btrfs_header_bytenr(eb))) { in csum_dirty_subpage_buffers()
480 free_extent_buffer(eb); in csum_dirty_subpage_buffers()
484 free_extent_buffer(eb); in csum_dirty_subpage_buffers()
488 ret = csum_one_extent_buffer(eb); in csum_dirty_subpage_buffers()
489 free_extent_buffer(eb); in csum_dirty_subpage_buffers()
506 struct extent_buffer *eb; in csum_dirty_buffer() local
511 eb = (struct extent_buffer *)page->private; in csum_dirty_buffer()
512 if (page != eb->pages[0]) in csum_dirty_buffer()
515 found_start = btrfs_header_bytenr(eb); in csum_dirty_buffer()
517 if (test_bit(EXTENT_BUFFER_NO_CHECK, &eb->bflags)) { in csum_dirty_buffer()
531 return csum_one_extent_buffer(eb); in csum_dirty_buffer()
534 static int check_tree_block_fsid(struct extent_buffer *eb) in check_tree_block_fsid() argument
536 struct btrfs_fs_info *fs_info = eb->fs_info; in check_tree_block_fsid()
541 read_extent_buffer(eb, fsid, offsetof(struct btrfs_header, fsid), in check_tree_block_fsid()
564 static int validate_extent_buffer(struct extent_buffer *eb) in validate_extent_buffer() argument
566 struct btrfs_fs_info *fs_info = eb->fs_info; in validate_extent_buffer()
574 found_start = btrfs_header_bytenr(eb); in validate_extent_buffer()
575 if (found_start != eb->start) { in validate_extent_buffer()
577 eb->start, found_start); in validate_extent_buffer()
581 if (check_tree_block_fsid(eb)) { in validate_extent_buffer()
583 eb->start); in validate_extent_buffer()
587 found_level = btrfs_header_level(eb); in validate_extent_buffer()
590 (int)btrfs_header_level(eb), eb->start); in validate_extent_buffer()
595 csum_tree_block(eb, result); in validate_extent_buffer()
596 header_csum = page_address(eb->pages[0]) + in validate_extent_buffer()
597 get_eb_offset_in_page(eb, offsetof(struct btrfs_header, csum)); in validate_extent_buffer()
602 eb->start, in validate_extent_buffer()
605 btrfs_header_level(eb)); in validate_extent_buffer()
615 if (found_level == 0 && btrfs_check_leaf_full(eb)) { in validate_extent_buffer()
616 set_bit(EXTENT_BUFFER_CORRUPT, &eb->bflags); in validate_extent_buffer()
620 if (found_level > 0 && btrfs_check_node(eb)) in validate_extent_buffer()
624 set_extent_buffer_uptodate(eb); in validate_extent_buffer()
628 eb->start); in validate_extent_buffer()
637 struct extent_buffer *eb; in validate_subpage_buffer() local
648 eb = find_extent_buffer(fs_info, start); in validate_subpage_buffer()
653 ASSERT(eb); in validate_subpage_buffer()
655 reads_done = atomic_dec_and_test(&eb->io_pages); in validate_subpage_buffer()
659 eb->read_mirror = mirror; in validate_subpage_buffer()
660 if (test_bit(EXTENT_BUFFER_READ_ERR, &eb->bflags)) { in validate_subpage_buffer()
664 ret = validate_extent_buffer(eb); in validate_subpage_buffer()
668 if (test_and_clear_bit(EXTENT_BUFFER_READAHEAD, &eb->bflags)) in validate_subpage_buffer()
669 btree_readahead_hook(eb, ret); in validate_subpage_buffer()
671 set_extent_buffer_uptodate(eb); in validate_subpage_buffer()
673 free_extent_buffer(eb); in validate_subpage_buffer()
680 atomic_inc(&eb->io_pages); in validate_subpage_buffer()
681 clear_extent_buffer_uptodate(eb); in validate_subpage_buffer()
682 free_extent_buffer(eb); in validate_subpage_buffer()
690 struct extent_buffer *eb; in btrfs_validate_metadata_buffer() local
699 eb = (struct extent_buffer *)page->private; in btrfs_validate_metadata_buffer()
705 atomic_inc(&eb->refs); in btrfs_validate_metadata_buffer()
707 reads_done = atomic_dec_and_test(&eb->io_pages); in btrfs_validate_metadata_buffer()
711 eb->read_mirror = mirror; in btrfs_validate_metadata_buffer()
712 if (test_bit(EXTENT_BUFFER_READ_ERR, &eb->bflags)) { in btrfs_validate_metadata_buffer()
716 ret = validate_extent_buffer(eb); in btrfs_validate_metadata_buffer()
719 test_and_clear_bit(EXTENT_BUFFER_READAHEAD, &eb->bflags)) in btrfs_validate_metadata_buffer()
720 btree_readahead_hook(eb, ret); in btrfs_validate_metadata_buffer()
728 atomic_inc(&eb->io_pages); in btrfs_validate_metadata_buffer()
729 clear_extent_buffer_uptodate(eb); in btrfs_validate_metadata_buffer()
731 free_extent_buffer(eb); in btrfs_validate_metadata_buffer()
1029 struct extent_buffer *eb; in btree_set_page_dirty() local
1035 eb = (struct extent_buffer *)page->private; in btree_set_page_dirty()
1036 BUG_ON(!eb); in btree_set_page_dirty()
1037 BUG_ON(!test_bit(EXTENT_BUFFER_DIRTY, &eb->bflags)); in btree_set_page_dirty()
1038 BUG_ON(!atomic_read(&eb->refs)); in btree_set_page_dirty()
1039 btrfs_assert_tree_locked(eb); in btree_set_page_dirty()
1060 eb = find_extent_buffer(fs_info, cur); in btree_set_page_dirty()
1061 ASSERT(eb); in btree_set_page_dirty()
1062 ASSERT(test_bit(EXTENT_BUFFER_DIRTY, &eb->bflags)); in btree_set_page_dirty()
1063 ASSERT(atomic_read(&eb->refs)); in btree_set_page_dirty()
1064 btrfs_assert_tree_locked(eb); in btree_set_page_dirty()
1065 free_extent_buffer(eb); in btree_set_page_dirty()
4766 struct extent_buffer *eb; in btrfs_destroy_marked_extents() local
4778 eb = find_extent_buffer(fs_info, start); in btrfs_destroy_marked_extents()
4780 if (!eb) in btrfs_destroy_marked_extents()
4782 wait_on_extent_buffer_writeback(eb); in btrfs_destroy_marked_extents()
4785 &eb->bflags)) in btrfs_destroy_marked_extents()
4786 clear_extent_buffer_dirty(eb); in btrfs_destroy_marked_extents()
4787 free_extent_buffer_stale(eb); in btrfs_destroy_marked_extents()