Lines Matching refs:em

931 	struct extent_map *em;  in submit_one_async_extent()  local
970 em = create_io_em(inode, start, in submit_one_async_extent()
979 if (IS_ERR(em)) { in submit_one_async_extent()
980 ret = PTR_ERR(em); in submit_one_async_extent()
983 free_extent_map(em); in submit_one_async_extent()
1072 struct extent_map *em; in get_extent_allocation_hint() local
1076 em = search_extent_mapping(em_tree, start, num_bytes); in get_extent_allocation_hint()
1077 if (em) { in get_extent_allocation_hint()
1083 if (em->block_start >= EXTENT_MAP_LAST_BYTE) { in get_extent_allocation_hint()
1084 free_extent_map(em); in get_extent_allocation_hint()
1085 em = search_extent_mapping(em_tree, 0, 0); in get_extent_allocation_hint()
1086 if (em && em->block_start < EXTENT_MAP_LAST_BYTE) in get_extent_allocation_hint()
1087 alloc_hint = em->block_start; in get_extent_allocation_hint()
1088 if (em) in get_extent_allocation_hint()
1089 free_extent_map(em); in get_extent_allocation_hint()
1091 alloc_hint = em->block_start; in get_extent_allocation_hint()
1092 free_extent_map(em); in get_extent_allocation_hint()
1127 struct extent_map *em; in cow_file_range() local
1224 em = create_io_em(inode, start, ins.offset, /* len */ in cow_file_range()
1232 if (IS_ERR(em)) { in cow_file_range()
1233 ret = PTR_ERR(em); in cow_file_range()
1236 free_extent_map(em); in cow_file_range()
1884 struct extent_map *em; in run_delalloc_nocow() local
1886 em = create_io_em(inode, cur_offset, num_bytes, in run_delalloc_nocow()
1893 if (IS_ERR(em)) { in run_delalloc_nocow()
1894 ret = PTR_ERR(em); in run_delalloc_nocow()
1897 free_extent_map(em); in run_delalloc_nocow()
2325 struct extent_map *em; in split_zoned_em() local
2350 em = lookup_extent_mapping(em_tree, start, len); in split_zoned_em()
2351 if (!em) { in split_zoned_em()
2356 ASSERT(em->len == len); in split_zoned_em()
2357 ASSERT(!test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)); in split_zoned_em()
2358 ASSERT(em->block_start < EXTENT_MAP_LAST_BYTE); in split_zoned_em()
2359 ASSERT(test_bit(EXTENT_FLAG_PINNED, &em->flags)); in split_zoned_em()
2360 ASSERT(!test_bit(EXTENT_FLAG_LOGGING, &em->flags)); in split_zoned_em()
2361 ASSERT(!list_empty(&em->list)); in split_zoned_em()
2363 flags = em->flags; in split_zoned_em()
2364 clear_bit(EXTENT_FLAG_PINNED, &em->flags); in split_zoned_em()
2367 split_pre->start = em->start; in split_zoned_em()
2368 split_pre->len = (pre ? pre : em->len - post); in split_zoned_em()
2370 split_pre->block_start = em->block_start; in split_zoned_em()
2375 split_pre->compress_type = em->compress_type; in split_zoned_em()
2376 split_pre->generation = em->generation; in split_zoned_em()
2378 replace_extent_mapping(em_tree, em, split_pre, 1); in split_zoned_em()
2388 split_mid->start = em->start + pre; in split_zoned_em()
2389 split_mid->len = em->len - pre - post; in split_zoned_em()
2391 split_mid->block_start = em->block_start + pre; in split_zoned_em()
2396 split_mid->compress_type = em->compress_type; in split_zoned_em()
2397 split_mid->generation = em->generation; in split_zoned_em()
2402 split_post->start = em->start + em->len - post; in split_zoned_em()
2405 split_post->block_start = em->block_start + em->len - post; in split_zoned_em()
2410 split_post->compress_type = em->compress_type; in split_zoned_em()
2411 split_post->generation = em->generation; in split_zoned_em()
2416 free_extent_map(em); in split_zoned_em()
2418 free_extent_map(em); in split_zoned_em()
2611 struct extent_map *em; in btrfs_find_new_delalloc_bytes() local
2615 em = btrfs_get_extent(inode, NULL, 0, search_start, search_len); in btrfs_find_new_delalloc_bytes()
2616 if (IS_ERR(em)) in btrfs_find_new_delalloc_bytes()
2617 return PTR_ERR(em); in btrfs_find_new_delalloc_bytes()
2619 if (em->block_start != EXTENT_MAP_HOLE) in btrfs_find_new_delalloc_bytes()
2622 em_len = em->len; in btrfs_find_new_delalloc_bytes()
2623 if (em->start < search_start) in btrfs_find_new_delalloc_bytes()
2624 em_len -= search_start - em->start; in btrfs_find_new_delalloc_bytes()
2633 search_start = extent_map_end(em); in btrfs_find_new_delalloc_bytes()
2634 free_extent_map(em); in btrfs_find_new_delalloc_bytes()
5206 struct extent_map *em = NULL; in btrfs_cont_expand() local
5232 em = btrfs_get_extent(inode, NULL, 0, cur_offset, in btrfs_cont_expand()
5234 if (IS_ERR(em)) { in btrfs_cont_expand()
5235 err = PTR_ERR(em); in btrfs_cont_expand()
5236 em = NULL; in btrfs_cont_expand()
5239 last_byte = min(extent_map_end(em), block_end); in btrfs_cont_expand()
5243 if (!test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) { in btrfs_cont_expand()
5293 free_extent_map(em); in btrfs_cont_expand()
5294 em = NULL; in btrfs_cont_expand()
5299 free_extent_map(em); in btrfs_cont_expand()
5452 struct extent_map *em; in evict_inode_truncate_pages() local
5455 em = rb_entry(node, struct extent_map, rb_node); in evict_inode_truncate_pages()
5456 clear_bit(EXTENT_FLAG_PINNED, &em->flags); in evict_inode_truncate_pages()
5457 clear_bit(EXTENT_FLAG_LOGGING, &em->flags); in evict_inode_truncate_pages()
5458 remove_extent_mapping(map_tree, em); in evict_inode_truncate_pages()
5459 free_extent_map(em); in evict_inode_truncate_pages()
7062 struct extent_map *em = NULL; in btrfs_get_extent() local
7067 em = lookup_extent_mapping(em_tree, start, len); in btrfs_get_extent()
7070 if (em) { in btrfs_get_extent()
7071 if (em->start > start || em->start + em->len <= start) in btrfs_get_extent()
7072 free_extent_map(em); in btrfs_get_extent()
7073 else if (em->block_start == EXTENT_MAP_INLINE && page) in btrfs_get_extent()
7074 free_extent_map(em); in btrfs_get_extent()
7078 em = alloc_extent_map(); in btrfs_get_extent()
7079 if (!em) { in btrfs_get_extent()
7083 em->start = EXTENT_MAP_HOLE; in btrfs_get_extent()
7084 em->orig_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
7085 em->len = (u64)-1; in btrfs_get_extent()
7086 em->block_len = (u64)-1; in btrfs_get_extent()
7175 em->start = start; in btrfs_get_extent()
7176 em->orig_start = start; in btrfs_get_extent()
7177 em->len = found_key.offset - start; in btrfs_get_extent()
7178 em->block_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
7182 btrfs_extent_item_to_extent_map(inode, path, item, !page, em); in btrfs_get_extent()
7201 em->start = extent_start + extent_offset; in btrfs_get_extent()
7202 em->len = ALIGN(copy_size, fs_info->sectorsize); in btrfs_get_extent()
7203 em->orig_block_len = em->len; in btrfs_get_extent()
7204 em->orig_start = em->start; in btrfs_get_extent()
7227 set_extent_uptodate(io_tree, em->start, in btrfs_get_extent()
7228 extent_map_end(em) - 1, NULL, GFP_NOFS); in btrfs_get_extent()
7232 em->start = start; in btrfs_get_extent()
7233 em->orig_start = start; in btrfs_get_extent()
7234 em->len = len; in btrfs_get_extent()
7235 em->block_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
7239 if (em->start > start || extent_map_end(em) <= start) { in btrfs_get_extent()
7242 em->start, em->len, start, len); in btrfs_get_extent()
7248 ret = btrfs_add_extent_mapping(fs_info, em_tree, &em, start, len); in btrfs_get_extent()
7253 trace_btrfs_get_extent(root, inode, em); in btrfs_get_extent()
7256 free_extent_map(em); in btrfs_get_extent()
7259 return em; in btrfs_get_extent()
7265 struct extent_map *em; in btrfs_get_extent_fiemap() local
7273 em = btrfs_get_extent(inode, NULL, 0, start, len); in btrfs_get_extent_fiemap()
7274 if (IS_ERR(em)) in btrfs_get_extent_fiemap()
7275 return em; in btrfs_get_extent_fiemap()
7282 if (em->block_start != EXTENT_MAP_HOLE && in btrfs_get_extent_fiemap()
7283 !test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_extent_fiemap()
7284 return em; in btrfs_get_extent_fiemap()
7286 hole_em = em; in btrfs_get_extent_fiemap()
7295 em = NULL; in btrfs_get_extent_fiemap()
7309 em = hole_em; in btrfs_get_extent_fiemap()
7326 em = alloc_extent_map(); in btrfs_get_extent_fiemap()
7327 if (!em) { in btrfs_get_extent_fiemap()
7354 em->len = min(hole_len, delalloc_start - hole_start); in btrfs_get_extent_fiemap()
7355 em->start = hole_start; in btrfs_get_extent_fiemap()
7356 em->orig_start = hole_start; in btrfs_get_extent_fiemap()
7361 em->block_start = hole_em->block_start; in btrfs_get_extent_fiemap()
7362 em->block_len = hole_len; in btrfs_get_extent_fiemap()
7364 set_bit(EXTENT_FLAG_PREALLOC, &em->flags); in btrfs_get_extent_fiemap()
7370 em->start = delalloc_start; in btrfs_get_extent_fiemap()
7371 em->len = delalloc_len; in btrfs_get_extent_fiemap()
7372 em->orig_start = delalloc_start; in btrfs_get_extent_fiemap()
7373 em->block_start = EXTENT_MAP_DELALLOC; in btrfs_get_extent_fiemap()
7374 em->block_len = delalloc_len; in btrfs_get_extent_fiemap()
7383 free_extent_map(em); in btrfs_get_extent_fiemap()
7386 return em; in btrfs_get_extent_fiemap()
7399 struct extent_map *em = NULL; in btrfs_create_dio_extent() local
7403 em = create_io_em(inode, start, len, orig_start, block_start, in btrfs_create_dio_extent()
7407 if (IS_ERR(em)) in btrfs_create_dio_extent()
7413 if (em) { in btrfs_create_dio_extent()
7414 free_extent_map(em); in btrfs_create_dio_extent()
7417 em = ERR_PTR(ret); in btrfs_create_dio_extent()
7421 return em; in btrfs_create_dio_extent()
7429 struct extent_map *em; in btrfs_new_extent_direct() local
7440 em = btrfs_create_dio_extent(inode, start, ins.offset, start, in btrfs_new_extent_direct()
7444 if (IS_ERR(em)) in btrfs_new_extent_direct()
7448 return em; in btrfs_new_extent_direct()
7718 struct extent_map *em; in create_io_em() local
7727 em = alloc_extent_map(); in create_io_em()
7728 if (!em) in create_io_em()
7731 em->start = start; in create_io_em()
7732 em->orig_start = orig_start; in create_io_em()
7733 em->len = len; in create_io_em()
7734 em->block_len = block_len; in create_io_em()
7735 em->block_start = block_start; in create_io_em()
7736 em->orig_block_len = orig_block_len; in create_io_em()
7737 em->ram_bytes = ram_bytes; in create_io_em()
7738 em->generation = -1; in create_io_em()
7739 set_bit(EXTENT_FLAG_PINNED, &em->flags); in create_io_em()
7741 set_bit(EXTENT_FLAG_FILLING, &em->flags); in create_io_em()
7743 set_bit(EXTENT_FLAG_COMPRESSED, &em->flags); in create_io_em()
7744 em->compress_type = compress_type; in create_io_em()
7748 btrfs_drop_extent_cache(inode, em->start, in create_io_em()
7749 em->start + em->len - 1, 0); in create_io_em()
7751 ret = add_extent_mapping(em_tree, em, 1); in create_io_em()
7760 free_extent_map(em); in create_io_em()
7765 return em; in create_io_em()
7775 struct extent_map *em = *map; in btrfs_get_blocks_direct_write() local
7787 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags) || in btrfs_get_blocks_direct_write()
7789 em->block_start != EXTENT_MAP_HOLE)) { in btrfs_get_blocks_direct_write()
7793 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_blocks_direct_write()
7797 len = min(len, em->len - (start - em->start)); in btrfs_get_blocks_direct_write()
7798 block_start = em->block_start + (start - em->start); in btrfs_get_blocks_direct_write()
7811 free_extent_map(em); in btrfs_get_blocks_direct_write()
7812 *map = em = em2; in btrfs_get_blocks_direct_write()
7830 free_extent_map(em); in btrfs_get_blocks_direct_write()
7831 *map = em = btrfs_new_extent_direct(BTRFS_I(inode), start, len); in btrfs_get_blocks_direct_write()
7832 if (IS_ERR(em)) { in btrfs_get_blocks_direct_write()
7833 ret = PTR_ERR(em); in btrfs_get_blocks_direct_write()
7837 len = min(len, em->len - (start - em->start)); in btrfs_get_blocks_direct_write()
7857 struct extent_map *em; in btrfs_dio_iomap_begin() local
7914 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, start, len); in btrfs_dio_iomap_begin()
7915 if (IS_ERR(em)) { in btrfs_dio_iomap_begin()
7916 ret = PTR_ERR(em); in btrfs_dio_iomap_begin()
7934 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags) || in btrfs_dio_iomap_begin()
7935 em->block_start == EXTENT_MAP_INLINE) { in btrfs_dio_iomap_begin()
7936 free_extent_map(em); in btrfs_dio_iomap_begin()
7941 len = min(len, em->len - (start - em->start)); in btrfs_dio_iomap_begin()
7943 ret = btrfs_get_blocks_direct_write(&em, inode, dio_data, in btrfs_dio_iomap_begin()
7949 len = min(len, em->len - (start - em->start)); in btrfs_dio_iomap_begin()
7971 if ((em->block_start == EXTENT_MAP_HOLE) || in btrfs_dio_iomap_begin()
7972 (test_bit(EXTENT_FLAG_PREALLOC, &em->flags) && !write)) { in btrfs_dio_iomap_begin()
7976 iomap->addr = em->block_start + (start - em->start); in btrfs_dio_iomap_begin()
7983 if (write && btrfs_use_zone_append(BTRFS_I(inode), em->block_start)) in btrfs_dio_iomap_begin()
7986 free_extent_map(em); in btrfs_dio_iomap_begin()
8286 struct extent_map *em = NULL; in btrfs_submit_direct() local
8316 em = btrfs_get_chunk_map(fs_info, logical, submit_len); in btrfs_submit_direct()
8317 if (IS_ERR(em)) { in btrfs_submit_direct()
8318 status = errno_to_blk_status(PTR_ERR(em)); in btrfs_submit_direct()
8319 em = NULL; in btrfs_submit_direct()
8322 ret = btrfs_get_io_geometry(fs_info, em, btrfs_op(dio_bio), in btrfs_submit_direct()
8387 free_extent_map(em); in btrfs_submit_direct()
8392 free_extent_map(em); in btrfs_submit_direct()
10262 struct extent_map *em; in __btrfs_prealloc_file_range() local
10320 em = alloc_extent_map(); in __btrfs_prealloc_file_range()
10321 if (!em) { in __btrfs_prealloc_file_range()
10327 em->start = cur_offset; in __btrfs_prealloc_file_range()
10328 em->orig_start = cur_offset; in __btrfs_prealloc_file_range()
10329 em->len = ins.offset; in __btrfs_prealloc_file_range()
10330 em->block_start = ins.objectid; in __btrfs_prealloc_file_range()
10331 em->block_len = ins.offset; in __btrfs_prealloc_file_range()
10332 em->orig_block_len = ins.offset; in __btrfs_prealloc_file_range()
10333 em->ram_bytes = ins.offset; in __btrfs_prealloc_file_range()
10334 set_bit(EXTENT_FLAG_PREALLOC, &em->flags); in __btrfs_prealloc_file_range()
10335 em->generation = trans->transid; in __btrfs_prealloc_file_range()
10339 ret = add_extent_mapping(em_tree, em, 1); in __btrfs_prealloc_file_range()
10347 free_extent_map(em); in __btrfs_prealloc_file_range()
10641 struct extent_map *em = NULL; in btrfs_swap_activate() local
10720 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, start, len); in btrfs_swap_activate()
10721 if (IS_ERR(em)) { in btrfs_swap_activate()
10722 ret = PTR_ERR(em); in btrfs_swap_activate()
10726 if (em->block_start == EXTENT_MAP_HOLE) { in btrfs_swap_activate()
10731 if (em->block_start == EXTENT_MAP_INLINE) { in btrfs_swap_activate()
10743 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) { in btrfs_swap_activate()
10749 logical_block_start = em->block_start + (start - em->start); in btrfs_swap_activate()
10750 len = min(len, em->len - (start - em->start)); in btrfs_swap_activate()
10751 free_extent_map(em); in btrfs_swap_activate()
10752 em = NULL; in btrfs_swap_activate()
10766 em = btrfs_get_chunk_map(fs_info, logical_block_start, len); in btrfs_swap_activate()
10767 if (IS_ERR(em)) { in btrfs_swap_activate()
10768 ret = PTR_ERR(em); in btrfs_swap_activate()
10772 if (em->map_lookup->type & BTRFS_BLOCK_GROUP_PROFILE_MASK) { in btrfs_swap_activate()
10780 device = em->map_lookup->stripes[0].dev; in btrfs_swap_activate()
10786 } else if (device != em->map_lookup->stripes[0].dev) { in btrfs_swap_activate()
10792 physical_block_start = (em->map_lookup->stripes[0].physical + in btrfs_swap_activate()
10793 (logical_block_start - em->start)); in btrfs_swap_activate()
10794 len = min(len, em->len - (logical_block_start - em->start)); in btrfs_swap_activate()
10795 free_extent_map(em); in btrfs_swap_activate()
10796 em = NULL; in btrfs_swap_activate()
10847 if (!IS_ERR_OR_NULL(em)) in btrfs_swap_activate()
10848 free_extent_map(em); in btrfs_swap_activate()