Lines Matching refs:em

1105 	struct extent_map *em;
1147 em = create_io_em(inode, start,
1156 if (IS_ERR(em)) {
1157 ret = PTR_ERR(em);
1160 free_extent_map(em);
1217 struct extent_map *em;
1221 em = search_extent_mapping(em_tree, start, num_bytes);
1222 if (em) {
1228 if (em->block_start >= EXTENT_MAP_LAST_BYTE) {
1229 free_extent_map(em);
1230 em = search_extent_mapping(em_tree, 0, 0);
1231 if (em && em->block_start < EXTENT_MAP_LAST_BYTE)
1232 alloc_hint = em->block_start;
1233 if (em)
1234 free_extent_map(em);
1236 alloc_hint = em->block_start;
1237 free_extent_map(em);
1288 struct extent_map *em;
1411 em = create_io_em(inode, start, ins.offset, /* len */
1419 if (IS_ERR(em)) {
1420 ret = PTR_ERR(em);
1423 free_extent_map(em);
2138 struct extent_map *em;
2140 em = create_io_em(inode, cur_offset, nocow_args.num_bytes,
2147 if (IS_ERR(em)) {
2149 ret = PTR_ERR(em);
2152 free_extent_map(em);
2619 struct extent_map *em;
2623 em = btrfs_get_extent(inode, NULL, 0, search_start, search_len);
2624 if (IS_ERR(em))
2625 return PTR_ERR(em);
2627 if (em->block_start != EXTENT_MAP_HOLE)
2630 em_len = em->len;
2631 if (em->start < search_start)
2632 em_len -= search_start - em->start;
2640 search_start = extent_map_end(em);
2641 free_extent_map(em);
3178 * writepage where we do ASSERT(em->block_start !=
4872 struct extent_map *em = NULL;
4897 em = btrfs_get_extent(inode, NULL, 0, cur_offset,
4899 if (IS_ERR(em)) {
4900 err = PTR_ERR(em);
4901 em = NULL;
4904 last_byte = min(extent_map_end(em), block_end);
4908 if (!test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) {
4949 free_extent_map(em);
4950 em = NULL;
4955 free_extent_map(em);
6762 struct extent_map *em = NULL;
6766 em = lookup_extent_mapping(em_tree, start, len);
6769 if (em) {
6770 if (em->start > start || em->start + em->len <= start)
6771 free_extent_map(em);
6772 else if (em->block_start == EXTENT_MAP_INLINE && page)
6773 free_extent_map(em);
6777 em = alloc_extent_map();
6778 if (!em) {
6782 em->start = EXTENT_MAP_HOLE;
6783 em->orig_start = EXTENT_MAP_HOLE;
6784 em->len = (u64)-1;
6785 em->block_len = (u64)-1;
6874 em->start = start;
6875 em->orig_start = start;
6876 em->len = found_key.offset - start;
6877 em->block_start = EXTENT_MAP_HOLE;
6881 btrfs_extent_item_to_extent_map(inode, path, item, em);
6894 ASSERT(em->start == 0);
6898 * initialized em members already.
6902 ASSERT(em->block_start == EXTENT_MAP_INLINE);
6903 ASSERT(em->len == fs_info->sectorsize);
6911 em->start = start;
6912 em->orig_start = start;
6913 em->len = len;
6914 em->block_start = EXTENT_MAP_HOLE;
6918 if (em->start > start || extent_map_end(em) <= start) {
6920 "bad extent! em: [%llu %llu] passed [%llu %llu]",
6921 em->start, em->len, start, len);
6927 ret = btrfs_add_extent_mapping(fs_info, em_tree, &em, start, len);
6932 trace_btrfs_get_extent(root, inode, em);
6935 free_extent_map(em);
6938 return em;
6952 struct extent_map *em = NULL;
6956 em = create_io_em(inode, start, len, orig_start, block_start,
6960 if (IS_ERR(em))
6969 if (em) {
6970 free_extent_map(em);
6974 em = ERR_CAST(ordered);
6981 return em;
6990 struct extent_map *em;
7008 em = btrfs_create_dio_extent(inode, dio_data, start, ins.offset, start,
7012 if (IS_ERR(em))
7016 return em;
7252 struct extent_map *em;
7260 em = alloc_extent_map();
7261 if (!em)
7264 em->start = start;
7265 em->orig_start = orig_start;
7266 em->len = len;
7267 em->block_len = block_len;
7268 em->block_start = block_start;
7269 em->orig_block_len = orig_block_len;
7270 em->ram_bytes = ram_bytes;
7271 em->generation = -1;
7272 set_bit(EXTENT_FLAG_PINNED, &em->flags);
7274 set_bit(EXTENT_FLAG_FILLING, &em->flags);
7276 set_bit(EXTENT_FLAG_COMPRESSED, &em->flags);
7277 em->compress_type = compress_type;
7280 ret = btrfs_replace_extent_map_range(inode, em, true);
7282 free_extent_map(em);
7286 /* em got 2 refs now, callers needs to do free_extent_map once. */
7287 return em;
7299 struct extent_map *em = *map;
7318 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags) ||
7320 em->block_start != EXTENT_MAP_HOLE)) {
7321 if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags))
7325 len = min(len, em->len - (start - em->start));
7326 block_start = em->block_start + (start - em->start);
7345 free_extent_map(em);
7360 free_extent_map(em);
7362 em = em2;
7373 free_extent_map(em);
7400 em = btrfs_new_extent_direct(BTRFS_I(inode), dio_data, start, len);
7401 if (IS_ERR(em)) {
7402 ret = PTR_ERR(em);
7405 *map = em;
7406 len = min(len, em->len - (start - em->start));
7439 struct extent_map *em;
7536 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, start, len);
7537 if (IS_ERR(em)) {
7538 ret = PTR_ERR(em);
7556 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags) ||
7557 em->block_start == EXTENT_MAP_INLINE) {
7558 free_extent_map(em);
7575 len = min(len, em->len - (start - em->start));
7599 free_extent_map(em);
7605 ret = btrfs_get_blocks_direct_write(&em, inode, dio_data,
7610 /* Recalc len in case the new em is smaller than requested */
7611 len = min(len, em->len - (start - em->start));
7651 if ((em->block_start == EXTENT_MAP_HOLE) ||
7652 (test_bit(EXTENT_FLAG_PREALLOC, &em->flags) && !write)) {
7656 iomap->addr = em->block_start + (start - em->start);
7662 free_extent_map(em);
9574 struct extent_map *em;
9629 em = alloc_extent_map();
9630 if (!em) {
9637 em->start = cur_offset;
9638 em->orig_start = cur_offset;
9639 em->len = ins.offset;
9640 em->block_start = ins.objectid;
9641 em->block_len = ins.offset;
9642 em->orig_block_len = ins.offset;
9643 em->ram_bytes = ins.offset;
9644 set_bit(EXTENT_FLAG_PREALLOC, &em->flags);
9645 em->generation = trans->transid;
9647 ret = btrfs_replace_extent_map_range(BTRFS_I(inode), em, true);
9648 free_extent_map(em);
10062 struct extent_map *em;
10097 em = btrfs_get_extent(inode, NULL, 0, start, lockend - start + 1);
10098 if (IS_ERR(em)) {
10099 ret = PTR_ERR(em);
10103 if (em->block_start == EXTENT_MAP_INLINE) {
10104 u64 extent_start = em->start;
10110 free_extent_map(em);
10111 em = NULL;
10122 encoded->len = min_t(u64, extent_map_end(em),
10124 if (em->block_start == EXTENT_MAP_HOLE ||
10125 test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) {
10130 } else if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) {
10131 disk_bytenr = em->block_start;
10136 if (em->block_len > count) {
10140 disk_io_size = em->block_len;
10141 count = em->block_len;
10142 encoded->unencoded_len = em->ram_bytes;
10143 encoded->unencoded_offset = iocb->ki_pos - em->orig_start;
10145 em->compress_type);
10150 disk_bytenr = em->block_start + (start - em->start);
10163 free_extent_map(em);
10164 em = NULL;
10185 free_extent_map(em);
10213 struct extent_map *em;
10378 em = create_io_em(inode, start, num_bytes,
10382 if (IS_ERR(em)) {
10383 ret = PTR_ERR(em);
10386 free_extent_map(em);
10582 struct extent_map *em = NULL;
10676 em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, start, len);
10677 if (IS_ERR(em)) {
10678 ret = PTR_ERR(em);
10682 if (em->block_start == EXTENT_MAP_HOLE) {
10687 if (em->block_start == EXTENT_MAP_INLINE) {
10699 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) {
10705 logical_block_start = em->block_start + (start - em->start);
10706 len = min(len, em->len - (start - em->start));
10707 free_extent_map(em);
10708 em = NULL;
10722 em = btrfs_get_chunk_map(fs_info, logical_block_start, len);
10723 if (IS_ERR(em)) {
10724 ret = PTR_ERR(em);
10728 if (em->map_lookup->type & BTRFS_BLOCK_GROUP_PROFILE_MASK) {
10736 device = em->map_lookup->stripes[0].dev;
10742 } else if (device != em->map_lookup->stripes[0].dev) {
10748 physical_block_start = (em->map_lookup->stripes[0].physical +
10749 (logical_block_start - em->start));
10750 len = min(len, em->len - (logical_block_start - em->start));
10751 free_extent_map(em);
10752 em = NULL;
10803 if (!IS_ERR_OR_NULL(em))
10804 free_extent_map(em);