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
1065 em = create_io_em(inode, start, ins.offset, /* len */ in cow_file_range()
1073 if (IS_ERR(em)) { in cow_file_range()
1074 ret = PTR_ERR(em); in cow_file_range()
1077 free_extent_map(em); in cow_file_range()
1698 struct extent_map *em; in run_delalloc_nocow() local
1700 em = create_io_em(inode, cur_offset, num_bytes, in run_delalloc_nocow()
1707 if (IS_ERR(em)) { in run_delalloc_nocow()
1708 ret = PTR_ERR(em); in run_delalloc_nocow()
1711 free_extent_map(em); in run_delalloc_nocow()
2266 struct extent_map *em; in btrfs_find_new_delalloc_bytes() local
2270 em = btrfs_get_extent(inode, NULL, 0, search_start, search_len); in btrfs_find_new_delalloc_bytes()
2271 if (IS_ERR(em)) in btrfs_find_new_delalloc_bytes()
2272 return PTR_ERR(em); in btrfs_find_new_delalloc_bytes()
2274 if (em->block_start != EXTENT_MAP_HOLE) in btrfs_find_new_delalloc_bytes()
2277 em_len = em->len; in btrfs_find_new_delalloc_bytes()
2278 if (em->start < search_start) in btrfs_find_new_delalloc_bytes()
2279 em_len -= search_start - em->start; in btrfs_find_new_delalloc_bytes()
2288 search_start = extent_map_end(em); in btrfs_find_new_delalloc_bytes()
2289 free_extent_map(em); in btrfs_find_new_delalloc_bytes()
4744 struct extent_map *em = NULL; in btrfs_cont_expand() local
4770 em = btrfs_get_extent(BTRFS_I(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()
4781 if (!test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) { in btrfs_cont_expand()
4832 free_extent_map(em); in btrfs_cont_expand()
4833 em = NULL; in btrfs_cont_expand()
4838 free_extent_map(em); in btrfs_cont_expand()
4981 struct extent_map *em; in evict_inode_truncate_pages() local
4984 em = rb_entry(node, struct extent_map, rb_node); in evict_inode_truncate_pages()
4985 clear_bit(EXTENT_FLAG_PINNED, &em->flags); in evict_inode_truncate_pages()
4986 clear_bit(EXTENT_FLAG_LOGGING, &em->flags); in evict_inode_truncate_pages()
4987 remove_extent_mapping(map_tree, em); in evict_inode_truncate_pages()
4988 free_extent_map(em); in evict_inode_truncate_pages()
6588 struct extent_map *em = NULL; in btrfs_get_extent() local
6593 em = lookup_extent_mapping(em_tree, start, len); in btrfs_get_extent()
6596 if (em) { in btrfs_get_extent()
6597 if (em->start > start || em->start + em->len <= start) in btrfs_get_extent()
6598 free_extent_map(em); in btrfs_get_extent()
6599 else if (em->block_start == EXTENT_MAP_INLINE && page) in btrfs_get_extent()
6600 free_extent_map(em); in btrfs_get_extent()
6604 em = alloc_extent_map(); in btrfs_get_extent()
6605 if (!em) { in btrfs_get_extent()
6609 em->start = EXTENT_MAP_HOLE; in btrfs_get_extent()
6610 em->orig_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
6611 em->len = (u64)-1; in btrfs_get_extent()
6612 em->block_len = (u64)-1; in btrfs_get_extent()
6699 em->start = start; in btrfs_get_extent()
6700 em->orig_start = start; in btrfs_get_extent()
6701 em->len = found_key.offset - start; in btrfs_get_extent()
6702 em->block_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
6706 btrfs_extent_item_to_extent_map(inode, path, item, !page, em); in btrfs_get_extent()
6725 em->start = extent_start + extent_offset; in btrfs_get_extent()
6726 em->len = ALIGN(copy_size, fs_info->sectorsize); in btrfs_get_extent()
6727 em->orig_block_len = em->len; in btrfs_get_extent()
6728 em->orig_start = em->start; in btrfs_get_extent()
6752 set_extent_uptodate(io_tree, em->start, in btrfs_get_extent()
6753 extent_map_end(em) - 1, NULL, GFP_NOFS); in btrfs_get_extent()
6757 em->start = start; in btrfs_get_extent()
6758 em->orig_start = start; in btrfs_get_extent()
6759 em->len = len; in btrfs_get_extent()
6760 em->block_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
6764 if (em->start > start || extent_map_end(em) <= start) { in btrfs_get_extent()
6767 em->start, em->len, start, len); in btrfs_get_extent()
6773 ret = btrfs_add_extent_mapping(fs_info, em_tree, &em, start, len); in btrfs_get_extent()
6778 trace_btrfs_get_extent(root, inode, em); in btrfs_get_extent()
6781 free_extent_map(em); in btrfs_get_extent()
6784 return em; in btrfs_get_extent()
6790 struct extent_map *em; in btrfs_get_extent_fiemap() local
6798 em = btrfs_get_extent(inode, NULL, 0, start, len); in btrfs_get_extent_fiemap()
6799 if (IS_ERR(em)) in btrfs_get_extent_fiemap()
6800 return em; in btrfs_get_extent_fiemap()
6807 if (em->block_start != EXTENT_MAP_HOLE && in btrfs_get_extent_fiemap()
6808 !test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_extent_fiemap()
6809 return em; in btrfs_get_extent_fiemap()
6811 hole_em = em; in btrfs_get_extent_fiemap()
6820 em = NULL; in btrfs_get_extent_fiemap()
6834 em = hole_em; in btrfs_get_extent_fiemap()
6851 em = alloc_extent_map(); in btrfs_get_extent_fiemap()
6852 if (!em) { in btrfs_get_extent_fiemap()
6879 em->len = min(hole_len, delalloc_start - hole_start); in btrfs_get_extent_fiemap()
6880 em->start = hole_start; in btrfs_get_extent_fiemap()
6881 em->orig_start = hole_start; in btrfs_get_extent_fiemap()
6886 em->block_start = hole_em->block_start; in btrfs_get_extent_fiemap()
6887 em->block_len = hole_len; in btrfs_get_extent_fiemap()
6889 set_bit(EXTENT_FLAG_PREALLOC, &em->flags); in btrfs_get_extent_fiemap()
6895 em->start = delalloc_start; in btrfs_get_extent_fiemap()
6896 em->len = delalloc_len; in btrfs_get_extent_fiemap()
6897 em->orig_start = delalloc_start; in btrfs_get_extent_fiemap()
6898 em->block_start = EXTENT_MAP_DELALLOC; in btrfs_get_extent_fiemap()
6899 em->block_len = delalloc_len; in btrfs_get_extent_fiemap()
6908 free_extent_map(em); in btrfs_get_extent_fiemap()
6911 return em; in btrfs_get_extent_fiemap()
6924 struct extent_map *em = NULL; in btrfs_create_dio_extent() local
6928 em = create_io_em(inode, start, len, orig_start, block_start, in btrfs_create_dio_extent()
6932 if (IS_ERR(em)) in btrfs_create_dio_extent()
6938 if (em) { in btrfs_create_dio_extent()
6939 free_extent_map(em); in btrfs_create_dio_extent()
6942 em = ERR_PTR(ret); in btrfs_create_dio_extent()
6946 return em; in btrfs_create_dio_extent()
6954 struct extent_map *em; in btrfs_new_extent_direct() local
6965 em = btrfs_create_dio_extent(inode, start, ins.offset, start, in btrfs_new_extent_direct()
6969 if (IS_ERR(em)) in btrfs_new_extent_direct()
6973 return em; in btrfs_new_extent_direct()
7233 struct extent_map *em; in create_io_em() local
7242 em = alloc_extent_map(); in create_io_em()
7243 if (!em) in create_io_em()
7246 em->start = start; in create_io_em()
7247 em->orig_start = orig_start; in create_io_em()
7248 em->len = len; in create_io_em()
7249 em->block_len = block_len; in create_io_em()
7250 em->block_start = block_start; in create_io_em()
7251 em->orig_block_len = orig_block_len; in create_io_em()
7252 em->ram_bytes = ram_bytes; in create_io_em()
7253 em->generation = -1; in create_io_em()
7254 set_bit(EXTENT_FLAG_PINNED, &em->flags); in create_io_em()
7256 set_bit(EXTENT_FLAG_FILLING, &em->flags); in create_io_em()
7258 set_bit(EXTENT_FLAG_COMPRESSED, &em->flags); in create_io_em()
7259 em->compress_type = compress_type; in create_io_em()
7263 btrfs_drop_extent_cache(inode, em->start, in create_io_em()
7264 em->start + em->len - 1, 0); in create_io_em()
7266 ret = add_extent_mapping(em_tree, em, 1); in create_io_em()
7275 free_extent_map(em); in create_io_em()
7280 return em; in create_io_em()
7290 struct extent_map *em = *map; in btrfs_get_blocks_direct_write() local
7302 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags) || in btrfs_get_blocks_direct_write()
7304 em->block_start != EXTENT_MAP_HOLE)) { in btrfs_get_blocks_direct_write()
7308 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_blocks_direct_write()
7312 len = min(len, em->len - (start - em->start)); in btrfs_get_blocks_direct_write()
7313 block_start = em->block_start + (start - em->start); in btrfs_get_blocks_direct_write()
7326 free_extent_map(em); in btrfs_get_blocks_direct_write()
7327 *map = em = em2; in btrfs_get_blocks_direct_write()
7345 free_extent_map(em); in btrfs_get_blocks_direct_write()
7346 *map = em = btrfs_new_extent_direct(BTRFS_I(inode), start, len); in btrfs_get_blocks_direct_write()
7347 if (IS_ERR(em)) { in btrfs_get_blocks_direct_write()
7348 ret = PTR_ERR(em); in btrfs_get_blocks_direct_write()
7352 len = min(len, em->len - (start - em->start)); in btrfs_get_blocks_direct_write()
7372 struct extent_map *em; in btrfs_dio_iomap_begin() local
7441 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, start, len); in btrfs_dio_iomap_begin()
7442 if (IS_ERR(em)) { in btrfs_dio_iomap_begin()
7443 ret = PTR_ERR(em); in btrfs_dio_iomap_begin()
7461 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags) || in btrfs_dio_iomap_begin()
7462 em->block_start == EXTENT_MAP_INLINE) { in btrfs_dio_iomap_begin()
7463 free_extent_map(em); in btrfs_dio_iomap_begin()
7468 len = min(len, em->len - (start - em->start)); in btrfs_dio_iomap_begin()
7470 ret = btrfs_get_blocks_direct_write(&em, inode, dio_data, in btrfs_dio_iomap_begin()
7476 len = min(len, em->len - (start - em->start)); in btrfs_dio_iomap_begin()
7498 if ((em->block_start == EXTENT_MAP_HOLE) || in btrfs_dio_iomap_begin()
7499 (test_bit(EXTENT_FLAG_PREALLOC, &em->flags) && !write)) { in btrfs_dio_iomap_begin()
7503 iomap->addr = em->block_start + (start - em->start); in btrfs_dio_iomap_begin()
7510 free_extent_map(em); in btrfs_dio_iomap_begin()
9696 struct extent_map *em; in __btrfs_prealloc_file_range() local
9753 em = alloc_extent_map(); in __btrfs_prealloc_file_range()
9754 if (!em) { in __btrfs_prealloc_file_range()
9760 em->start = cur_offset; in __btrfs_prealloc_file_range()
9761 em->orig_start = cur_offset; in __btrfs_prealloc_file_range()
9762 em->len = ins.offset; in __btrfs_prealloc_file_range()
9763 em->block_start = ins.objectid; in __btrfs_prealloc_file_range()
9764 em->block_len = ins.offset; in __btrfs_prealloc_file_range()
9765 em->orig_block_len = ins.offset; in __btrfs_prealloc_file_range()
9766 em->ram_bytes = ins.offset; in __btrfs_prealloc_file_range()
9767 set_bit(EXTENT_FLAG_PREALLOC, &em->flags); in __btrfs_prealloc_file_range()
9768 em->generation = trans->transid; in __btrfs_prealloc_file_range()
9772 ret = add_extent_mapping(em_tree, em, 1); in __btrfs_prealloc_file_range()
9780 free_extent_map(em); in __btrfs_prealloc_file_range()
10061 struct extent_map *em = NULL; in btrfs_swap_activate() local
10126 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, start, len); in btrfs_swap_activate()
10127 if (IS_ERR(em)) { in btrfs_swap_activate()
10128 ret = PTR_ERR(em); in btrfs_swap_activate()
10132 if (em->block_start == EXTENT_MAP_HOLE) { in btrfs_swap_activate()
10137 if (em->block_start == EXTENT_MAP_INLINE) { in btrfs_swap_activate()
10149 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) { in btrfs_swap_activate()
10155 logical_block_start = em->block_start + (start - em->start); in btrfs_swap_activate()
10156 len = min(len, em->len - (start - em->start)); in btrfs_swap_activate()
10157 free_extent_map(em); in btrfs_swap_activate()
10158 em = NULL; in btrfs_swap_activate()
10172 em = btrfs_get_chunk_map(fs_info, logical_block_start, len); in btrfs_swap_activate()
10173 if (IS_ERR(em)) { in btrfs_swap_activate()
10174 ret = PTR_ERR(em); in btrfs_swap_activate()
10178 if (em->map_lookup->type & BTRFS_BLOCK_GROUP_PROFILE_MASK) { in btrfs_swap_activate()
10186 device = em->map_lookup->stripes[0].dev; in btrfs_swap_activate()
10192 } else if (device != em->map_lookup->stripes[0].dev) { in btrfs_swap_activate()
10198 physical_block_start = (em->map_lookup->stripes[0].physical + in btrfs_swap_activate()
10199 (logical_block_start - em->start)); in btrfs_swap_activate()
10200 len = min(len, em->len - (logical_block_start - em->start)); in btrfs_swap_activate()
10201 free_extent_map(em); in btrfs_swap_activate()
10202 em = NULL; in btrfs_swap_activate()
10242 if (!IS_ERR_OR_NULL(em)) in btrfs_swap_activate()
10243 free_extent_map(em); in btrfs_swap_activate()