Lines Matching refs:em

673 	struct extent_map *em;  in submit_compressed_extents()  local
764 em = alloc_extent_map(); in submit_compressed_extents()
765 if (!em) { in submit_compressed_extents()
769 em->start = async_extent->start; in submit_compressed_extents()
770 em->len = async_extent->ram_size; in submit_compressed_extents()
771 em->orig_start = em->start; in submit_compressed_extents()
772 em->mod_start = em->start; in submit_compressed_extents()
773 em->mod_len = em->len; in submit_compressed_extents()
775 em->block_start = ins.objectid; in submit_compressed_extents()
776 em->block_len = ins.offset; in submit_compressed_extents()
777 em->orig_block_len = ins.offset; in submit_compressed_extents()
778 em->ram_bytes = async_extent->ram_size; in submit_compressed_extents()
779 em->bdev = root->fs_info->fs_devices->latest_bdev; in submit_compressed_extents()
780 em->compress_type = async_extent->compress_type; in submit_compressed_extents()
781 set_bit(EXTENT_FLAG_PINNED, &em->flags); in submit_compressed_extents()
782 set_bit(EXTENT_FLAG_COMPRESSED, &em->flags); in submit_compressed_extents()
783 em->generation = -1; in submit_compressed_extents()
787 ret = add_extent_mapping(em_tree, em, 1); in submit_compressed_extents()
790 free_extent_map(em); in submit_compressed_extents()
870 struct extent_map *em; in get_extent_allocation_hint() local
874 em = search_extent_mapping(em_tree, start, num_bytes); in get_extent_allocation_hint()
875 if (em) { in get_extent_allocation_hint()
881 if (em->block_start >= EXTENT_MAP_LAST_BYTE) { in get_extent_allocation_hint()
882 free_extent_map(em); in get_extent_allocation_hint()
883 em = search_extent_mapping(em_tree, 0, 0); in get_extent_allocation_hint()
884 if (em && em->block_start < EXTENT_MAP_LAST_BYTE) in get_extent_allocation_hint()
885 alloc_hint = em->block_start; in get_extent_allocation_hint()
886 if (em) in get_extent_allocation_hint()
887 free_extent_map(em); in get_extent_allocation_hint()
889 alloc_hint = em->block_start; in get_extent_allocation_hint()
890 free_extent_map(em); in get_extent_allocation_hint()
925 struct extent_map *em; in cow_file_range() local
980 em = alloc_extent_map(); in cow_file_range()
981 if (!em) { in cow_file_range()
985 em->start = start; in cow_file_range()
986 em->orig_start = em->start; in cow_file_range()
988 em->len = ins.offset; in cow_file_range()
989 em->mod_start = em->start; in cow_file_range()
990 em->mod_len = em->len; in cow_file_range()
992 em->block_start = ins.objectid; in cow_file_range()
993 em->block_len = ins.offset; in cow_file_range()
994 em->orig_block_len = ins.offset; in cow_file_range()
995 em->ram_bytes = ram_size; in cow_file_range()
996 em->bdev = root->fs_info->fs_devices->latest_bdev; in cow_file_range()
997 set_bit(EXTENT_FLAG_PINNED, &em->flags); in cow_file_range()
998 em->generation = -1; in cow_file_range()
1002 ret = add_extent_mapping(em_tree, em, 1); in cow_file_range()
1005 free_extent_map(em); in cow_file_range()
1404 struct extent_map *em; in run_delalloc_nocow() local
1407 em = alloc_extent_map(); in run_delalloc_nocow()
1408 BUG_ON(!em); /* -ENOMEM */ in run_delalloc_nocow()
1409 em->start = cur_offset; in run_delalloc_nocow()
1410 em->orig_start = found_key.offset - extent_offset; in run_delalloc_nocow()
1411 em->len = num_bytes; in run_delalloc_nocow()
1412 em->block_len = num_bytes; in run_delalloc_nocow()
1413 em->block_start = disk_bytenr; in run_delalloc_nocow()
1414 em->orig_block_len = disk_num_bytes; in run_delalloc_nocow()
1415 em->ram_bytes = ram_bytes; in run_delalloc_nocow()
1416 em->bdev = root->fs_info->fs_devices->latest_bdev; in run_delalloc_nocow()
1417 em->mod_start = em->start; in run_delalloc_nocow()
1418 em->mod_len = em->len; in run_delalloc_nocow()
1419 set_bit(EXTENT_FLAG_PINNED, &em->flags); in run_delalloc_nocow()
1420 set_bit(EXTENT_FLAG_FILLING, &em->flags); in run_delalloc_nocow()
1421 em->generation = -1; in run_delalloc_nocow()
1424 ret = add_extent_mapping(em_tree, em, 1); in run_delalloc_nocow()
1427 free_extent_map(em); in run_delalloc_nocow()
1430 btrfs_drop_extent_cache(inode, em->start, in run_delalloc_nocow()
1431 em->start + em->len - 1, 0); in run_delalloc_nocow()
4731 struct extent_map *em = NULL; in btrfs_cont_expand() local
4770 em = btrfs_get_extent(inode, NULL, 0, cur_offset, in btrfs_cont_expand()
4772 if (IS_ERR(em)) { in btrfs_cont_expand()
4773 err = PTR_ERR(em); in btrfs_cont_expand()
4774 em = NULL; in btrfs_cont_expand()
4777 last_byte = min(extent_map_end(em), block_end); in btrfs_cont_expand()
4779 if (!test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) { in btrfs_cont_expand()
4820 free_extent_map(em); in btrfs_cont_expand()
4821 em = NULL; in btrfs_cont_expand()
4826 free_extent_map(em); in btrfs_cont_expand()
5023 struct extent_map *em; in evict_inode_truncate_pages() local
5026 em = rb_entry(node, struct extent_map, rb_node); in evict_inode_truncate_pages()
5027 clear_bit(EXTENT_FLAG_PINNED, &em->flags); in evict_inode_truncate_pages()
5028 clear_bit(EXTENT_FLAG_LOGGING, &em->flags); in evict_inode_truncate_pages()
5029 remove_extent_mapping(map_tree, em); in evict_inode_truncate_pages()
5030 free_extent_map(em); in evict_inode_truncate_pages()
6570 static struct extent_map *next_extent_map(struct extent_map *em) in next_extent_map() argument
6574 next = rb_next(&em->rb_node); in next_extent_map()
6580 static struct extent_map *prev_extent_map(struct extent_map *em) in prev_extent_map() argument
6584 prev = rb_prev(&em->rb_node); in prev_extent_map()
6597 struct extent_map *em, in merge_extent_mapping() argument
6606 BUG_ON(map_start < em->start || map_start >= extent_map_end(em)); in merge_extent_mapping()
6616 start = prev ? extent_map_end(prev) : em->start; in merge_extent_mapping()
6617 start = max_t(u64, start, em->start); in merge_extent_mapping()
6618 end = next ? next->start : extent_map_end(em); in merge_extent_mapping()
6619 end = min_t(u64, end, extent_map_end(em)); in merge_extent_mapping()
6620 start_diff = start - em->start; in merge_extent_mapping()
6621 em->start = start; in merge_extent_mapping()
6622 em->len = end - start; in merge_extent_mapping()
6623 if (em->block_start < EXTENT_MAP_LAST_BYTE && in merge_extent_mapping()
6624 !test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) { in merge_extent_mapping()
6625 em->block_start += start_diff; in merge_extent_mapping()
6626 em->block_len -= start_diff; in merge_extent_mapping()
6628 return add_extent_mapping(em_tree, em, 0); in merge_extent_mapping()
6687 struct extent_map *em = NULL; in btrfs_get_extent() local
6695 em = lookup_extent_mapping(em_tree, start, len); in btrfs_get_extent()
6696 if (em) in btrfs_get_extent()
6697 em->bdev = root->fs_info->fs_devices->latest_bdev; in btrfs_get_extent()
6700 if (em) { in btrfs_get_extent()
6701 if (em->start > start || em->start + em->len <= start) in btrfs_get_extent()
6702 free_extent_map(em); in btrfs_get_extent()
6703 else if (em->block_start == EXTENT_MAP_INLINE && page) in btrfs_get_extent()
6704 free_extent_map(em); in btrfs_get_extent()
6708 em = alloc_extent_map(); in btrfs_get_extent()
6709 if (!em) { in btrfs_get_extent()
6713 em->bdev = root->fs_info->fs_devices->latest_bdev; in btrfs_get_extent()
6714 em->start = EXTENT_MAP_HOLE; in btrfs_get_extent()
6715 em->orig_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
6716 em->len = (u64)-1; in btrfs_get_extent()
6717 em->block_len = (u64)-1; in btrfs_get_extent()
6795 em->start = start; in btrfs_get_extent()
6796 em->orig_start = start; in btrfs_get_extent()
6797 em->len = found_key.offset - start; in btrfs_get_extent()
6801 btrfs_extent_item_to_extent_map(inode, path, item, new_inline, em); in btrfs_get_extent()
6820 em->start = extent_start + extent_offset; in btrfs_get_extent()
6821 em->len = ALIGN(copy_size, root->sectorsize); in btrfs_get_extent()
6822 em->orig_block_len = em->len; in btrfs_get_extent()
6823 em->orig_start = em->start; in btrfs_get_extent()
6851 free_extent_map(em); in btrfs_get_extent()
6852 em = NULL; in btrfs_get_extent()
6867 set_extent_uptodate(io_tree, em->start, in btrfs_get_extent()
6868 extent_map_end(em) - 1, NULL, GFP_NOFS); in btrfs_get_extent()
6872 em->start = start; in btrfs_get_extent()
6873 em->orig_start = start; in btrfs_get_extent()
6874 em->len = len; in btrfs_get_extent()
6876 em->block_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
6877 set_bit(EXTENT_FLAG_VACANCY, &em->flags); in btrfs_get_extent()
6880 if (em->start > start || extent_map_end(em) <= start) { in btrfs_get_extent()
6882 em->start, em->len, start, len); in btrfs_get_extent()
6889 ret = add_extent_mapping(em_tree, em, 0); in btrfs_get_extent()
6911 em, start); in btrfs_get_extent()
6914 free_extent_map(em); in btrfs_get_extent()
6915 em = NULL; in btrfs_get_extent()
6918 free_extent_map(em); in btrfs_get_extent()
6919 em = existing; in btrfs_get_extent()
6926 trace_btrfs_get_extent(root, em); in btrfs_get_extent()
6936 free_extent_map(em); in btrfs_get_extent()
6939 BUG_ON(!em); /* Error is always set */ in btrfs_get_extent()
6940 return em; in btrfs_get_extent()
6947 struct extent_map *em; in btrfs_get_extent_fiemap() local
6955 em = btrfs_get_extent(inode, page, pg_offset, start, len, create); in btrfs_get_extent_fiemap()
6956 if (IS_ERR(em)) in btrfs_get_extent_fiemap()
6957 return em; in btrfs_get_extent_fiemap()
6958 if (em) { in btrfs_get_extent_fiemap()
6965 if (em->block_start != EXTENT_MAP_HOLE && in btrfs_get_extent_fiemap()
6966 !test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_extent_fiemap()
6967 return em; in btrfs_get_extent_fiemap()
6969 hole_em = em; in btrfs_get_extent_fiemap()
6979 em = NULL; in btrfs_get_extent_fiemap()
6993 em = hole_em; in btrfs_get_extent_fiemap()
7008 em = alloc_extent_map(); in btrfs_get_extent_fiemap()
7009 if (!em) { in btrfs_get_extent_fiemap()
7032 em->bdev = NULL; in btrfs_get_extent_fiemap()
7038 em->len = min(hole_len, in btrfs_get_extent_fiemap()
7040 em->start = hole_start; in btrfs_get_extent_fiemap()
7041 em->orig_start = hole_start; in btrfs_get_extent_fiemap()
7046 em->block_start = hole_em->block_start; in btrfs_get_extent_fiemap()
7047 em->block_len = hole_len; in btrfs_get_extent_fiemap()
7049 set_bit(EXTENT_FLAG_PREALLOC, &em->flags); in btrfs_get_extent_fiemap()
7051 em->start = range_start; in btrfs_get_extent_fiemap()
7052 em->len = found; in btrfs_get_extent_fiemap()
7053 em->orig_start = range_start; in btrfs_get_extent_fiemap()
7054 em->block_start = EXTENT_MAP_DELALLOC; in btrfs_get_extent_fiemap()
7055 em->block_len = found; in btrfs_get_extent_fiemap()
7064 free_extent_map(em); in btrfs_get_extent_fiemap()
7067 return em; in btrfs_get_extent_fiemap()
7074 struct extent_map *em; in btrfs_new_extent_direct() local
7085 em = create_pinned_em(inode, start, ins.offset, start, ins.objectid, in btrfs_new_extent_direct()
7087 if (IS_ERR(em)) { in btrfs_new_extent_direct()
7089 return em; in btrfs_new_extent_direct()
7096 free_extent_map(em); in btrfs_new_extent_direct()
7100 return em; in btrfs_new_extent_direct()
7388 struct extent_map *em; in create_pinned_em() local
7393 em = alloc_extent_map(); in create_pinned_em()
7394 if (!em) in create_pinned_em()
7397 em->start = start; in create_pinned_em()
7398 em->orig_start = orig_start; in create_pinned_em()
7399 em->mod_start = start; in create_pinned_em()
7400 em->mod_len = len; in create_pinned_em()
7401 em->len = len; in create_pinned_em()
7402 em->block_len = block_len; in create_pinned_em()
7403 em->block_start = block_start; in create_pinned_em()
7404 em->bdev = root->fs_info->fs_devices->latest_bdev; in create_pinned_em()
7405 em->orig_block_len = orig_block_len; in create_pinned_em()
7406 em->ram_bytes = ram_bytes; in create_pinned_em()
7407 em->generation = -1; in create_pinned_em()
7408 set_bit(EXTENT_FLAG_PINNED, &em->flags); in create_pinned_em()
7410 set_bit(EXTENT_FLAG_FILLING, &em->flags); in create_pinned_em()
7413 btrfs_drop_extent_cache(inode, em->start, in create_pinned_em()
7414 em->start + em->len - 1, 0); in create_pinned_em()
7416 ret = add_extent_mapping(em_tree, em, 1); in create_pinned_em()
7421 free_extent_map(em); in create_pinned_em()
7425 return em; in create_pinned_em()
7432 struct extent_map *em; in btrfs_get_blocks_direct() local
7467 em = btrfs_get_extent(inode, NULL, 0, start, len, 0); in btrfs_get_blocks_direct()
7468 if (IS_ERR(em)) { in btrfs_get_blocks_direct()
7469 ret = PTR_ERR(em); in btrfs_get_blocks_direct()
7487 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags) || in btrfs_get_blocks_direct()
7488 em->block_start == EXTENT_MAP_INLINE) { in btrfs_get_blocks_direct()
7489 free_extent_map(em); in btrfs_get_blocks_direct()
7495 if (!create && (em->block_start == EXTENT_MAP_HOLE || in btrfs_get_blocks_direct()
7496 test_bit(EXTENT_FLAG_PREALLOC, &em->flags))) { in btrfs_get_blocks_direct()
7497 free_extent_map(em); in btrfs_get_blocks_direct()
7511 len = min(len, em->len - (start - em->start)); in btrfs_get_blocks_direct()
7516 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags) || in btrfs_get_blocks_direct()
7518 em->block_start != EXTENT_MAP_HOLE)) { in btrfs_get_blocks_direct()
7522 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_blocks_direct()
7526 len = min(len, em->len - (start - em->start)); in btrfs_get_blocks_direct()
7527 block_start = em->block_start + (start - em->start); in btrfs_get_blocks_direct()
7532 free_extent_map(em); in btrfs_get_blocks_direct()
7533 em = create_pinned_em(inode, start, len, in btrfs_get_blocks_direct()
7538 if (IS_ERR(em)) { in btrfs_get_blocks_direct()
7539 ret = PTR_ERR(em); in btrfs_get_blocks_direct()
7547 free_extent_map(em); in btrfs_get_blocks_direct()
7559 free_extent_map(em); in btrfs_get_blocks_direct()
7560 em = btrfs_new_extent_direct(inode, start, len); in btrfs_get_blocks_direct()
7561 if (IS_ERR(em)) { in btrfs_get_blocks_direct()
7562 ret = PTR_ERR(em); in btrfs_get_blocks_direct()
7565 len = min(len, em->len - (start - em->start)); in btrfs_get_blocks_direct()
7567 bh_result->b_blocknr = (em->block_start + (start - em->start)) >> in btrfs_get_blocks_direct()
7570 bh_result->b_bdev = em->bdev; in btrfs_get_blocks_direct()
7573 if (!test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_blocks_direct()
7613 free_extent_map(em); in btrfs_get_blocks_direct()
9627 struct extent_map *em; in __btrfs_prealloc_file_range() local
9674 em = alloc_extent_map(); in __btrfs_prealloc_file_range()
9675 if (!em) { in __btrfs_prealloc_file_range()
9681 em->start = cur_offset; in __btrfs_prealloc_file_range()
9682 em->orig_start = cur_offset; in __btrfs_prealloc_file_range()
9683 em->len = ins.offset; in __btrfs_prealloc_file_range()
9684 em->block_start = ins.objectid; in __btrfs_prealloc_file_range()
9685 em->block_len = ins.offset; in __btrfs_prealloc_file_range()
9686 em->orig_block_len = ins.offset; in __btrfs_prealloc_file_range()
9687 em->ram_bytes = ins.offset; in __btrfs_prealloc_file_range()
9688 em->bdev = root->fs_info->fs_devices->latest_bdev; in __btrfs_prealloc_file_range()
9689 set_bit(EXTENT_FLAG_PREALLOC, &em->flags); in __btrfs_prealloc_file_range()
9690 em->generation = trans->transid; in __btrfs_prealloc_file_range()
9694 ret = add_extent_mapping(em_tree, em, 1); in __btrfs_prealloc_file_range()
9702 free_extent_map(em); in __btrfs_prealloc_file_range()