Lines Matching refs:em

857 	struct extent_map *em;  in submit_compressed_extents()  local
935 em = create_io_em(inode, async_extent->start, in submit_compressed_extents()
944 if (IS_ERR(em)) in submit_compressed_extents()
947 free_extent_map(em); in submit_compressed_extents()
1018 struct extent_map *em; in get_extent_allocation_hint() local
1022 em = search_extent_mapping(em_tree, start, num_bytes); in get_extent_allocation_hint()
1023 if (em) { in get_extent_allocation_hint()
1029 if (em->block_start >= EXTENT_MAP_LAST_BYTE) { in get_extent_allocation_hint()
1030 free_extent_map(em); in get_extent_allocation_hint()
1031 em = search_extent_mapping(em_tree, 0, 0); in get_extent_allocation_hint()
1032 if (em && em->block_start < EXTENT_MAP_LAST_BYTE) in get_extent_allocation_hint()
1033 alloc_hint = em->block_start; in get_extent_allocation_hint()
1034 if (em) in get_extent_allocation_hint()
1035 free_extent_map(em); in get_extent_allocation_hint()
1037 alloc_hint = em->block_start; in get_extent_allocation_hint()
1038 free_extent_map(em); in get_extent_allocation_hint()
1073 struct extent_map *em; in cow_file_range() local
1170 em = create_io_em(inode, start, ins.offset, /* len */ in cow_file_range()
1178 if (IS_ERR(em)) { in cow_file_range()
1179 ret = PTR_ERR(em); in cow_file_range()
1182 free_extent_map(em); in cow_file_range()
1833 struct extent_map *em; in run_delalloc_nocow() local
1835 em = create_io_em(inode, cur_offset, num_bytes, in run_delalloc_nocow()
1842 if (IS_ERR(em)) { in run_delalloc_nocow()
1843 ret = PTR_ERR(em); in run_delalloc_nocow()
1846 free_extent_map(em); in run_delalloc_nocow()
2258 struct extent_map *em; in btrfs_bio_fits_in_stripe() local
2265 em = btrfs_get_chunk_map(fs_info, logical, fs_info->sectorsize); in btrfs_bio_fits_in_stripe()
2266 if (IS_ERR(em)) in btrfs_bio_fits_in_stripe()
2267 return PTR_ERR(em); in btrfs_bio_fits_in_stripe()
2268 ret = btrfs_get_io_geometry(fs_info, em, btrfs_op(bio), logical, &geom); in btrfs_bio_fits_in_stripe()
2275 free_extent_map(em); in btrfs_bio_fits_in_stripe()
2302 struct extent_map *em; in split_zoned_em() local
2327 em = lookup_extent_mapping(em_tree, start, len); in split_zoned_em()
2328 if (!em) { in split_zoned_em()
2333 ASSERT(em->len == len); in split_zoned_em()
2334 ASSERT(!test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)); in split_zoned_em()
2335 ASSERT(em->block_start < EXTENT_MAP_LAST_BYTE); in split_zoned_em()
2336 ASSERT(test_bit(EXTENT_FLAG_PINNED, &em->flags)); in split_zoned_em()
2337 ASSERT(!test_bit(EXTENT_FLAG_LOGGING, &em->flags)); in split_zoned_em()
2338 ASSERT(!list_empty(&em->list)); in split_zoned_em()
2340 flags = em->flags; in split_zoned_em()
2341 clear_bit(EXTENT_FLAG_PINNED, &em->flags); in split_zoned_em()
2344 split_pre->start = em->start; in split_zoned_em()
2345 split_pre->len = (pre ? pre : em->len - post); in split_zoned_em()
2347 split_pre->block_start = em->block_start; in split_zoned_em()
2352 split_pre->compress_type = em->compress_type; in split_zoned_em()
2353 split_pre->generation = em->generation; in split_zoned_em()
2355 replace_extent_mapping(em_tree, em, split_pre, 1); in split_zoned_em()
2365 split_mid->start = em->start + pre; in split_zoned_em()
2366 split_mid->len = em->len - pre - post; in split_zoned_em()
2368 split_mid->block_start = em->block_start + pre; in split_zoned_em()
2373 split_mid->compress_type = em->compress_type; in split_zoned_em()
2374 split_mid->generation = em->generation; in split_zoned_em()
2379 split_post->start = em->start + em->len - post; in split_zoned_em()
2382 split_post->block_start = em->block_start + em->len - post; in split_zoned_em()
2387 split_post->compress_type = em->compress_type; in split_zoned_em()
2388 split_post->generation = em->generation; in split_zoned_em()
2393 free_extent_map(em); in split_zoned_em()
2395 free_extent_map(em); in split_zoned_em()
2588 struct extent_map *em; in btrfs_find_new_delalloc_bytes() local
2592 em = btrfs_get_extent(inode, NULL, 0, search_start, search_len); in btrfs_find_new_delalloc_bytes()
2593 if (IS_ERR(em)) in btrfs_find_new_delalloc_bytes()
2594 return PTR_ERR(em); in btrfs_find_new_delalloc_bytes()
2596 if (em->block_start != EXTENT_MAP_HOLE) in btrfs_find_new_delalloc_bytes()
2599 em_len = em->len; in btrfs_find_new_delalloc_bytes()
2600 if (em->start < search_start) in btrfs_find_new_delalloc_bytes()
2601 em_len -= search_start - em->start; in btrfs_find_new_delalloc_bytes()
2610 search_start = extent_map_end(em); in btrfs_find_new_delalloc_bytes()
2611 free_extent_map(em); in btrfs_find_new_delalloc_bytes()
5195 struct extent_map *em = NULL; in btrfs_cont_expand() local
5221 em = btrfs_get_extent(inode, NULL, 0, cur_offset, in btrfs_cont_expand()
5223 if (IS_ERR(em)) { in btrfs_cont_expand()
5224 err = PTR_ERR(em); in btrfs_cont_expand()
5225 em = NULL; in btrfs_cont_expand()
5228 last_byte = min(extent_map_end(em), block_end); in btrfs_cont_expand()
5232 if (!test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) { in btrfs_cont_expand()
5282 free_extent_map(em); in btrfs_cont_expand()
5283 em = NULL; in btrfs_cont_expand()
5288 free_extent_map(em); in btrfs_cont_expand()
5441 struct extent_map *em; in evict_inode_truncate_pages() local
5444 em = rb_entry(node, struct extent_map, rb_node); in evict_inode_truncate_pages()
5445 clear_bit(EXTENT_FLAG_PINNED, &em->flags); in evict_inode_truncate_pages()
5446 clear_bit(EXTENT_FLAG_LOGGING, &em->flags); in evict_inode_truncate_pages()
5447 remove_extent_mapping(map_tree, em); in evict_inode_truncate_pages()
5448 free_extent_map(em); in evict_inode_truncate_pages()
7047 struct extent_map *em = NULL; in btrfs_get_extent() local
7052 em = lookup_extent_mapping(em_tree, start, len); in btrfs_get_extent()
7055 if (em) { in btrfs_get_extent()
7056 if (em->start > start || em->start + em->len <= start) in btrfs_get_extent()
7057 free_extent_map(em); in btrfs_get_extent()
7058 else if (em->block_start == EXTENT_MAP_INLINE && page) in btrfs_get_extent()
7059 free_extent_map(em); in btrfs_get_extent()
7063 em = alloc_extent_map(); in btrfs_get_extent()
7064 if (!em) { in btrfs_get_extent()
7068 em->start = EXTENT_MAP_HOLE; in btrfs_get_extent()
7069 em->orig_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
7070 em->len = (u64)-1; in btrfs_get_extent()
7071 em->block_len = (u64)-1; in btrfs_get_extent()
7160 em->start = start; in btrfs_get_extent()
7161 em->orig_start = start; in btrfs_get_extent()
7162 em->len = found_key.offset - start; in btrfs_get_extent()
7163 em->block_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
7167 btrfs_extent_item_to_extent_map(inode, path, item, !page, em); in btrfs_get_extent()
7186 em->start = extent_start + extent_offset; in btrfs_get_extent()
7187 em->len = ALIGN(copy_size, fs_info->sectorsize); in btrfs_get_extent()
7188 em->orig_block_len = em->len; in btrfs_get_extent()
7189 em->orig_start = em->start; in btrfs_get_extent()
7212 set_extent_uptodate(io_tree, em->start, in btrfs_get_extent()
7213 extent_map_end(em) - 1, NULL, GFP_NOFS); in btrfs_get_extent()
7217 em->start = start; in btrfs_get_extent()
7218 em->orig_start = start; in btrfs_get_extent()
7219 em->len = len; in btrfs_get_extent()
7220 em->block_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
7224 if (em->start > start || extent_map_end(em) <= start) { in btrfs_get_extent()
7227 em->start, em->len, start, len); in btrfs_get_extent()
7233 ret = btrfs_add_extent_mapping(fs_info, em_tree, &em, start, len); in btrfs_get_extent()
7238 trace_btrfs_get_extent(root, inode, em); in btrfs_get_extent()
7241 free_extent_map(em); in btrfs_get_extent()
7244 return em; in btrfs_get_extent()
7250 struct extent_map *em; in btrfs_get_extent_fiemap() local
7258 em = btrfs_get_extent(inode, NULL, 0, start, len); in btrfs_get_extent_fiemap()
7259 if (IS_ERR(em)) in btrfs_get_extent_fiemap()
7260 return em; in btrfs_get_extent_fiemap()
7267 if (em->block_start != EXTENT_MAP_HOLE && in btrfs_get_extent_fiemap()
7268 !test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_extent_fiemap()
7269 return em; in btrfs_get_extent_fiemap()
7271 hole_em = em; in btrfs_get_extent_fiemap()
7280 em = NULL; in btrfs_get_extent_fiemap()
7294 em = hole_em; in btrfs_get_extent_fiemap()
7311 em = alloc_extent_map(); in btrfs_get_extent_fiemap()
7312 if (!em) { in btrfs_get_extent_fiemap()
7339 em->len = min(hole_len, delalloc_start - hole_start); in btrfs_get_extent_fiemap()
7340 em->start = hole_start; in btrfs_get_extent_fiemap()
7341 em->orig_start = hole_start; in btrfs_get_extent_fiemap()
7346 em->block_start = hole_em->block_start; in btrfs_get_extent_fiemap()
7347 em->block_len = hole_len; in btrfs_get_extent_fiemap()
7349 set_bit(EXTENT_FLAG_PREALLOC, &em->flags); in btrfs_get_extent_fiemap()
7355 em->start = delalloc_start; in btrfs_get_extent_fiemap()
7356 em->len = delalloc_len; in btrfs_get_extent_fiemap()
7357 em->orig_start = delalloc_start; in btrfs_get_extent_fiemap()
7358 em->block_start = EXTENT_MAP_DELALLOC; in btrfs_get_extent_fiemap()
7359 em->block_len = delalloc_len; in btrfs_get_extent_fiemap()
7368 free_extent_map(em); in btrfs_get_extent_fiemap()
7371 return em; in btrfs_get_extent_fiemap()
7384 struct extent_map *em = NULL; in btrfs_create_dio_extent() local
7388 em = create_io_em(inode, start, len, orig_start, block_start, in btrfs_create_dio_extent()
7392 if (IS_ERR(em)) in btrfs_create_dio_extent()
7398 if (em) { in btrfs_create_dio_extent()
7399 free_extent_map(em); in btrfs_create_dio_extent()
7402 em = ERR_PTR(ret); in btrfs_create_dio_extent()
7406 return em; in btrfs_create_dio_extent()
7414 struct extent_map *em; in btrfs_new_extent_direct() local
7425 em = btrfs_create_dio_extent(inode, start, ins.offset, start, in btrfs_new_extent_direct()
7429 if (IS_ERR(em)) in btrfs_new_extent_direct()
7433 return em; in btrfs_new_extent_direct()
7703 struct extent_map *em; in create_io_em() local
7712 em = alloc_extent_map(); in create_io_em()
7713 if (!em) in create_io_em()
7716 em->start = start; in create_io_em()
7717 em->orig_start = orig_start; in create_io_em()
7718 em->len = len; in create_io_em()
7719 em->block_len = block_len; in create_io_em()
7720 em->block_start = block_start; in create_io_em()
7721 em->orig_block_len = orig_block_len; in create_io_em()
7722 em->ram_bytes = ram_bytes; in create_io_em()
7723 em->generation = -1; in create_io_em()
7724 set_bit(EXTENT_FLAG_PINNED, &em->flags); in create_io_em()
7726 set_bit(EXTENT_FLAG_FILLING, &em->flags); in create_io_em()
7728 set_bit(EXTENT_FLAG_COMPRESSED, &em->flags); in create_io_em()
7729 em->compress_type = compress_type; in create_io_em()
7733 btrfs_drop_extent_cache(inode, em->start, in create_io_em()
7734 em->start + em->len - 1, 0); in create_io_em()
7736 ret = add_extent_mapping(em_tree, em, 1); in create_io_em()
7745 free_extent_map(em); in create_io_em()
7750 return em; in create_io_em()
7760 struct extent_map *em = *map; in btrfs_get_blocks_direct_write() local
7772 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags) || in btrfs_get_blocks_direct_write()
7774 em->block_start != EXTENT_MAP_HOLE)) { in btrfs_get_blocks_direct_write()
7778 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_blocks_direct_write()
7782 len = min(len, em->len - (start - em->start)); in btrfs_get_blocks_direct_write()
7783 block_start = em->block_start + (start - em->start); in btrfs_get_blocks_direct_write()
7796 free_extent_map(em); in btrfs_get_blocks_direct_write()
7797 *map = em = em2; in btrfs_get_blocks_direct_write()
7815 free_extent_map(em); in btrfs_get_blocks_direct_write()
7816 *map = em = btrfs_new_extent_direct(BTRFS_I(inode), start, len); in btrfs_get_blocks_direct_write()
7817 if (IS_ERR(em)) { in btrfs_get_blocks_direct_write()
7818 ret = PTR_ERR(em); in btrfs_get_blocks_direct_write()
7822 len = min(len, em->len - (start - em->start)); in btrfs_get_blocks_direct_write()
7842 struct extent_map *em; in btrfs_dio_iomap_begin() local
7899 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, start, len); in btrfs_dio_iomap_begin()
7900 if (IS_ERR(em)) { in btrfs_dio_iomap_begin()
7901 ret = PTR_ERR(em); in btrfs_dio_iomap_begin()
7919 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags) || in btrfs_dio_iomap_begin()
7920 em->block_start == EXTENT_MAP_INLINE) { in btrfs_dio_iomap_begin()
7921 free_extent_map(em); in btrfs_dio_iomap_begin()
7926 len = min(len, em->len - (start - em->start)); in btrfs_dio_iomap_begin()
7928 ret = btrfs_get_blocks_direct_write(&em, inode, dio_data, in btrfs_dio_iomap_begin()
7934 len = min(len, em->len - (start - em->start)); in btrfs_dio_iomap_begin()
7956 if ((em->block_start == EXTENT_MAP_HOLE) || in btrfs_dio_iomap_begin()
7957 (test_bit(EXTENT_FLAG_PREALLOC, &em->flags) && !write)) { in btrfs_dio_iomap_begin()
7961 iomap->addr = em->block_start + (start - em->start); in btrfs_dio_iomap_begin()
7968 if (write && btrfs_use_zone_append(BTRFS_I(inode), em->block_start)) in btrfs_dio_iomap_begin()
7971 free_extent_map(em); in btrfs_dio_iomap_begin()
8271 struct extent_map *em = NULL; in btrfs_submit_direct() local
8301 em = btrfs_get_chunk_map(fs_info, logical, submit_len); in btrfs_submit_direct()
8302 if (IS_ERR(em)) { in btrfs_submit_direct()
8303 status = errno_to_blk_status(PTR_ERR(em)); in btrfs_submit_direct()
8304 em = NULL; in btrfs_submit_direct()
8307 ret = btrfs_get_io_geometry(fs_info, em, btrfs_op(dio_bio), in btrfs_submit_direct()
8373 free_extent_map(em); in btrfs_submit_direct()
8378 free_extent_map(em); in btrfs_submit_direct()
10248 struct extent_map *em; in __btrfs_prealloc_file_range() local
10306 em = alloc_extent_map(); in __btrfs_prealloc_file_range()
10307 if (!em) { in __btrfs_prealloc_file_range()
10313 em->start = cur_offset; in __btrfs_prealloc_file_range()
10314 em->orig_start = cur_offset; in __btrfs_prealloc_file_range()
10315 em->len = ins.offset; in __btrfs_prealloc_file_range()
10316 em->block_start = ins.objectid; in __btrfs_prealloc_file_range()
10317 em->block_len = ins.offset; in __btrfs_prealloc_file_range()
10318 em->orig_block_len = ins.offset; in __btrfs_prealloc_file_range()
10319 em->ram_bytes = ins.offset; in __btrfs_prealloc_file_range()
10320 set_bit(EXTENT_FLAG_PREALLOC, &em->flags); in __btrfs_prealloc_file_range()
10321 em->generation = trans->transid; in __btrfs_prealloc_file_range()
10325 ret = add_extent_mapping(em_tree, em, 1); in __btrfs_prealloc_file_range()
10333 free_extent_map(em); in __btrfs_prealloc_file_range()
10627 struct extent_map *em = NULL; in btrfs_swap_activate() local
10706 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, start, len); in btrfs_swap_activate()
10707 if (IS_ERR(em)) { in btrfs_swap_activate()
10708 ret = PTR_ERR(em); in btrfs_swap_activate()
10712 if (em->block_start == EXTENT_MAP_HOLE) { in btrfs_swap_activate()
10717 if (em->block_start == EXTENT_MAP_INLINE) { in btrfs_swap_activate()
10729 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) { in btrfs_swap_activate()
10735 logical_block_start = em->block_start + (start - em->start); in btrfs_swap_activate()
10736 len = min(len, em->len - (start - em->start)); in btrfs_swap_activate()
10737 free_extent_map(em); in btrfs_swap_activate()
10738 em = NULL; in btrfs_swap_activate()
10752 em = btrfs_get_chunk_map(fs_info, logical_block_start, len); in btrfs_swap_activate()
10753 if (IS_ERR(em)) { in btrfs_swap_activate()
10754 ret = PTR_ERR(em); in btrfs_swap_activate()
10758 if (em->map_lookup->type & BTRFS_BLOCK_GROUP_PROFILE_MASK) { in btrfs_swap_activate()
10766 device = em->map_lookup->stripes[0].dev; in btrfs_swap_activate()
10772 } else if (device != em->map_lookup->stripes[0].dev) { in btrfs_swap_activate()
10778 physical_block_start = (em->map_lookup->stripes[0].physical + in btrfs_swap_activate()
10779 (logical_block_start - em->start)); in btrfs_swap_activate()
10780 len = min(len, em->len - (logical_block_start - em->start)); in btrfs_swap_activate()
10781 free_extent_map(em); in btrfs_swap_activate()
10782 em = NULL; in btrfs_swap_activate()
10833 if (!IS_ERR_OR_NULL(em)) in btrfs_swap_activate()
10834 free_extent_map(em); in btrfs_swap_activate()