Lines Matching refs:em
773 struct extent_map *em; in submit_compressed_extents() local
851 em = create_io_em(inode, async_extent->start, in submit_compressed_extents()
860 if (IS_ERR(em)) in submit_compressed_extents()
863 free_extent_map(em); in submit_compressed_extents()
936 struct extent_map *em; in get_extent_allocation_hint() local
940 em = search_extent_mapping(em_tree, start, num_bytes); in get_extent_allocation_hint()
941 if (em) { in get_extent_allocation_hint()
947 if (em->block_start >= EXTENT_MAP_LAST_BYTE) { in get_extent_allocation_hint()
948 free_extent_map(em); in get_extent_allocation_hint()
949 em = search_extent_mapping(em_tree, 0, 0); in get_extent_allocation_hint()
950 if (em && em->block_start < EXTENT_MAP_LAST_BYTE) in get_extent_allocation_hint()
951 alloc_hint = em->block_start; in get_extent_allocation_hint()
952 if (em) in get_extent_allocation_hint()
953 free_extent_map(em); in get_extent_allocation_hint()
955 alloc_hint = em->block_start; in get_extent_allocation_hint()
956 free_extent_map(em); in get_extent_allocation_hint()
991 struct extent_map *em; in cow_file_range() local
1064 em = create_io_em(inode, start, ins.offset, /* len */ in cow_file_range()
1072 if (IS_ERR(em)) { in cow_file_range()
1073 ret = PTR_ERR(em); in cow_file_range()
1076 free_extent_map(em); in cow_file_range()
1697 struct extent_map *em; in run_delalloc_nocow() local
1699 em = create_io_em(inode, cur_offset, num_bytes, in run_delalloc_nocow()
1706 if (IS_ERR(em)) { in run_delalloc_nocow()
1707 ret = PTR_ERR(em); in run_delalloc_nocow()
1710 free_extent_map(em); in run_delalloc_nocow()
2265 struct extent_map *em; in btrfs_find_new_delalloc_bytes() local
2269 em = btrfs_get_extent(inode, NULL, 0, search_start, search_len); in btrfs_find_new_delalloc_bytes()
2270 if (IS_ERR(em)) in btrfs_find_new_delalloc_bytes()
2271 return PTR_ERR(em); in btrfs_find_new_delalloc_bytes()
2273 if (em->block_start != EXTENT_MAP_HOLE) in btrfs_find_new_delalloc_bytes()
2276 em_len = em->len; in btrfs_find_new_delalloc_bytes()
2277 if (em->start < search_start) in btrfs_find_new_delalloc_bytes()
2278 em_len -= search_start - em->start; in btrfs_find_new_delalloc_bytes()
2287 search_start = extent_map_end(em); in btrfs_find_new_delalloc_bytes()
2288 free_extent_map(em); in btrfs_find_new_delalloc_bytes()
4763 struct extent_map *em = NULL; in btrfs_cont_expand() local
4789 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, cur_offset, in btrfs_cont_expand()
4791 if (IS_ERR(em)) { in btrfs_cont_expand()
4792 err = PTR_ERR(em); in btrfs_cont_expand()
4793 em = NULL; in btrfs_cont_expand()
4796 last_byte = min(extent_map_end(em), block_end); in btrfs_cont_expand()
4800 if (!test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) { in btrfs_cont_expand()
4851 free_extent_map(em); in btrfs_cont_expand()
4852 em = NULL; in btrfs_cont_expand()
4857 free_extent_map(em); in btrfs_cont_expand()
5000 struct extent_map *em; in evict_inode_truncate_pages() local
5003 em = rb_entry(node, struct extent_map, rb_node); in evict_inode_truncate_pages()
5004 clear_bit(EXTENT_FLAG_PINNED, &em->flags); in evict_inode_truncate_pages()
5005 clear_bit(EXTENT_FLAG_LOGGING, &em->flags); in evict_inode_truncate_pages()
5006 remove_extent_mapping(map_tree, em); in evict_inode_truncate_pages()
5007 free_extent_map(em); in evict_inode_truncate_pages()
6607 struct extent_map *em = NULL; in btrfs_get_extent() local
6612 em = lookup_extent_mapping(em_tree, start, len); in btrfs_get_extent()
6615 if (em) { in btrfs_get_extent()
6616 if (em->start > start || em->start + em->len <= start) in btrfs_get_extent()
6617 free_extent_map(em); in btrfs_get_extent()
6618 else if (em->block_start == EXTENT_MAP_INLINE && page) in btrfs_get_extent()
6619 free_extent_map(em); in btrfs_get_extent()
6623 em = alloc_extent_map(); in btrfs_get_extent()
6624 if (!em) { in btrfs_get_extent()
6628 em->start = EXTENT_MAP_HOLE; in btrfs_get_extent()
6629 em->orig_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
6630 em->len = (u64)-1; in btrfs_get_extent()
6631 em->block_len = (u64)-1; in btrfs_get_extent()
6718 em->start = start; in btrfs_get_extent()
6719 em->orig_start = start; in btrfs_get_extent()
6720 em->len = found_key.offset - start; in btrfs_get_extent()
6721 em->block_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
6725 btrfs_extent_item_to_extent_map(inode, path, item, !page, em); in btrfs_get_extent()
6744 em->start = extent_start + extent_offset; in btrfs_get_extent()
6745 em->len = ALIGN(copy_size, fs_info->sectorsize); in btrfs_get_extent()
6746 em->orig_block_len = em->len; in btrfs_get_extent()
6747 em->orig_start = em->start; in btrfs_get_extent()
6771 set_extent_uptodate(io_tree, em->start, in btrfs_get_extent()
6772 extent_map_end(em) - 1, NULL, GFP_NOFS); in btrfs_get_extent()
6776 em->start = start; in btrfs_get_extent()
6777 em->orig_start = start; in btrfs_get_extent()
6778 em->len = len; in btrfs_get_extent()
6779 em->block_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
6783 if (em->start > start || extent_map_end(em) <= start) { in btrfs_get_extent()
6786 em->start, em->len, start, len); in btrfs_get_extent()
6792 ret = btrfs_add_extent_mapping(fs_info, em_tree, &em, start, len); in btrfs_get_extent()
6797 trace_btrfs_get_extent(root, inode, em); in btrfs_get_extent()
6800 free_extent_map(em); in btrfs_get_extent()
6803 return em; in btrfs_get_extent()
6809 struct extent_map *em; in btrfs_get_extent_fiemap() local
6817 em = btrfs_get_extent(inode, NULL, 0, start, len); in btrfs_get_extent_fiemap()
6818 if (IS_ERR(em)) in btrfs_get_extent_fiemap()
6819 return em; in btrfs_get_extent_fiemap()
6826 if (em->block_start != EXTENT_MAP_HOLE && in btrfs_get_extent_fiemap()
6827 !test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_extent_fiemap()
6828 return em; in btrfs_get_extent_fiemap()
6830 hole_em = em; in btrfs_get_extent_fiemap()
6839 em = NULL; in btrfs_get_extent_fiemap()
6853 em = hole_em; in btrfs_get_extent_fiemap()
6870 em = alloc_extent_map(); in btrfs_get_extent_fiemap()
6871 if (!em) { in btrfs_get_extent_fiemap()
6898 em->len = min(hole_len, delalloc_start - hole_start); in btrfs_get_extent_fiemap()
6899 em->start = hole_start; in btrfs_get_extent_fiemap()
6900 em->orig_start = hole_start; in btrfs_get_extent_fiemap()
6905 em->block_start = hole_em->block_start; in btrfs_get_extent_fiemap()
6906 em->block_len = hole_len; in btrfs_get_extent_fiemap()
6908 set_bit(EXTENT_FLAG_PREALLOC, &em->flags); in btrfs_get_extent_fiemap()
6914 em->start = delalloc_start; in btrfs_get_extent_fiemap()
6915 em->len = delalloc_len; in btrfs_get_extent_fiemap()
6916 em->orig_start = delalloc_start; in btrfs_get_extent_fiemap()
6917 em->block_start = EXTENT_MAP_DELALLOC; in btrfs_get_extent_fiemap()
6918 em->block_len = delalloc_len; in btrfs_get_extent_fiemap()
6927 free_extent_map(em); in btrfs_get_extent_fiemap()
6930 return em; in btrfs_get_extent_fiemap()
6943 struct extent_map *em = NULL; in btrfs_create_dio_extent() local
6947 em = create_io_em(inode, start, len, orig_start, block_start, in btrfs_create_dio_extent()
6951 if (IS_ERR(em)) in btrfs_create_dio_extent()
6957 if (em) { in btrfs_create_dio_extent()
6958 free_extent_map(em); in btrfs_create_dio_extent()
6961 em = ERR_PTR(ret); in btrfs_create_dio_extent()
6965 return em; in btrfs_create_dio_extent()
6973 struct extent_map *em; in btrfs_new_extent_direct() local
6984 em = btrfs_create_dio_extent(inode, start, ins.offset, start, in btrfs_new_extent_direct()
6988 if (IS_ERR(em)) in btrfs_new_extent_direct()
6992 return em; in btrfs_new_extent_direct()
7252 struct extent_map *em; in create_io_em() local
7261 em = alloc_extent_map(); in create_io_em()
7262 if (!em) in create_io_em()
7265 em->start = start; in create_io_em()
7266 em->orig_start = orig_start; in create_io_em()
7267 em->len = len; in create_io_em()
7268 em->block_len = block_len; in create_io_em()
7269 em->block_start = block_start; in create_io_em()
7270 em->orig_block_len = orig_block_len; in create_io_em()
7271 em->ram_bytes = ram_bytes; in create_io_em()
7272 em->generation = -1; in create_io_em()
7273 set_bit(EXTENT_FLAG_PINNED, &em->flags); in create_io_em()
7275 set_bit(EXTENT_FLAG_FILLING, &em->flags); in create_io_em()
7277 set_bit(EXTENT_FLAG_COMPRESSED, &em->flags); in create_io_em()
7278 em->compress_type = compress_type; in create_io_em()
7282 btrfs_drop_extent_cache(inode, em->start, in create_io_em()
7283 em->start + em->len - 1, 0); in create_io_em()
7285 ret = add_extent_mapping(em_tree, em, 1); in create_io_em()
7294 free_extent_map(em); in create_io_em()
7299 return em; in create_io_em()
7309 struct extent_map *em = *map; in btrfs_get_blocks_direct_write() local
7321 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags) || in btrfs_get_blocks_direct_write()
7323 em->block_start != EXTENT_MAP_HOLE)) { in btrfs_get_blocks_direct_write()
7327 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_blocks_direct_write()
7331 len = min(len, em->len - (start - em->start)); in btrfs_get_blocks_direct_write()
7332 block_start = em->block_start + (start - em->start); in btrfs_get_blocks_direct_write()
7345 free_extent_map(em); in btrfs_get_blocks_direct_write()
7346 *map = em = em2; in btrfs_get_blocks_direct_write()
7364 free_extent_map(em); in btrfs_get_blocks_direct_write()
7365 *map = em = btrfs_new_extent_direct(BTRFS_I(inode), start, len); in btrfs_get_blocks_direct_write()
7366 if (IS_ERR(em)) { in btrfs_get_blocks_direct_write()
7367 ret = PTR_ERR(em); in btrfs_get_blocks_direct_write()
7371 len = min(len, em->len - (start - em->start)); in btrfs_get_blocks_direct_write()
7391 struct extent_map *em; in btrfs_dio_iomap_begin() local
7460 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, start, len); in btrfs_dio_iomap_begin()
7461 if (IS_ERR(em)) { in btrfs_dio_iomap_begin()
7462 ret = PTR_ERR(em); in btrfs_dio_iomap_begin()
7480 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags) || in btrfs_dio_iomap_begin()
7481 em->block_start == EXTENT_MAP_INLINE) { in btrfs_dio_iomap_begin()
7482 free_extent_map(em); in btrfs_dio_iomap_begin()
7499 len = min(len, em->len - (start - em->start)); in btrfs_dio_iomap_begin()
7501 ret = btrfs_get_blocks_direct_write(&em, inode, dio_data, in btrfs_dio_iomap_begin()
7507 len = min(len, em->len - (start - em->start)); in btrfs_dio_iomap_begin()
7529 if ((em->block_start == EXTENT_MAP_HOLE) || in btrfs_dio_iomap_begin()
7530 (test_bit(EXTENT_FLAG_PREALLOC, &em->flags) && !write)) { in btrfs_dio_iomap_begin()
7534 iomap->addr = em->block_start + (start - em->start); in btrfs_dio_iomap_begin()
7541 free_extent_map(em); in btrfs_dio_iomap_begin()
9786 struct extent_map *em; in __btrfs_prealloc_file_range() local
9843 em = alloc_extent_map(); in __btrfs_prealloc_file_range()
9844 if (!em) { in __btrfs_prealloc_file_range()
9850 em->start = cur_offset; in __btrfs_prealloc_file_range()
9851 em->orig_start = cur_offset; in __btrfs_prealloc_file_range()
9852 em->len = ins.offset; in __btrfs_prealloc_file_range()
9853 em->block_start = ins.objectid; in __btrfs_prealloc_file_range()
9854 em->block_len = ins.offset; in __btrfs_prealloc_file_range()
9855 em->orig_block_len = ins.offset; in __btrfs_prealloc_file_range()
9856 em->ram_bytes = ins.offset; in __btrfs_prealloc_file_range()
9857 set_bit(EXTENT_FLAG_PREALLOC, &em->flags); in __btrfs_prealloc_file_range()
9858 em->generation = trans->transid; in __btrfs_prealloc_file_range()
9862 ret = add_extent_mapping(em_tree, em, 1); in __btrfs_prealloc_file_range()
9870 free_extent_map(em); in __btrfs_prealloc_file_range()
10169 struct extent_map *em = NULL; in btrfs_swap_activate() local
10263 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, start, len); in btrfs_swap_activate()
10264 if (IS_ERR(em)) { in btrfs_swap_activate()
10265 ret = PTR_ERR(em); in btrfs_swap_activate()
10269 if (em->block_start == EXTENT_MAP_HOLE) { in btrfs_swap_activate()
10274 if (em->block_start == EXTENT_MAP_INLINE) { in btrfs_swap_activate()
10286 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) { in btrfs_swap_activate()
10292 logical_block_start = em->block_start + (start - em->start); in btrfs_swap_activate()
10293 len = min(len, em->len - (start - em->start)); in btrfs_swap_activate()
10294 free_extent_map(em); in btrfs_swap_activate()
10295 em = NULL; in btrfs_swap_activate()
10309 em = btrfs_get_chunk_map(fs_info, logical_block_start, len); in btrfs_swap_activate()
10310 if (IS_ERR(em)) { in btrfs_swap_activate()
10311 ret = PTR_ERR(em); in btrfs_swap_activate()
10315 if (em->map_lookup->type & BTRFS_BLOCK_GROUP_PROFILE_MASK) { in btrfs_swap_activate()
10323 device = em->map_lookup->stripes[0].dev; in btrfs_swap_activate()
10329 } else if (device != em->map_lookup->stripes[0].dev) { in btrfs_swap_activate()
10335 physical_block_start = (em->map_lookup->stripes[0].physical + in btrfs_swap_activate()
10336 (logical_block_start - em->start)); in btrfs_swap_activate()
10337 len = min(len, em->len - (logical_block_start - em->start)); in btrfs_swap_activate()
10338 free_extent_map(em); in btrfs_swap_activate()
10339 em = NULL; in btrfs_swap_activate()
10390 if (!IS_ERR_OR_NULL(em)) in btrfs_swap_activate()
10391 free_extent_map(em); in btrfs_swap_activate()