Lines Matching refs:eb
119 int btrfs_buffer_uptodate(struct extent_buffer *eb, u64 parent_transid, int atomic) in btrfs_buffer_uptodate() argument
121 if (!extent_buffer_uptodate(eb)) in btrfs_buffer_uptodate()
124 if (!parent_transid || btrfs_header_generation(eb) == parent_transid) in btrfs_buffer_uptodate()
130 if (!extent_buffer_uptodate(eb) || in btrfs_buffer_uptodate()
131 btrfs_header_generation(eb) != parent_transid) { in btrfs_buffer_uptodate()
132 btrfs_err_rl(eb->fs_info, in btrfs_buffer_uptodate()
134 eb->start, eb->read_mirror, in btrfs_buffer_uptodate()
135 parent_transid, btrfs_header_generation(eb)); in btrfs_buffer_uptodate()
136 clear_extent_buffer_uptodate(eb); in btrfs_buffer_uptodate()
181 static int btrfs_repair_eb_io_failure(const struct extent_buffer *eb, in btrfs_repair_eb_io_failure() argument
184 struct btrfs_fs_info *fs_info = eb->fs_info; in btrfs_repair_eb_io_failure()
185 int num_folios = num_extent_folios(eb); in btrfs_repair_eb_io_failure()
192 struct folio *folio = eb->folios[i]; in btrfs_repair_eb_io_failure()
193 u64 start = max_t(u64, eb->start, folio_pos(folio)); in btrfs_repair_eb_io_failure()
194 u64 end = min_t(u64, eb->start + eb->len, in btrfs_repair_eb_io_failure()
195 folio_pos(folio) + eb->folio_size); in btrfs_repair_eb_io_failure()
215 int btrfs_read_extent_buffer(struct extent_buffer *eb, in btrfs_read_extent_buffer() argument
218 struct btrfs_fs_info *fs_info = eb->fs_info; in btrfs_read_extent_buffer()
228 clear_bit(EXTENT_BUFFER_CORRUPT, &eb->bflags); in btrfs_read_extent_buffer()
229 ret = read_extent_buffer_pages(eb, mirror_num, check); in btrfs_read_extent_buffer()
234 eb->start, eb->len); in btrfs_read_extent_buffer()
240 failed_mirror = eb->read_mirror; in btrfs_read_extent_buffer()
252 btrfs_repair_eb_io_failure(eb, failed_mirror); in btrfs_read_extent_buffer()
262 struct extent_buffer *eb = bbio->private; in btree_csum_one_bio() local
263 struct btrfs_fs_info *fs_info = eb->fs_info; in btree_csum_one_bio()
264 u64 found_start = btrfs_header_bytenr(eb); in btree_csum_one_bio()
270 if (WARN_ON_ONCE(bbio->file_offset != eb->start)) in btree_csum_one_bio()
272 if (WARN_ON_ONCE(bbio->bio.bi_iter.bi_size != eb->len)) in btree_csum_one_bio()
280 if (test_bit(EXTENT_BUFFER_ZONED_ZEROOUT, &eb->bflags)) { in btree_csum_one_bio()
281 memzero_extent_buffer(eb, 0, eb->len); in btree_csum_one_bio()
285 if (WARN_ON_ONCE(found_start != eb->start)) in btree_csum_one_bio()
287 if (WARN_ON(!btrfs_folio_test_uptodate(fs_info, eb->folios[0], in btree_csum_one_bio()
288 eb->start, eb->len))) in btree_csum_one_bio()
291 ASSERT(memcmp_extent_buffer(eb, fs_info->fs_devices->metadata_uuid, in btree_csum_one_bio()
294 csum_tree_block(eb, result); in btree_csum_one_bio()
296 if (btrfs_header_level(eb)) in btree_csum_one_bio()
297 ret = btrfs_check_node(eb); in btree_csum_one_bio()
299 ret = btrfs_check_leaf(eb); in btree_csum_one_bio()
309 if (unlikely(btrfs_header_generation(eb) <= last_trans)) { in btree_csum_one_bio()
313 eb->start, btrfs_header_generation(eb), last_trans); in btree_csum_one_bio()
316 write_extent_buffer(eb, result, 0, fs_info->csum_size); in btree_csum_one_bio()
320 btrfs_print_tree(eb, 0); in btree_csum_one_bio()
322 eb->start); in btree_csum_one_bio()
330 btrfs_header_owner(eb) == BTRFS_TREE_LOG_OBJECTID); in btree_csum_one_bio()
334 static bool check_tree_block_fsid(struct extent_buffer *eb) in check_tree_block_fsid() argument
336 struct btrfs_fs_info *fs_info = eb->fs_info; in check_tree_block_fsid()
340 read_extent_buffer(eb, fsid, offsetof(struct btrfs_header, fsid), in check_tree_block_fsid()
360 int btrfs_validate_extent_buffer(struct extent_buffer *eb, in btrfs_validate_extent_buffer() argument
363 struct btrfs_fs_info *fs_info = eb->fs_info; in btrfs_validate_extent_buffer()
374 found_start = btrfs_header_bytenr(eb); in btrfs_validate_extent_buffer()
375 if (found_start != eb->start) { in btrfs_validate_extent_buffer()
378 eb->read_mirror, eb->start, found_start); in btrfs_validate_extent_buffer()
382 if (check_tree_block_fsid(eb)) { in btrfs_validate_extent_buffer()
384 eb->start, eb->read_mirror); in btrfs_validate_extent_buffer()
388 found_level = btrfs_header_level(eb); in btrfs_validate_extent_buffer()
392 eb->read_mirror, btrfs_header_level(eb), eb->start); in btrfs_validate_extent_buffer()
397 csum_tree_block(eb, result); in btrfs_validate_extent_buffer()
398 header_csum = folio_address(eb->folios[0]) + in btrfs_validate_extent_buffer()
399 get_eb_offset_in_folio(eb, offsetof(struct btrfs_header, csum)); in btrfs_validate_extent_buffer()
404 eb->start, eb->read_mirror, in btrfs_validate_extent_buffer()
407 btrfs_header_level(eb), in btrfs_validate_extent_buffer()
418 eb->start, eb->read_mirror, check->level, found_level); in btrfs_validate_extent_buffer()
423 btrfs_header_generation(eb) != check->transid)) { in btrfs_validate_extent_buffer()
424 btrfs_err_rl(eb->fs_info, in btrfs_validate_extent_buffer()
426 eb->start, eb->read_mirror, check->transid, in btrfs_validate_extent_buffer()
427 btrfs_header_generation(eb)); in btrfs_validate_extent_buffer()
436 btrfs_node_key_to_cpu(eb, &found_key, 0); in btrfs_validate_extent_buffer()
438 btrfs_item_key_to_cpu(eb, &found_key, 0); in btrfs_validate_extent_buffer()
442 eb->start, check->transid, in btrfs_validate_extent_buffer()
452 ret = btrfs_check_eb_owner(eb, check->owner_root); in btrfs_validate_extent_buffer()
462 if (found_level == 0 && btrfs_check_leaf(eb)) { in btrfs_validate_extent_buffer()
463 set_bit(EXTENT_BUFFER_CORRUPT, &eb->bflags); in btrfs_validate_extent_buffer()
467 if (found_level > 0 && btrfs_check_node(eb)) in btrfs_validate_extent_buffer()
473 eb->start, eb->read_mirror); in btrfs_validate_extent_buffer()
554 struct extent_buffer *eb; in btree_dirty_folio() local
559 eb = folio_get_private(folio); in btree_dirty_folio()
560 BUG_ON(!eb); in btree_dirty_folio()
561 BUG_ON(!test_bit(EXTENT_BUFFER_DIRTY, &eb->bflags)); in btree_dirty_folio()
562 BUG_ON(!atomic_read(&eb->refs)); in btree_dirty_folio()
563 btrfs_assert_tree_write_locked(eb); in btree_dirty_folio()
584 eb = find_extent_buffer(fs_info, cur); in btree_dirty_folio()
585 ASSERT(eb); in btree_dirty_folio()
586 ASSERT(test_bit(EXTENT_BUFFER_DIRTY, &eb->bflags)); in btree_dirty_folio()
587 ASSERT(atomic_read(&eb->refs)); in btree_dirty_folio()
588 btrfs_assert_tree_write_locked(eb); in btree_dirty_folio()
589 free_extent_buffer(eb); in btree_dirty_folio()
4673 struct extent_buffer *eb; in btrfs_destroy_marked_extents() local
4681 eb = find_extent_buffer(fs_info, start); in btrfs_destroy_marked_extents()
4683 if (!eb) in btrfs_destroy_marked_extents()
4686 btrfs_tree_lock(eb); in btrfs_destroy_marked_extents()
4687 wait_on_extent_buffer_writeback(eb); in btrfs_destroy_marked_extents()
4688 btrfs_clear_buffer_dirty(NULL, eb); in btrfs_destroy_marked_extents()
4689 btrfs_tree_unlock(eb); in btrfs_destroy_marked_extents()
4691 free_extent_buffer_stale(eb); in btrfs_destroy_marked_extents()