Lines Matching refs:em

680 	struct extent_map *em;  in submit_compressed_extents()  local
771 em = alloc_extent_map(); in submit_compressed_extents()
772 if (!em) { in submit_compressed_extents()
776 em->start = async_extent->start; in submit_compressed_extents()
777 em->len = async_extent->ram_size; in submit_compressed_extents()
778 em->orig_start = em->start; in submit_compressed_extents()
779 em->mod_start = em->start; in submit_compressed_extents()
780 em->mod_len = em->len; in submit_compressed_extents()
782 em->block_start = ins.objectid; in submit_compressed_extents()
783 em->block_len = ins.offset; in submit_compressed_extents()
784 em->orig_block_len = ins.offset; in submit_compressed_extents()
785 em->ram_bytes = async_extent->ram_size; in submit_compressed_extents()
786 em->bdev = root->fs_info->fs_devices->latest_bdev; in submit_compressed_extents()
787 em->compress_type = async_extent->compress_type; in submit_compressed_extents()
788 set_bit(EXTENT_FLAG_PINNED, &em->flags); in submit_compressed_extents()
789 set_bit(EXTENT_FLAG_COMPRESSED, &em->flags); in submit_compressed_extents()
790 em->generation = -1; in submit_compressed_extents()
794 ret = add_extent_mapping(em_tree, em, 1); in submit_compressed_extents()
797 free_extent_map(em); in submit_compressed_extents()
877 struct extent_map *em; in get_extent_allocation_hint() local
881 em = search_extent_mapping(em_tree, start, num_bytes); in get_extent_allocation_hint()
882 if (em) { in get_extent_allocation_hint()
888 if (em->block_start >= EXTENT_MAP_LAST_BYTE) { in get_extent_allocation_hint()
889 free_extent_map(em); in get_extent_allocation_hint()
890 em = search_extent_mapping(em_tree, 0, 0); in get_extent_allocation_hint()
891 if (em && em->block_start < EXTENT_MAP_LAST_BYTE) in get_extent_allocation_hint()
892 alloc_hint = em->block_start; in get_extent_allocation_hint()
893 if (em) in get_extent_allocation_hint()
894 free_extent_map(em); in get_extent_allocation_hint()
896 alloc_hint = em->block_start; in get_extent_allocation_hint()
897 free_extent_map(em); in get_extent_allocation_hint()
932 struct extent_map *em; in cow_file_range() local
987 em = alloc_extent_map(); in cow_file_range()
988 if (!em) { in cow_file_range()
992 em->start = start; in cow_file_range()
993 em->orig_start = em->start; in cow_file_range()
995 em->len = ins.offset; in cow_file_range()
996 em->mod_start = em->start; in cow_file_range()
997 em->mod_len = em->len; in cow_file_range()
999 em->block_start = ins.objectid; in cow_file_range()
1000 em->block_len = ins.offset; in cow_file_range()
1001 em->orig_block_len = ins.offset; in cow_file_range()
1002 em->ram_bytes = ram_size; in cow_file_range()
1003 em->bdev = root->fs_info->fs_devices->latest_bdev; in cow_file_range()
1004 set_bit(EXTENT_FLAG_PINNED, &em->flags); in cow_file_range()
1005 em->generation = -1; in cow_file_range()
1009 ret = add_extent_mapping(em_tree, em, 1); in cow_file_range()
1012 free_extent_map(em); in cow_file_range()
1414 struct extent_map *em; in run_delalloc_nocow() local
1417 em = alloc_extent_map(); in run_delalloc_nocow()
1418 BUG_ON(!em); /* -ENOMEM */ in run_delalloc_nocow()
1419 em->start = cur_offset; in run_delalloc_nocow()
1420 em->orig_start = found_key.offset - extent_offset; in run_delalloc_nocow()
1421 em->len = num_bytes; in run_delalloc_nocow()
1422 em->block_len = num_bytes; in run_delalloc_nocow()
1423 em->block_start = disk_bytenr; in run_delalloc_nocow()
1424 em->orig_block_len = disk_num_bytes; in run_delalloc_nocow()
1425 em->ram_bytes = ram_bytes; in run_delalloc_nocow()
1426 em->bdev = root->fs_info->fs_devices->latest_bdev; in run_delalloc_nocow()
1427 em->mod_start = em->start; in run_delalloc_nocow()
1428 em->mod_len = em->len; in run_delalloc_nocow()
1429 set_bit(EXTENT_FLAG_PINNED, &em->flags); in run_delalloc_nocow()
1430 set_bit(EXTENT_FLAG_FILLING, &em->flags); in run_delalloc_nocow()
1431 em->generation = -1; in run_delalloc_nocow()
1434 ret = add_extent_mapping(em_tree, em, 1); in run_delalloc_nocow()
1437 free_extent_map(em); in run_delalloc_nocow()
1440 btrfs_drop_extent_cache(inode, em->start, in run_delalloc_nocow()
1441 em->start + em->len - 1, 0); in run_delalloc_nocow()
4773 struct extent_map *em = NULL; in btrfs_cont_expand() local
4812 em = btrfs_get_extent(inode, NULL, 0, cur_offset, in btrfs_cont_expand()
4814 if (IS_ERR(em)) { in btrfs_cont_expand()
4815 err = PTR_ERR(em); in btrfs_cont_expand()
4816 em = NULL; in btrfs_cont_expand()
4819 last_byte = min(extent_map_end(em), block_end); in btrfs_cont_expand()
4821 if (!test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) { in btrfs_cont_expand()
4862 free_extent_map(em); in btrfs_cont_expand()
4863 em = NULL; in btrfs_cont_expand()
4868 free_extent_map(em); in btrfs_cont_expand()
5065 struct extent_map *em; in evict_inode_truncate_pages() local
5068 em = rb_entry(node, struct extent_map, rb_node); in evict_inode_truncate_pages()
5069 clear_bit(EXTENT_FLAG_PINNED, &em->flags); in evict_inode_truncate_pages()
5070 clear_bit(EXTENT_FLAG_LOGGING, &em->flags); in evict_inode_truncate_pages()
5071 remove_extent_mapping(map_tree, em); in evict_inode_truncate_pages()
5072 free_extent_map(em); in evict_inode_truncate_pages()
6638 static struct extent_map *next_extent_map(struct extent_map *em) in next_extent_map() argument
6642 next = rb_next(&em->rb_node); in next_extent_map()
6648 static struct extent_map *prev_extent_map(struct extent_map *em) in prev_extent_map() argument
6652 prev = rb_prev(&em->rb_node); in prev_extent_map()
6665 struct extent_map *em, in merge_extent_mapping() argument
6674 BUG_ON(map_start < em->start || map_start >= extent_map_end(em)); in merge_extent_mapping()
6684 start = prev ? extent_map_end(prev) : em->start; in merge_extent_mapping()
6685 start = max_t(u64, start, em->start); in merge_extent_mapping()
6686 end = next ? next->start : extent_map_end(em); in merge_extent_mapping()
6687 end = min_t(u64, end, extent_map_end(em)); in merge_extent_mapping()
6688 start_diff = start - em->start; in merge_extent_mapping()
6689 em->start = start; in merge_extent_mapping()
6690 em->len = end - start; in merge_extent_mapping()
6691 if (em->block_start < EXTENT_MAP_LAST_BYTE && in merge_extent_mapping()
6692 !test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) { in merge_extent_mapping()
6693 em->block_start += start_diff; in merge_extent_mapping()
6694 em->block_len -= start_diff; in merge_extent_mapping()
6696 return add_extent_mapping(em_tree, em, 0); in merge_extent_mapping()
6755 struct extent_map *em = NULL; in btrfs_get_extent() local
6763 em = lookup_extent_mapping(em_tree, start, len); in btrfs_get_extent()
6764 if (em) in btrfs_get_extent()
6765 em->bdev = root->fs_info->fs_devices->latest_bdev; in btrfs_get_extent()
6768 if (em) { in btrfs_get_extent()
6769 if (em->start > start || em->start + em->len <= start) in btrfs_get_extent()
6770 free_extent_map(em); in btrfs_get_extent()
6771 else if (em->block_start == EXTENT_MAP_INLINE && page) in btrfs_get_extent()
6772 free_extent_map(em); in btrfs_get_extent()
6776 em = alloc_extent_map(); in btrfs_get_extent()
6777 if (!em) { in btrfs_get_extent()
6781 em->bdev = root->fs_info->fs_devices->latest_bdev; in btrfs_get_extent()
6782 em->start = EXTENT_MAP_HOLE; in btrfs_get_extent()
6783 em->orig_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
6784 em->len = (u64)-1; in btrfs_get_extent()
6785 em->block_len = (u64)-1; in btrfs_get_extent()
6863 em->start = start; in btrfs_get_extent()
6864 em->orig_start = start; in btrfs_get_extent()
6865 em->len = found_key.offset - start; in btrfs_get_extent()
6869 btrfs_extent_item_to_extent_map(inode, path, item, new_inline, em); in btrfs_get_extent()
6888 em->start = extent_start + extent_offset; in btrfs_get_extent()
6889 em->len = ALIGN(copy_size, root->sectorsize); in btrfs_get_extent()
6890 em->orig_block_len = em->len; in btrfs_get_extent()
6891 em->orig_start = em->start; in btrfs_get_extent()
6919 free_extent_map(em); in btrfs_get_extent()
6920 em = NULL; in btrfs_get_extent()
6935 set_extent_uptodate(io_tree, em->start, in btrfs_get_extent()
6936 extent_map_end(em) - 1, NULL, GFP_NOFS); in btrfs_get_extent()
6940 em->start = start; in btrfs_get_extent()
6941 em->orig_start = start; in btrfs_get_extent()
6942 em->len = len; in btrfs_get_extent()
6944 em->block_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
6945 set_bit(EXTENT_FLAG_VACANCY, &em->flags); in btrfs_get_extent()
6948 if (em->start > start || extent_map_end(em) <= start) { in btrfs_get_extent()
6950 em->start, em->len, start, len); in btrfs_get_extent()
6957 ret = add_extent_mapping(em_tree, em, 0); in btrfs_get_extent()
6979 em, start); in btrfs_get_extent()
6982 free_extent_map(em); in btrfs_get_extent()
6983 em = NULL; in btrfs_get_extent()
6986 free_extent_map(em); in btrfs_get_extent()
6987 em = existing; in btrfs_get_extent()
6994 trace_btrfs_get_extent(root, em); in btrfs_get_extent()
7003 free_extent_map(em); in btrfs_get_extent()
7006 BUG_ON(!em); /* Error is always set */ in btrfs_get_extent()
7007 return em; in btrfs_get_extent()
7014 struct extent_map *em; in btrfs_get_extent_fiemap() local
7022 em = btrfs_get_extent(inode, page, pg_offset, start, len, create); in btrfs_get_extent_fiemap()
7023 if (IS_ERR(em)) in btrfs_get_extent_fiemap()
7024 return em; in btrfs_get_extent_fiemap()
7025 if (em) { in btrfs_get_extent_fiemap()
7032 if (em->block_start != EXTENT_MAP_HOLE && in btrfs_get_extent_fiemap()
7033 !test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_extent_fiemap()
7034 return em; in btrfs_get_extent_fiemap()
7036 hole_em = em; in btrfs_get_extent_fiemap()
7046 em = NULL; in btrfs_get_extent_fiemap()
7060 em = hole_em; in btrfs_get_extent_fiemap()
7075 em = alloc_extent_map(); in btrfs_get_extent_fiemap()
7076 if (!em) { in btrfs_get_extent_fiemap()
7099 em->bdev = NULL; in btrfs_get_extent_fiemap()
7105 em->len = min(hole_len, in btrfs_get_extent_fiemap()
7107 em->start = hole_start; in btrfs_get_extent_fiemap()
7108 em->orig_start = hole_start; in btrfs_get_extent_fiemap()
7113 em->block_start = hole_em->block_start; in btrfs_get_extent_fiemap()
7114 em->block_len = hole_len; in btrfs_get_extent_fiemap()
7116 set_bit(EXTENT_FLAG_PREALLOC, &em->flags); in btrfs_get_extent_fiemap()
7118 em->start = range_start; in btrfs_get_extent_fiemap()
7119 em->len = found; in btrfs_get_extent_fiemap()
7120 em->orig_start = range_start; in btrfs_get_extent_fiemap()
7121 em->block_start = EXTENT_MAP_DELALLOC; in btrfs_get_extent_fiemap()
7122 em->block_len = found; in btrfs_get_extent_fiemap()
7131 free_extent_map(em); in btrfs_get_extent_fiemap()
7134 return em; in btrfs_get_extent_fiemap()
7141 struct extent_map *em; in btrfs_new_extent_direct() local
7152 em = create_pinned_em(inode, start, ins.offset, start, ins.objectid, in btrfs_new_extent_direct()
7154 if (IS_ERR(em)) { in btrfs_new_extent_direct()
7156 return em; in btrfs_new_extent_direct()
7163 free_extent_map(em); in btrfs_new_extent_direct()
7167 return em; in btrfs_new_extent_direct()
7455 struct extent_map *em; in create_pinned_em() local
7460 em = alloc_extent_map(); in create_pinned_em()
7461 if (!em) in create_pinned_em()
7464 em->start = start; in create_pinned_em()
7465 em->orig_start = orig_start; in create_pinned_em()
7466 em->mod_start = start; in create_pinned_em()
7467 em->mod_len = len; in create_pinned_em()
7468 em->len = len; in create_pinned_em()
7469 em->block_len = block_len; in create_pinned_em()
7470 em->block_start = block_start; in create_pinned_em()
7471 em->bdev = root->fs_info->fs_devices->latest_bdev; in create_pinned_em()
7472 em->orig_block_len = orig_block_len; in create_pinned_em()
7473 em->ram_bytes = ram_bytes; in create_pinned_em()
7474 em->generation = -1; in create_pinned_em()
7475 set_bit(EXTENT_FLAG_PINNED, &em->flags); in create_pinned_em()
7477 set_bit(EXTENT_FLAG_FILLING, &em->flags); in create_pinned_em()
7480 btrfs_drop_extent_cache(inode, em->start, in create_pinned_em()
7481 em->start + em->len - 1, 0); in create_pinned_em()
7483 ret = add_extent_mapping(em_tree, em, 1); in create_pinned_em()
7488 free_extent_map(em); in create_pinned_em()
7492 return em; in create_pinned_em()
7525 struct extent_map *em; in btrfs_get_blocks_direct() local
7563 em = btrfs_get_extent(inode, NULL, 0, start, len, 0); in btrfs_get_blocks_direct()
7564 if (IS_ERR(em)) { in btrfs_get_blocks_direct()
7565 ret = PTR_ERR(em); in btrfs_get_blocks_direct()
7583 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags) || in btrfs_get_blocks_direct()
7584 em->block_start == EXTENT_MAP_INLINE) { in btrfs_get_blocks_direct()
7585 free_extent_map(em); in btrfs_get_blocks_direct()
7591 if (!create && (em->block_start == EXTENT_MAP_HOLE || in btrfs_get_blocks_direct()
7592 test_bit(EXTENT_FLAG_PREALLOC, &em->flags))) { in btrfs_get_blocks_direct()
7593 free_extent_map(em); in btrfs_get_blocks_direct()
7607 len = min(len, em->len - (start - em->start)); in btrfs_get_blocks_direct()
7612 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags) || in btrfs_get_blocks_direct()
7614 em->block_start != EXTENT_MAP_HOLE)) { in btrfs_get_blocks_direct()
7618 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_blocks_direct()
7622 len = min(len, em->len - (start - em->start)); in btrfs_get_blocks_direct()
7623 block_start = em->block_start + (start - em->start); in btrfs_get_blocks_direct()
7628 free_extent_map(em); in btrfs_get_blocks_direct()
7629 em = create_pinned_em(inode, start, len, in btrfs_get_blocks_direct()
7634 if (IS_ERR(em)) { in btrfs_get_blocks_direct()
7635 ret = PTR_ERR(em); in btrfs_get_blocks_direct()
7643 free_extent_map(em); in btrfs_get_blocks_direct()
7655 free_extent_map(em); in btrfs_get_blocks_direct()
7656 em = btrfs_new_extent_direct(inode, start, len); in btrfs_get_blocks_direct()
7657 if (IS_ERR(em)) { in btrfs_get_blocks_direct()
7658 ret = PTR_ERR(em); in btrfs_get_blocks_direct()
7661 len = min(len, em->len - (start - em->start)); in btrfs_get_blocks_direct()
7663 bh_result->b_blocknr = (em->block_start + (start - em->start)) >> in btrfs_get_blocks_direct()
7666 bh_result->b_bdev = em->bdev; in btrfs_get_blocks_direct()
7669 if (!test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_blocks_direct()
7699 free_extent_map(em); in btrfs_get_blocks_direct()
9768 struct extent_map *em; in __btrfs_prealloc_file_range() local
9824 em = alloc_extent_map(); in __btrfs_prealloc_file_range()
9825 if (!em) { in __btrfs_prealloc_file_range()
9831 em->start = cur_offset; in __btrfs_prealloc_file_range()
9832 em->orig_start = cur_offset; in __btrfs_prealloc_file_range()
9833 em->len = ins.offset; in __btrfs_prealloc_file_range()
9834 em->block_start = ins.objectid; in __btrfs_prealloc_file_range()
9835 em->block_len = ins.offset; in __btrfs_prealloc_file_range()
9836 em->orig_block_len = ins.offset; in __btrfs_prealloc_file_range()
9837 em->ram_bytes = ins.offset; in __btrfs_prealloc_file_range()
9838 em->bdev = root->fs_info->fs_devices->latest_bdev; in __btrfs_prealloc_file_range()
9839 set_bit(EXTENT_FLAG_PREALLOC, &em->flags); in __btrfs_prealloc_file_range()
9840 em->generation = trans->transid; in __btrfs_prealloc_file_range()
9844 ret = add_extent_mapping(em_tree, em, 1); in __btrfs_prealloc_file_range()
9852 free_extent_map(em); in __btrfs_prealloc_file_range()