Lines Matching refs:em
2486 struct extent_map *em; in btrfs_get_io_failure_record() local
2518 em = lookup_extent_mapping(em_tree, start, failrec->len); in btrfs_get_io_failure_record()
2519 if (!em) { in btrfs_get_io_failure_record()
2525 if (em->start > start || em->start + em->len <= start) { in btrfs_get_io_failure_record()
2526 free_extent_map(em); in btrfs_get_io_failure_record()
2527 em = NULL; in btrfs_get_io_failure_record()
2530 if (!em) { in btrfs_get_io_failure_record()
2535 logical = start - em->start; in btrfs_get_io_failure_record()
2536 logical = em->block_start + logical; in btrfs_get_io_failure_record()
2537 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) { in btrfs_get_io_failure_record()
2538 logical = em->block_start; in btrfs_get_io_failure_record()
2540 extent_set_compress_type(&failrec->bio_flags, em->compress_type); in btrfs_get_io_failure_record()
2548 free_extent_map(em); in btrfs_get_io_failure_record()
3251 struct extent_map *em; in calc_bio_boundaries() local
3267 em = btrfs_get_chunk_map(fs_info, logical, fs_info->sectorsize); in calc_bio_boundaries()
3268 if (IS_ERR(em)) in calc_bio_boundaries()
3269 return PTR_ERR(em); in calc_bio_boundaries()
3270 ret = btrfs_get_io_geometry(fs_info, em, btrfs_op(bio_ctrl->bio), in calc_bio_boundaries()
3272 free_extent_map(em); in calc_bio_boundaries()
3522 struct extent_map *em; in __get_extent_map() local
3525 em = *em_cached; in __get_extent_map()
3526 if (extent_map_in_tree(em) && start >= em->start && in __get_extent_map()
3527 start < extent_map_end(em)) { in __get_extent_map()
3528 refcount_inc(&em->refs); in __get_extent_map()
3529 return em; in __get_extent_map()
3532 free_extent_map(em); in __get_extent_map()
3536 em = btrfs_get_extent(BTRFS_I(inode), page, pg_offset, start, len); in __get_extent_map()
3537 if (em_cached && !IS_ERR_OR_NULL(em)) { in __get_extent_map()
3539 refcount_inc(&em->refs); in __get_extent_map()
3540 *em_cached = em; in __get_extent_map()
3542 return em; in __get_extent_map()
3564 struct extent_map *em; in btrfs_do_readpage() local
3616 em = __get_extent_map(inode, page, pg_offset, cur, in btrfs_do_readpage()
3618 if (IS_ERR_OR_NULL(em)) { in btrfs_do_readpage()
3623 extent_offset = cur - em->start; in btrfs_do_readpage()
3624 BUG_ON(extent_map_end(em) <= cur); in btrfs_do_readpage()
3627 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) { in btrfs_do_readpage()
3630 em->compress_type); in btrfs_do_readpage()
3633 iosize = min(extent_map_end(em) - cur, end - cur + 1); in btrfs_do_readpage()
3634 cur_end = min(extent_map_end(em) - 1, end); in btrfs_do_readpage()
3637 disk_bytenr = em->block_start; in btrfs_do_readpage()
3639 disk_bytenr = em->block_start + extent_offset; in btrfs_do_readpage()
3640 block_start = em->block_start; in btrfs_do_readpage()
3641 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_do_readpage()
3678 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags) && in btrfs_do_readpage()
3680 *prev_em_start != em->start) in btrfs_do_readpage()
3684 *prev_em_start = em->start; in btrfs_do_readpage()
3686 free_extent_map(em); in btrfs_do_readpage()
3687 em = NULL; in btrfs_do_readpage()
3911 struct extent_map *em; in __extent_writepage_io() local
3964 em = btrfs_get_extent(inode, NULL, 0, cur, end - cur + 1); in __extent_writepage_io()
3965 if (IS_ERR_OR_NULL(em)) { in __extent_writepage_io()
3967 ret = PTR_ERR_OR_ZERO(em); in __extent_writepage_io()
3974 extent_offset = cur - em->start; in __extent_writepage_io()
3975 em_end = extent_map_end(em); in __extent_writepage_io()
3978 ASSERT(IS_ALIGNED(em->start, fs_info->sectorsize)); in __extent_writepage_io()
3979 ASSERT(IS_ALIGNED(em->len, fs_info->sectorsize)); in __extent_writepage_io()
3980 block_start = em->block_start; in __extent_writepage_io()
3981 compressed = test_bit(EXTENT_FLAG_COMPRESSED, &em->flags); in __extent_writepage_io()
3982 disk_bytenr = em->block_start + extent_offset; in __extent_writepage_io()
3990 if (btrfs_use_zone_append(inode, em->block_start)) in __extent_writepage_io()
3993 free_extent_map(em); in __extent_writepage_io()
3994 em = NULL; in __extent_writepage_io()
5269 struct extent_map *em; in try_release_extent_mapping() local
5285 em = lookup_extent_mapping(map, start, len); in try_release_extent_mapping()
5286 if (!em) { in try_release_extent_mapping()
5290 if (test_bit(EXTENT_FLAG_PINNED, &em->flags) || in try_release_extent_mapping()
5291 em->start != start) { in try_release_extent_mapping()
5293 free_extent_map(em); in try_release_extent_mapping()
5296 if (test_range_bit(tree, em->start, in try_release_extent_mapping()
5297 extent_map_end(em) - 1, in try_release_extent_mapping()
5306 if (list_empty(&em->list) || in try_release_extent_mapping()
5307 test_bit(EXTENT_FLAG_LOGGING, &em->flags)) in try_release_extent_mapping()
5320 if (em->generation >= cur_gen) in try_release_extent_mapping()
5331 remove_extent_mapping(map, em); in try_release_extent_mapping()
5333 free_extent_map(em); in try_release_extent_mapping()
5335 start = extent_map_end(em); in try_release_extent_mapping()
5339 free_extent_map(em); in try_release_extent_mapping()
5355 struct extent_map *em; in get_extent_skip_holes() local
5366 em = btrfs_get_extent_fiemap(inode, offset, len); in get_extent_skip_holes()
5367 if (IS_ERR_OR_NULL(em)) in get_extent_skip_holes()
5368 return em; in get_extent_skip_holes()
5371 if (em->block_start != EXTENT_MAP_HOLE) in get_extent_skip_holes()
5372 return em; in get_extent_skip_holes()
5375 offset = extent_map_end(em); in get_extent_skip_holes()
5376 free_extent_map(em); in get_extent_skip_holes()
5508 struct extent_map *em = NULL; in extent_fiemap() local
5590 em = get_extent_skip_holes(inode, start, last_for_get_extent); in extent_fiemap()
5591 if (!em) in extent_fiemap()
5593 if (IS_ERR(em)) { in extent_fiemap()
5594 ret = PTR_ERR(em); in extent_fiemap()
5602 if (em->start >= max || extent_map_end(em) < off) in extent_fiemap()
5611 em_start = max(em->start, off); in extent_fiemap()
5619 if (!test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) in extent_fiemap()
5620 offset_in_extent = em_start - em->start; in extent_fiemap()
5621 em_end = extent_map_end(em); in extent_fiemap()
5624 if (em->block_start < EXTENT_MAP_LAST_BYTE) in extent_fiemap()
5625 disko = em->block_start + offset_in_extent; in extent_fiemap()
5632 off = extent_map_end(em); in extent_fiemap()
5636 if (em->block_start == EXTENT_MAP_LAST_BYTE) { in extent_fiemap()
5639 } else if (em->block_start == EXTENT_MAP_INLINE) { in extent_fiemap()
5642 } else if (em->block_start == EXTENT_MAP_DELALLOC) { in extent_fiemap()
5646 u64 bytenr = em->block_start - in extent_fiemap()
5647 (em->start - em->orig_start); in extent_fiemap()
5664 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) in extent_fiemap()
5666 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in extent_fiemap()
5669 free_extent_map(em); in extent_fiemap()
5670 em = NULL; in extent_fiemap()
5678 em = get_extent_skip_holes(inode, off, last_for_get_extent); in extent_fiemap()
5679 if (IS_ERR(em)) { in extent_fiemap()
5680 ret = PTR_ERR(em); in extent_fiemap()
5683 if (!em) { in extent_fiemap()
5698 free_extent_map(em); in extent_fiemap()