Lines Matching refs:em

773 	struct extent_map *em;
851 em = create_io_em(inode, async_extent->start,
860 if (IS_ERR(em))
863 free_extent_map(em);
936 struct extent_map *em;
940 em = search_extent_mapping(em_tree, start, num_bytes);
941 if (em) {
947 if (em->block_start >= EXTENT_MAP_LAST_BYTE) {
948 free_extent_map(em);
949 em = search_extent_mapping(em_tree, 0, 0);
950 if (em && em->block_start < EXTENT_MAP_LAST_BYTE)
951 alloc_hint = em->block_start;
952 if (em)
953 free_extent_map(em);
955 alloc_hint = em->block_start;
956 free_extent_map(em);
991 struct extent_map *em;
1064 em = create_io_em(inode, start, ins.offset, /* len */
1072 if (IS_ERR(em)) {
1073 ret = PTR_ERR(em);
1076 free_extent_map(em);
1697 struct extent_map *em;
1699 em = create_io_em(inode, cur_offset, num_bytes,
1706 if (IS_ERR(em)) {
1707 ret = PTR_ERR(em);
1710 free_extent_map(em);
2265 struct extent_map *em;
2269 em = btrfs_get_extent(inode, NULL, 0, search_start, search_len);
2270 if (IS_ERR(em))
2271 return PTR_ERR(em);
2273 if (em->block_start != EXTENT_MAP_HOLE)
2276 em_len = em->len;
2277 if (em->start < search_start)
2278 em_len -= search_start - em->start;
2287 search_start = extent_map_end(em);
2288 free_extent_map(em);
4760 struct extent_map *em = NULL;
4786 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, cur_offset,
4788 if (IS_ERR(em)) {
4789 err = PTR_ERR(em);
4790 em = NULL;
4793 last_byte = min(extent_map_end(em), block_end);
4797 if (!test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) {
4848 free_extent_map(em);
4849 em = NULL;
4854 free_extent_map(em);
4997 struct extent_map *em;
5000 em = rb_entry(node, struct extent_map, rb_node);
5001 clear_bit(EXTENT_FLAG_PINNED, &em->flags);
5002 clear_bit(EXTENT_FLAG_LOGGING, &em->flags);
5003 remove_extent_mapping(map_tree, em);
5004 free_extent_map(em);
6604 struct extent_map *em = NULL;
6609 em = lookup_extent_mapping(em_tree, start, len);
6612 if (em) {
6613 if (em->start > start || em->start + em->len <= start)
6614 free_extent_map(em);
6615 else if (em->block_start == EXTENT_MAP_INLINE && page)
6616 free_extent_map(em);
6620 em = alloc_extent_map();
6621 if (!em) {
6625 em->start = EXTENT_MAP_HOLE;
6626 em->orig_start = EXTENT_MAP_HOLE;
6627 em->len = (u64)-1;
6628 em->block_len = (u64)-1;
6715 em->start = start;
6716 em->orig_start = start;
6717 em->len = found_key.offset - start;
6718 em->block_start = EXTENT_MAP_HOLE;
6722 btrfs_extent_item_to_extent_map(inode, path, item, !page, em);
6741 em->start = extent_start + extent_offset;
6742 em->len = ALIGN(copy_size, fs_info->sectorsize);
6743 em->orig_block_len = em->len;
6744 em->orig_start = em->start;
6768 set_extent_uptodate(io_tree, em->start,
6769 extent_map_end(em) - 1, NULL, GFP_NOFS);
6773 em->start = start;
6774 em->orig_start = start;
6775 em->len = len;
6776 em->block_start = EXTENT_MAP_HOLE;
6780 if (em->start > start || extent_map_end(em) <= start) {
6782 "bad extent! em: [%llu %llu] passed [%llu %llu]",
6783 em->start, em->len, start, len);
6789 ret = btrfs_add_extent_mapping(fs_info, em_tree, &em, start, len);
6794 trace_btrfs_get_extent(root, inode, em);
6797 free_extent_map(em);
6800 return em;
6806 struct extent_map *em;
6814 em = btrfs_get_extent(inode, NULL, 0, start, len);
6815 if (IS_ERR(em))
6816 return em;
6818 * If our em maps to:
6823 if (em->block_start != EXTENT_MAP_HOLE &&
6824 !test_bit(EXTENT_FLAG_PREALLOC, &em->flags))
6825 return em;
6827 hole_em = em;
6836 em = NULL;
6850 em = hole_em;
6867 em = alloc_extent_map();
6868 if (!em) {
6895 em->len = min(hole_len, delalloc_start - hole_start);
6896 em->start = hole_start;
6897 em->orig_start = hole_start;
6902 em->block_start = hole_em->block_start;
6903 em->block_len = hole_len;
6905 set_bit(EXTENT_FLAG_PREALLOC, &em->flags);
6911 em->start = delalloc_start;
6912 em->len = delalloc_len;
6913 em->orig_start = delalloc_start;
6914 em->block_start = EXTENT_MAP_DELALLOC;
6915 em->block_len = delalloc_len;
6924 free_extent_map(em);
6927 return em;
6940 struct extent_map *em = NULL;
6944 em = create_io_em(inode, start, len, orig_start, block_start,
6948 if (IS_ERR(em))
6954 if (em) {
6955 free_extent_map(em);
6958 em = ERR_PTR(ret);
6962 return em;
6970 struct extent_map *em;
6981 em = btrfs_create_dio_extent(inode, start, ins.offset, start,
6985 if (IS_ERR(em))
6989 return em;
7249 struct extent_map *em;
7258 em = alloc_extent_map();
7259 if (!em)
7262 em->start = start;
7263 em->orig_start = orig_start;
7264 em->len = len;
7265 em->block_len = block_len;
7266 em->block_start = block_start;
7267 em->orig_block_len = orig_block_len;
7268 em->ram_bytes = ram_bytes;
7269 em->generation = -1;
7270 set_bit(EXTENT_FLAG_PINNED, &em->flags);
7272 set_bit(EXTENT_FLAG_FILLING, &em->flags);
7274 set_bit(EXTENT_FLAG_COMPRESSED, &em->flags);
7275 em->compress_type = compress_type;
7279 btrfs_drop_extent_cache(inode, em->start,
7280 em->start + em->len - 1, 0);
7282 ret = add_extent_mapping(em_tree, em, 1);
7286 * to add em?
7291 free_extent_map(em);
7295 /* em got 2 refs now, callers needs to do free_extent_map once. */
7296 return em;
7306 struct extent_map *em = *map;
7318 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags) ||
7320 em->block_start != EXTENT_MAP_HOLE)) {
7324 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags))
7328 len = min(len, em->len - (start - em->start));
7329 block_start = em->block_start + (start - em->start);
7342 free_extent_map(em);
7343 *map = em = em2;
7361 free_extent_map(em);
7362 *map = em = btrfs_new_extent_direct(BTRFS_I(inode), start, len);
7363 if (IS_ERR(em)) {
7364 ret = PTR_ERR(em);
7368 len = min(len, em->len - (start - em->start));
7388 struct extent_map *em;
7457 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, start, len);
7458 if (IS_ERR(em)) {
7459 ret = PTR_ERR(em);
7477 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags) ||
7478 em->block_start == EXTENT_MAP_INLINE) {
7479 free_extent_map(em);
7496 len = min(len, em->len - (start - em->start));
7498 ret = btrfs_get_blocks_direct_write(&em, inode, dio_data,
7503 /* Recalc len in case the new em is smaller than requested */
7504 len = min(len, em->len - (start - em->start));
7526 if ((em->block_start == EXTENT_MAP_HOLE) ||
7527 (test_bit(EXTENT_FLAG_PREALLOC, &em->flags) && !write)) {
7531 iomap->addr = em->block_start + (start - em->start);
7538 free_extent_map(em);
9783 struct extent_map *em;
9840 em = alloc_extent_map();
9841 if (!em) {
9847 em->start = cur_offset;
9848 em->orig_start = cur_offset;
9849 em->len = ins.offset;
9850 em->block_start = ins.objectid;
9851 em->block_len = ins.offset;
9852 em->orig_block_len = ins.offset;
9853 em->ram_bytes = ins.offset;
9854 set_bit(EXTENT_FLAG_PREALLOC, &em->flags);
9855 em->generation = trans->transid;
9859 ret = add_extent_mapping(em_tree, em, 1);
9867 free_extent_map(em);
10166 struct extent_map *em = NULL;
10260 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, start, len);
10261 if (IS_ERR(em)) {
10262 ret = PTR_ERR(em);
10266 if (em->block_start == EXTENT_MAP_HOLE) {
10271 if (em->block_start == EXTENT_MAP_INLINE) {
10283 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) {
10289 logical_block_start = em->block_start + (start - em->start);
10290 len = min(len, em->len - (start - em->start));
10291 free_extent_map(em);
10292 em = NULL;
10306 em = btrfs_get_chunk_map(fs_info, logical_block_start, len);
10307 if (IS_ERR(em)) {
10308 ret = PTR_ERR(em);
10312 if (em->map_lookup->type & BTRFS_BLOCK_GROUP_PROFILE_MASK) {
10320 device = em->map_lookup->stripes[0].dev;
10326 } else if (device != em->map_lookup->stripes[0].dev) {
10332 physical_block_start = (em->map_lookup->stripes[0].physical +
10333 (logical_block_start - em->start));
10334 len = min(len, em->len - (logical_block_start - em->start));
10335 free_extent_map(em);
10336 em = NULL;
10387 if (!IS_ERR_OR_NULL(em))
10388 free_extent_map(em);