Lines Matching refs:em

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