Lines Matching refs:em
714 struct extent_map *em; in submit_compressed_extents() local
802 em = create_io_em(inode, async_extent->start, in submit_compressed_extents()
811 if (IS_ERR(em)) in submit_compressed_extents()
814 free_extent_map(em); in submit_compressed_extents()
894 struct extent_map *em; in get_extent_allocation_hint() local
898 em = search_extent_mapping(em_tree, start, num_bytes); in get_extent_allocation_hint()
899 if (em) { in get_extent_allocation_hint()
905 if (em->block_start >= EXTENT_MAP_LAST_BYTE) { in get_extent_allocation_hint()
906 free_extent_map(em); in get_extent_allocation_hint()
907 em = search_extent_mapping(em_tree, 0, 0); in get_extent_allocation_hint()
908 if (em && em->block_start < EXTENT_MAP_LAST_BYTE) in get_extent_allocation_hint()
909 alloc_hint = em->block_start; in get_extent_allocation_hint()
910 if (em) in get_extent_allocation_hint()
911 free_extent_map(em); in get_extent_allocation_hint()
913 alloc_hint = em->block_start; in get_extent_allocation_hint()
914 free_extent_map(em); in get_extent_allocation_hint()
949 struct extent_map *em; in cow_file_range() local
1009 em = create_io_em(inode, start, ins.offset, /* len */ in cow_file_range()
1017 if (IS_ERR(em)) { in cow_file_range()
1018 ret = PTR_ERR(em); in cow_file_range()
1021 free_extent_map(em); in cow_file_range()
1264 struct extent_map *em; in run_delalloc_nocow() local
1474 em = create_io_em(inode, cur_offset, num_bytes, in run_delalloc_nocow()
1481 if (IS_ERR(em)) { in run_delalloc_nocow()
1485 ret = PTR_ERR(em); in run_delalloc_nocow()
1488 free_extent_map(em); in run_delalloc_nocow()
4997 struct extent_map *em = NULL; in btrfs_cont_expand() local
5036 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, cur_offset, in btrfs_cont_expand()
5038 if (IS_ERR(em)) { in btrfs_cont_expand()
5039 err = PTR_ERR(em); in btrfs_cont_expand()
5040 em = NULL; in btrfs_cont_expand()
5043 last_byte = min(extent_map_end(em), block_end); in btrfs_cont_expand()
5045 if (!test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) { in btrfs_cont_expand()
5087 free_extent_map(em); in btrfs_cont_expand()
5088 em = NULL; in btrfs_cont_expand()
5093 free_extent_map(em); in btrfs_cont_expand()
5239 struct extent_map *em; in evict_inode_truncate_pages() local
5242 em = rb_entry(node, struct extent_map, rb_node); in evict_inode_truncate_pages()
5243 clear_bit(EXTENT_FLAG_PINNED, &em->flags); in evict_inode_truncate_pages()
5244 clear_bit(EXTENT_FLAG_LOGGING, &em->flags); in evict_inode_truncate_pages()
5245 remove_extent_mapping(map_tree, em); in evict_inode_truncate_pages()
5246 free_extent_map(em); in evict_inode_truncate_pages()
6796 struct extent_map *em = NULL; in btrfs_get_extent() local
6802 em = lookup_extent_mapping(em_tree, start, len); in btrfs_get_extent()
6803 if (em) in btrfs_get_extent()
6804 em->bdev = fs_info->fs_devices->latest_bdev; in btrfs_get_extent()
6807 if (em) { in btrfs_get_extent()
6808 if (em->start > start || em->start + em->len <= start) in btrfs_get_extent()
6809 free_extent_map(em); in btrfs_get_extent()
6810 else if (em->block_start == EXTENT_MAP_INLINE && page) in btrfs_get_extent()
6811 free_extent_map(em); in btrfs_get_extent()
6815 em = alloc_extent_map(); in btrfs_get_extent()
6816 if (!em) { in btrfs_get_extent()
6820 em->bdev = fs_info->fs_devices->latest_bdev; in btrfs_get_extent()
6821 em->start = EXTENT_MAP_HOLE; in btrfs_get_extent()
6822 em->orig_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
6823 em->len = (u64)-1; in btrfs_get_extent()
6824 em->block_len = (u64)-1; in btrfs_get_extent()
6910 em->start = start; in btrfs_get_extent()
6911 em->orig_start = start; in btrfs_get_extent()
6912 em->len = found_key.offset - start; in btrfs_get_extent()
6917 new_inline, em); in btrfs_get_extent()
6936 em->start = extent_start + extent_offset; in btrfs_get_extent()
6937 em->len = ALIGN(copy_size, fs_info->sectorsize); in btrfs_get_extent()
6938 em->orig_block_len = em->len; in btrfs_get_extent()
6939 em->orig_start = em->start; in btrfs_get_extent()
6963 set_extent_uptodate(io_tree, em->start, in btrfs_get_extent()
6964 extent_map_end(em) - 1, NULL, GFP_NOFS); in btrfs_get_extent()
6968 em->start = start; in btrfs_get_extent()
6969 em->orig_start = start; in btrfs_get_extent()
6970 em->len = len; in btrfs_get_extent()
6972 em->block_start = EXTENT_MAP_HOLE; in btrfs_get_extent()
6975 if (em->start > start || extent_map_end(em) <= start) { in btrfs_get_extent()
6978 em->start, em->len, start, len); in btrfs_get_extent()
6985 err = btrfs_add_extent_mapping(fs_info, em_tree, &em, start, len); in btrfs_get_extent()
6989 trace_btrfs_get_extent(root, inode, em); in btrfs_get_extent()
6993 free_extent_map(em); in btrfs_get_extent()
6996 BUG_ON(!em); /* Error is always set */ in btrfs_get_extent()
6997 return em; in btrfs_get_extent()
7005 struct extent_map *em; in btrfs_get_extent_fiemap() local
7013 em = btrfs_get_extent(inode, page, pg_offset, start, len, create); in btrfs_get_extent_fiemap()
7014 if (IS_ERR(em)) in btrfs_get_extent_fiemap()
7015 return em; in btrfs_get_extent_fiemap()
7022 if (em->block_start != EXTENT_MAP_HOLE && in btrfs_get_extent_fiemap()
7023 !test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_extent_fiemap()
7024 return em; in btrfs_get_extent_fiemap()
7026 hole_em = em; in btrfs_get_extent_fiemap()
7035 em = NULL; in btrfs_get_extent_fiemap()
7049 em = hole_em; in btrfs_get_extent_fiemap()
7064 em = alloc_extent_map(); in btrfs_get_extent_fiemap()
7065 if (!em) { in btrfs_get_extent_fiemap()
7088 em->bdev = NULL; in btrfs_get_extent_fiemap()
7094 em->len = min(hole_len, in btrfs_get_extent_fiemap()
7096 em->start = hole_start; in btrfs_get_extent_fiemap()
7097 em->orig_start = hole_start; in btrfs_get_extent_fiemap()
7102 em->block_start = hole_em->block_start; in btrfs_get_extent_fiemap()
7103 em->block_len = hole_len; in btrfs_get_extent_fiemap()
7105 set_bit(EXTENT_FLAG_PREALLOC, &em->flags); in btrfs_get_extent_fiemap()
7107 em->start = range_start; in btrfs_get_extent_fiemap()
7108 em->len = found; in btrfs_get_extent_fiemap()
7109 em->orig_start = range_start; in btrfs_get_extent_fiemap()
7110 em->block_start = EXTENT_MAP_DELALLOC; in btrfs_get_extent_fiemap()
7111 em->block_len = found; in btrfs_get_extent_fiemap()
7120 free_extent_map(em); in btrfs_get_extent_fiemap()
7123 return em; in btrfs_get_extent_fiemap()
7136 struct extent_map *em = NULL; in btrfs_create_dio_extent() local
7140 em = create_io_em(inode, start, len, orig_start, in btrfs_create_dio_extent()
7145 if (IS_ERR(em)) in btrfs_create_dio_extent()
7151 if (em) { in btrfs_create_dio_extent()
7152 free_extent_map(em); in btrfs_create_dio_extent()
7156 em = ERR_PTR(ret); in btrfs_create_dio_extent()
7160 return em; in btrfs_create_dio_extent()
7168 struct extent_map *em; in btrfs_new_extent_direct() local
7179 em = btrfs_create_dio_extent(inode, start, ins.offset, start, in btrfs_new_extent_direct()
7183 if (IS_ERR(em)) in btrfs_new_extent_direct()
7187 return em; in btrfs_new_extent_direct()
7426 struct extent_map *em; in create_io_em() local
7436 em = alloc_extent_map(); in create_io_em()
7437 if (!em) in create_io_em()
7440 em->start = start; in create_io_em()
7441 em->orig_start = orig_start; in create_io_em()
7442 em->len = len; in create_io_em()
7443 em->block_len = block_len; in create_io_em()
7444 em->block_start = block_start; in create_io_em()
7445 em->bdev = root->fs_info->fs_devices->latest_bdev; in create_io_em()
7446 em->orig_block_len = orig_block_len; in create_io_em()
7447 em->ram_bytes = ram_bytes; in create_io_em()
7448 em->generation = -1; in create_io_em()
7449 set_bit(EXTENT_FLAG_PINNED, &em->flags); in create_io_em()
7451 set_bit(EXTENT_FLAG_FILLING, &em->flags); in create_io_em()
7453 set_bit(EXTENT_FLAG_COMPRESSED, &em->flags); in create_io_em()
7454 em->compress_type = compress_type; in create_io_em()
7458 btrfs_drop_extent_cache(BTRFS_I(inode), em->start, in create_io_em()
7459 em->start + em->len - 1, 0); in create_io_em()
7461 ret = add_extent_mapping(em_tree, em, 1); in create_io_em()
7470 free_extent_map(em); in create_io_em()
7475 return em; in create_io_em()
7479 static int btrfs_get_blocks_direct_read(struct extent_map *em, in btrfs_get_blocks_direct_read() argument
7484 if (em->block_start == EXTENT_MAP_HOLE || in btrfs_get_blocks_direct_read()
7485 test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_blocks_direct_read()
7488 len = min(len, em->len - (start - em->start)); in btrfs_get_blocks_direct_read()
7490 bh_result->b_blocknr = (em->block_start + (start - em->start)) >> in btrfs_get_blocks_direct_read()
7493 bh_result->b_bdev = em->bdev; in btrfs_get_blocks_direct_read()
7506 struct extent_map *em = *map; in btrfs_get_blocks_direct_write() local
7518 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags) || in btrfs_get_blocks_direct_write()
7520 em->block_start != EXTENT_MAP_HOLE)) { in btrfs_get_blocks_direct_write()
7524 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_blocks_direct_write()
7528 len = min(len, em->len - (start - em->start)); in btrfs_get_blocks_direct_write()
7529 block_start = em->block_start + (start - em->start); in btrfs_get_blocks_direct_write()
7542 free_extent_map(em); in btrfs_get_blocks_direct_write()
7543 *map = em = em2; in btrfs_get_blocks_direct_write()
7563 free_extent_map(em); in btrfs_get_blocks_direct_write()
7564 *map = em = btrfs_new_extent_direct(inode, start, len); in btrfs_get_blocks_direct_write()
7565 if (IS_ERR(em)) { in btrfs_get_blocks_direct_write()
7566 ret = PTR_ERR(em); in btrfs_get_blocks_direct_write()
7570 len = min(len, em->len - (start - em->start)); in btrfs_get_blocks_direct_write()
7573 bh_result->b_blocknr = (em->block_start + (start - em->start)) >> in btrfs_get_blocks_direct_write()
7576 bh_result->b_bdev = em->bdev; in btrfs_get_blocks_direct_write()
7579 if (!test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) in btrfs_get_blocks_direct_write()
7601 struct extent_map *em; in btrfs_get_blocks_direct() local
7638 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, start, len, 0); in btrfs_get_blocks_direct()
7639 if (IS_ERR(em)) { in btrfs_get_blocks_direct()
7640 ret = PTR_ERR(em); in btrfs_get_blocks_direct()
7658 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags) || in btrfs_get_blocks_direct()
7659 em->block_start == EXTENT_MAP_INLINE) { in btrfs_get_blocks_direct()
7660 free_extent_map(em); in btrfs_get_blocks_direct()
7666 ret = btrfs_get_blocks_direct_write(&em, bh_result, inode, in btrfs_get_blocks_direct()
7675 ret = btrfs_get_blocks_direct_read(em, bh_result, inode, in btrfs_get_blocks_direct()
7680 free_extent_map(em); in btrfs_get_blocks_direct()
7697 free_extent_map(em); in btrfs_get_blocks_direct()
10228 struct extent_map *em; in __btrfs_prealloc_file_range() local
10286 em = alloc_extent_map(); in __btrfs_prealloc_file_range()
10287 if (!em) { in __btrfs_prealloc_file_range()
10293 em->start = cur_offset; in __btrfs_prealloc_file_range()
10294 em->orig_start = cur_offset; in __btrfs_prealloc_file_range()
10295 em->len = ins.offset; in __btrfs_prealloc_file_range()
10296 em->block_start = ins.objectid; in __btrfs_prealloc_file_range()
10297 em->block_len = ins.offset; in __btrfs_prealloc_file_range()
10298 em->orig_block_len = ins.offset; in __btrfs_prealloc_file_range()
10299 em->ram_bytes = ins.offset; in __btrfs_prealloc_file_range()
10300 em->bdev = fs_info->fs_devices->latest_bdev; in __btrfs_prealloc_file_range()
10301 set_bit(EXTENT_FLAG_PREALLOC, &em->flags); in __btrfs_prealloc_file_range()
10302 em->generation = trans->transid; in __btrfs_prealloc_file_range()
10306 ret = add_extent_mapping(em_tree, em, 1); in __btrfs_prealloc_file_range()
10314 free_extent_map(em); in __btrfs_prealloc_file_range()