Lines Matching refs:em

2484 	struct extent_map *em;  in btrfs_get_io_failure_record()  local
2516 em = lookup_extent_mapping(em_tree, start, failrec->len); in btrfs_get_io_failure_record()
2517 if (!em) { in btrfs_get_io_failure_record()
2523 if (em->start > start || em->start + em->len <= start) { in btrfs_get_io_failure_record()
2524 free_extent_map(em); in btrfs_get_io_failure_record()
2525 em = NULL; in btrfs_get_io_failure_record()
2528 if (!em) { in btrfs_get_io_failure_record()
2533 logical = start - em->start; in btrfs_get_io_failure_record()
2534 logical = em->block_start + logical; in btrfs_get_io_failure_record()
2535 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) { in btrfs_get_io_failure_record()
2536 logical = em->block_start; in btrfs_get_io_failure_record()
2538 extent_set_compress_type(&failrec->bio_flags, em->compress_type); in btrfs_get_io_failure_record()
2546 free_extent_map(em); in btrfs_get_io_failure_record()
3249 struct extent_map *em; in calc_bio_boundaries() local
3265 em = btrfs_get_chunk_map(fs_info, logical, fs_info->sectorsize); in calc_bio_boundaries()
3266 if (IS_ERR(em)) in calc_bio_boundaries()
3267 return PTR_ERR(em); in calc_bio_boundaries()
3268 ret = btrfs_get_io_geometry(fs_info, em, btrfs_op(bio_ctrl->bio), in calc_bio_boundaries()
3270 free_extent_map(em); in calc_bio_boundaries()
3520 struct extent_map *em; in __get_extent_map() local
3523 em = *em_cached; in __get_extent_map()
3524 if (extent_map_in_tree(em) && start >= em->start && in __get_extent_map()
3525 start < extent_map_end(em)) { in __get_extent_map()
3526 refcount_inc(&em->refs); in __get_extent_map()
3527 return em; in __get_extent_map()
3530 free_extent_map(em); in __get_extent_map()
3534 em = btrfs_get_extent(BTRFS_I(inode), page, pg_offset, start, len); in __get_extent_map()
3535 if (em_cached && !IS_ERR_OR_NULL(em)) { in __get_extent_map()
3537 refcount_inc(&em->refs); in __get_extent_map()
3538 *em_cached = em; in __get_extent_map()
3540 return em; in __get_extent_map()
3562 struct extent_map *em; in btrfs_do_readpage() local
3615 em = __get_extent_map(inode, page, pg_offset, cur, in btrfs_do_readpage()
3617 if (IS_ERR_OR_NULL(em)) { in btrfs_do_readpage()
3622 extent_offset = cur - em->start; in btrfs_do_readpage()
3623 BUG_ON(extent_map_end(em) <= cur); in btrfs_do_readpage()
3626 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) { in btrfs_do_readpage()
3629 em->compress_type); in btrfs_do_readpage()
3632 iosize = min(extent_map_end(em) - cur, end - cur + 1); in btrfs_do_readpage()
3633 cur_end = min(extent_map_end(em) - 1, end); in btrfs_do_readpage()
3636 disk_bytenr = em->block_start; in btrfs_do_readpage()
3638 disk_bytenr = em->block_start + extent_offset; in btrfs_do_readpage()
3639 block_start = em->block_start; in btrfs_do_readpage()
3640 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_do_readpage()
3677 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags) && in btrfs_do_readpage()
3679 *prev_em_start != em->start) in btrfs_do_readpage()
3683 *prev_em_start = em->start; in btrfs_do_readpage()
3685 free_extent_map(em); in btrfs_do_readpage()
3686 em = NULL; in btrfs_do_readpage()
3907 struct extent_map *em; in __extent_writepage_io() local
3958 em = btrfs_get_extent(inode, NULL, 0, cur, end - cur + 1); in __extent_writepage_io()
3959 if (IS_ERR_OR_NULL(em)) { in __extent_writepage_io()
3961 ret = PTR_ERR_OR_ZERO(em); in __extent_writepage_io()
3965 extent_offset = cur - em->start; in __extent_writepage_io()
3966 em_end = extent_map_end(em); in __extent_writepage_io()
3969 ASSERT(IS_ALIGNED(em->start, fs_info->sectorsize)); in __extent_writepage_io()
3970 ASSERT(IS_ALIGNED(em->len, fs_info->sectorsize)); in __extent_writepage_io()
3971 block_start = em->block_start; in __extent_writepage_io()
3972 compressed = test_bit(EXTENT_FLAG_COMPRESSED, &em->flags); in __extent_writepage_io()
3973 disk_bytenr = em->block_start + extent_offset; in __extent_writepage_io()
3981 if (btrfs_use_zone_append(inode, em->block_start)) in __extent_writepage_io()
3984 free_extent_map(em); in __extent_writepage_io()
3985 em = NULL; in __extent_writepage_io()
5240 struct extent_map *em; in try_release_extent_mapping() local
5256 em = lookup_extent_mapping(map, start, len); in try_release_extent_mapping()
5257 if (!em) { in try_release_extent_mapping()
5261 if (test_bit(EXTENT_FLAG_PINNED, &em->flags) || in try_release_extent_mapping()
5262 em->start != start) { in try_release_extent_mapping()
5264 free_extent_map(em); in try_release_extent_mapping()
5267 if (test_range_bit(tree, em->start, in try_release_extent_mapping()
5268 extent_map_end(em) - 1, in try_release_extent_mapping()
5277 if (list_empty(&em->list) || in try_release_extent_mapping()
5278 test_bit(EXTENT_FLAG_LOGGING, &em->flags)) in try_release_extent_mapping()
5291 if (em->generation >= cur_gen) in try_release_extent_mapping()
5302 remove_extent_mapping(map, em); in try_release_extent_mapping()
5304 free_extent_map(em); in try_release_extent_mapping()
5306 start = extent_map_end(em); in try_release_extent_mapping()
5310 free_extent_map(em); in try_release_extent_mapping()
5326 struct extent_map *em; in get_extent_skip_holes() local
5337 em = btrfs_get_extent_fiemap(inode, offset, len); in get_extent_skip_holes()
5338 if (IS_ERR_OR_NULL(em)) in get_extent_skip_holes()
5339 return em; in get_extent_skip_holes()
5342 if (em->block_start != EXTENT_MAP_HOLE) in get_extent_skip_holes()
5343 return em; in get_extent_skip_holes()
5346 offset = extent_map_end(em); in get_extent_skip_holes()
5347 free_extent_map(em); in get_extent_skip_holes()
5479 struct extent_map *em = NULL; in extent_fiemap() local
5561 em = get_extent_skip_holes(inode, start, last_for_get_extent); in extent_fiemap()
5562 if (!em) in extent_fiemap()
5564 if (IS_ERR(em)) { in extent_fiemap()
5565 ret = PTR_ERR(em); in extent_fiemap()
5573 if (em->start >= max || extent_map_end(em) < off) in extent_fiemap()
5582 em_start = max(em->start, off); in extent_fiemap()
5590 if (!test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) in extent_fiemap()
5591 offset_in_extent = em_start - em->start; in extent_fiemap()
5592 em_end = extent_map_end(em); in extent_fiemap()
5595 if (em->block_start < EXTENT_MAP_LAST_BYTE) in extent_fiemap()
5596 disko = em->block_start + offset_in_extent; in extent_fiemap()
5603 off = extent_map_end(em); in extent_fiemap()
5607 if (em->block_start == EXTENT_MAP_LAST_BYTE) { in extent_fiemap()
5610 } else if (em->block_start == EXTENT_MAP_INLINE) { in extent_fiemap()
5613 } else if (em->block_start == EXTENT_MAP_DELALLOC) { in extent_fiemap()
5617 u64 bytenr = em->block_start - in extent_fiemap()
5618 (em->start - em->orig_start); in extent_fiemap()
5635 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) in extent_fiemap()
5637 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in extent_fiemap()
5640 free_extent_map(em); in extent_fiemap()
5641 em = NULL; in extent_fiemap()
5649 em = get_extent_skip_holes(inode, off, last_for_get_extent); in extent_fiemap()
5650 if (IS_ERR(em)) { in extent_fiemap()
5651 ret = PTR_ERR(em); in extent_fiemap()
5654 if (!em) { in extent_fiemap()
5669 free_extent_map(em); in extent_fiemap()