Lines Matching refs:em

2456 	struct extent_map *em;
2489 em = lookup_extent_mapping(em_tree, start, failrec->len);
2490 if (!em) {
2496 if (em->start > start || em->start + em->len <= start) {
2497 free_extent_map(em);
2498 em = NULL;
2501 if (!em) {
2506 logical = start - em->start;
2507 logical = em->block_start + logical;
2508 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) {
2509 logical = em->block_start;
2511 extent_set_compress_type(&failrec->bio_flags, em->compress_type);
2519 free_extent_map(em);
3113 struct extent_map *em;
3116 em = *em_cached;
3117 if (extent_map_in_tree(em) && start >= em->start &&
3118 start < extent_map_end(em)) {
3119 refcount_inc(&em->refs);
3120 return em;
3123 free_extent_map(em);
3127 em = btrfs_get_extent(BTRFS_I(inode), page, pg_offset, start, len);
3128 if (em_cached && !IS_ERR_OR_NULL(em)) {
3130 refcount_inc(&em->refs);
3131 *em_cached = em;
3133 return em;
3154 struct extent_map *em;
3205 em = __get_extent_map(inode, page, pg_offset, cur,
3207 if (IS_ERR_OR_NULL(em)) {
3212 extent_offset = cur - em->start;
3213 BUG_ON(extent_map_end(em) <= cur);
3216 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) {
3219 em->compress_type);
3222 iosize = min(extent_map_end(em) - cur, end - cur + 1);
3223 cur_end = min(extent_map_end(em) - 1, end);
3226 disk_io_size = em->block_len;
3227 offset = em->block_start;
3229 offset = em->block_start + extent_offset;
3232 block_start = em->block_start;
3233 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags))
3270 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags) &&
3272 *prev_em_start != em->start)
3276 *prev_em_start = em->start;
3278 free_extent_map(em);
3279 em = NULL;
3470 struct extent_map *em;
3505 em = btrfs_get_extent(inode, NULL, 0, cur, end - cur + 1);
3506 if (IS_ERR_OR_NULL(em)) {
3508 ret = PTR_ERR_OR_ZERO(em);
3512 extent_offset = cur - em->start;
3513 em_end = extent_map_end(em);
3518 offset = em->block_start + extent_offset;
3519 block_start = em->block_start;
3520 compressed = test_bit(EXTENT_FLAG_COMPRESSED, &em->flags);
3521 free_extent_map(em);
3522 em = NULL;
4442 struct extent_map *em;
4458 em = lookup_extent_mapping(map, start, len);
4459 if (!em) {
4463 if (test_bit(EXTENT_FLAG_PINNED, &em->flags) ||
4464 em->start != start) {
4466 free_extent_map(em);
4469 if (test_range_bit(tree, em->start,
4470 extent_map_end(em) - 1,
4477 * extra reference on the em.
4479 if (list_empty(&em->list) ||
4480 test_bit(EXTENT_FLAG_LOGGING, &em->flags))
4493 if (em->generation >= cur_gen)
4504 remove_extent_mapping(map, em);
4506 free_extent_map(em);
4508 start = extent_map_end(em);
4512 free_extent_map(em);
4528 struct extent_map *em;
4539 em = btrfs_get_extent_fiemap(inode, offset, len);
4540 if (IS_ERR_OR_NULL(em))
4541 return em;
4544 if (em->block_start != EXTENT_MAP_HOLE)
4545 return em;
4548 offset = extent_map_end(em);
4549 free_extent_map(em);
4681 struct extent_map *em = NULL;
4764 em = get_extent_skip_holes(inode, start, last_for_get_extent);
4765 if (!em)
4767 if (IS_ERR(em)) {
4768 ret = PTR_ERR(em);
4776 if (em->start >= max || extent_map_end(em) < off)
4785 em_start = max(em->start, off);
4793 if (!test_bit(EXTENT_FLAG_COMPRESSED, &em->flags))
4794 offset_in_extent = em_start - em->start;
4795 em_end = extent_map_end(em);
4798 if (em->block_start < EXTENT_MAP_LAST_BYTE)
4799 disko = em->block_start + offset_in_extent;
4806 off = extent_map_end(em);
4810 if (em->block_start == EXTENT_MAP_LAST_BYTE) {
4813 } else if (em->block_start == EXTENT_MAP_INLINE) {
4816 } else if (em->block_start == EXTENT_MAP_DELALLOC) {
4820 u64 bytenr = em->block_start -
4821 (em->start - em->orig_start);
4838 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags))
4840 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags))
4843 free_extent_map(em);
4844 em = NULL;
4852 em = get_extent_skip_holes(inode, off, last_for_get_extent);
4853 if (IS_ERR(em)) {
4854 ret = PTR_ERR(em);
4857 if (!em) {
4872 free_extent_map(em);