Lines Matching refs:em
520 struct extent_map *em; in btrfs_drop_extent_cache() local
549 em = lookup_extent_mapping(em_tree, start, len); in btrfs_drop_extent_cache()
550 if (!em) { in btrfs_drop_extent_cache()
554 flags = em->flags; in btrfs_drop_extent_cache()
555 gen = em->generation; in btrfs_drop_extent_cache()
556 if (skip_pinned && test_bit(EXTENT_FLAG_PINNED, &em->flags)) { in btrfs_drop_extent_cache()
557 if (testend && em->start + em->len >= start + len) { in btrfs_drop_extent_cache()
558 free_extent_map(em); in btrfs_drop_extent_cache()
562 start = em->start + em->len; in btrfs_drop_extent_cache()
564 len = start + len - (em->start + em->len); in btrfs_drop_extent_cache()
565 free_extent_map(em); in btrfs_drop_extent_cache()
569 compressed = test_bit(EXTENT_FLAG_COMPRESSED, &em->flags); in btrfs_drop_extent_cache()
570 clear_bit(EXTENT_FLAG_PINNED, &em->flags); in btrfs_drop_extent_cache()
572 modified = !list_empty(&em->list); in btrfs_drop_extent_cache()
576 if (em->start < start) { in btrfs_drop_extent_cache()
577 split->start = em->start; in btrfs_drop_extent_cache()
578 split->len = start - em->start; in btrfs_drop_extent_cache()
580 if (em->block_start < EXTENT_MAP_LAST_BYTE) { in btrfs_drop_extent_cache()
581 split->orig_start = em->orig_start; in btrfs_drop_extent_cache()
582 split->block_start = em->block_start; in btrfs_drop_extent_cache()
585 split->block_len = em->block_len; in btrfs_drop_extent_cache()
589 em->orig_block_len); in btrfs_drop_extent_cache()
590 split->ram_bytes = em->ram_bytes; in btrfs_drop_extent_cache()
594 split->block_start = em->block_start; in btrfs_drop_extent_cache()
601 split->compress_type = em->compress_type; in btrfs_drop_extent_cache()
602 replace_extent_mapping(em_tree, em, split, modified); in btrfs_drop_extent_cache()
607 if (testend && em->start + em->len > start + len) { in btrfs_drop_extent_cache()
608 u64 diff = start + len - em->start; in btrfs_drop_extent_cache()
611 split->len = em->start + em->len - (start + len); in btrfs_drop_extent_cache()
613 split->compress_type = em->compress_type; in btrfs_drop_extent_cache()
616 if (em->block_start < EXTENT_MAP_LAST_BYTE) { in btrfs_drop_extent_cache()
617 split->orig_block_len = max(em->block_len, in btrfs_drop_extent_cache()
618 em->orig_block_len); in btrfs_drop_extent_cache()
620 split->ram_bytes = em->ram_bytes; in btrfs_drop_extent_cache()
622 split->block_len = em->block_len; in btrfs_drop_extent_cache()
623 split->block_start = em->block_start; in btrfs_drop_extent_cache()
624 split->orig_start = em->orig_start; in btrfs_drop_extent_cache()
627 split->block_start = em->block_start in btrfs_drop_extent_cache()
629 split->orig_start = em->orig_start; in btrfs_drop_extent_cache()
635 split->block_start = em->block_start; in btrfs_drop_extent_cache()
639 if (extent_map_in_tree(em)) { in btrfs_drop_extent_cache()
640 replace_extent_mapping(em_tree, em, split, in btrfs_drop_extent_cache()
651 if (extent_map_in_tree(em)) in btrfs_drop_extent_cache()
652 remove_extent_mapping(em_tree, em); in btrfs_drop_extent_cache()
656 free_extent_map(em); in btrfs_drop_extent_cache()
658 free_extent_map(em); in btrfs_drop_extent_cache()
2455 struct extent_map *em; in find_first_non_hole() local
2458 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, in find_first_non_hole()
2461 if (IS_ERR(em)) in find_first_non_hole()
2462 return PTR_ERR(em); in find_first_non_hole()
2465 if (em->block_start == EXTENT_MAP_HOLE) { in find_first_non_hole()
2467 *len = em->start + em->len > *start + *len ? in find_first_non_hole()
2468 0 : *start + *len - em->start - em->len; in find_first_non_hole()
2469 *start = em->start + em->len; in find_first_non_hole()
2471 free_extent_map(em); in find_first_non_hole()
3082 struct extent_map *em; in btrfs_zero_range_check_range_boundary() local
3086 em = btrfs_get_extent(inode, NULL, 0, offset, sectorsize); in btrfs_zero_range_check_range_boundary()
3087 if (IS_ERR(em)) in btrfs_zero_range_check_range_boundary()
3088 return PTR_ERR(em); in btrfs_zero_range_check_range_boundary()
3090 if (em->block_start == EXTENT_MAP_HOLE) in btrfs_zero_range_check_range_boundary()
3092 else if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_zero_range_check_range_boundary()
3097 free_extent_map(em); in btrfs_zero_range_check_range_boundary()
3107 struct extent_map *em; in btrfs_zero_range() local
3119 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, alloc_start, in btrfs_zero_range()
3121 if (IS_ERR(em)) { in btrfs_zero_range()
3122 ret = PTR_ERR(em); in btrfs_zero_range()
3134 if (em->start <= alloc_start && in btrfs_zero_range()
3135 test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) { in btrfs_zero_range()
3136 const u64 em_end = em->start + em->len; in btrfs_zero_range()
3144 free_extent_map(em); in btrfs_zero_range()
3157 alloc_hint = em->block_start + em->len; in btrfs_zero_range()
3159 free_extent_map(em); in btrfs_zero_range()
3163 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, alloc_start, in btrfs_zero_range()
3165 if (IS_ERR(em)) { in btrfs_zero_range()
3166 ret = PTR_ERR(em); in btrfs_zero_range()
3170 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) { in btrfs_zero_range()
3171 free_extent_map(em); in btrfs_zero_range()
3176 if (len < sectorsize && em->block_start != EXTENT_MAP_HOLE) { in btrfs_zero_range()
3177 free_extent_map(em); in btrfs_zero_range()
3185 free_extent_map(em); in btrfs_zero_range()
3295 struct extent_map *em; in btrfs_fallocate() local
3410 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, cur_offset, in btrfs_fallocate()
3412 if (IS_ERR(em)) { in btrfs_fallocate()
3413 ret = PTR_ERR(em); in btrfs_fallocate()
3416 last_byte = min(extent_map_end(em), alloc_end); in btrfs_fallocate()
3417 actual_end = min_t(u64, extent_map_end(em), offset + len); in btrfs_fallocate()
3419 if (em->block_start == EXTENT_MAP_HOLE || in btrfs_fallocate()
3421 !test_bit(EXTENT_FLAG_PREALLOC, &em->flags))) { in btrfs_fallocate()
3425 free_extent_map(em); in btrfs_fallocate()
3433 free_extent_map(em); in btrfs_fallocate()
3446 free_extent_map(em); in btrfs_fallocate()
3492 struct extent_map *em = NULL; in find_desired_extent() local
3521 em = btrfs_get_extent_fiemap(BTRFS_I(inode), start, len); in find_desired_extent()
3522 if (IS_ERR(em)) { in find_desired_extent()
3523 ret = PTR_ERR(em); in find_desired_extent()
3524 em = NULL; in find_desired_extent()
3529 (em->block_start == EXTENT_MAP_HOLE || in find_desired_extent()
3530 test_bit(EXTENT_FLAG_PREALLOC, &em->flags))) in find_desired_extent()
3533 (em->block_start != EXTENT_MAP_HOLE && in find_desired_extent()
3534 !test_bit(EXTENT_FLAG_PREALLOC, &em->flags))) in find_desired_extent()
3537 start = em->start + em->len; in find_desired_extent()
3538 free_extent_map(em); in find_desired_extent()
3539 em = NULL; in find_desired_extent()
3542 free_extent_map(em); in find_desired_extent()