Lines Matching refs:em
16 struct extent_map *em;
22 em = rb_entry(node, struct extent_map, rb_node);
23 remove_extent_mapping(em_tree, em);
26 if (refcount_read(&em->refs) != 1) {
28 "em leak: em (start 0x%llx len 0x%llx block_start 0x%llx block_len 0x%llx) refs %d",
29 em->start, em->len, em->block_start,
30 em->block_len, refcount_read(&em->refs));
32 refcount_set(&em->refs, 1);
35 free_extent_map(em);
52 * -> return em
59 struct extent_map *em;
64 em = alloc_extent_map();
65 if (!em) {
71 em->start = 0;
72 em->len = SZ_16K;
73 em->block_start = 0;
74 em->block_len = SZ_16K;
76 ret = add_extent_mapping(em_tree, em, 0);
82 free_extent_map(em);
85 em = alloc_extent_map();
86 if (!em) {
92 em->start = SZ_16K;
93 em->len = SZ_4K;
94 em->block_start = SZ_32K; /* avoid merging */
95 em->block_len = SZ_4K;
97 ret = add_extent_mapping(em_tree, em, 0);
103 free_extent_map(em);
105 em = alloc_extent_map();
106 if (!em) {
113 em->start = start;
114 em->len = len;
115 em->block_start = start;
116 em->block_len = len;
118 ret = btrfs_add_extent_mapping(fs_info, em_tree, &em, em->start, em->len);
124 if (em &&
125 (em->start != 0 || extent_map_end(em) != SZ_16K ||
126 em->block_start != 0 || em->block_len != SZ_16K)) {
128 "case1 [%llu %llu]: ret %d return a wrong em (start %llu len %llu block_start %llu block_len %llu",
129 start, start + len, ret, em->start, em->len,
130 em->block_start, em->block_len);
133 free_extent_map(em);
149 struct extent_map *em;
152 em = alloc_extent_map();
153 if (!em) {
159 em->start = 0;
160 em->len = SZ_1K;
161 em->block_start = EXTENT_MAP_INLINE;
162 em->block_len = (u64)-1;
164 ret = add_extent_mapping(em_tree, em, 0);
170 free_extent_map(em);
173 em = alloc_extent_map();
174 if (!em) {
180 em->start = SZ_4K;
181 em->len = SZ_4K;
182 em->block_start = SZ_4K;
183 em->block_len = SZ_4K;
185 ret = add_extent_mapping(em_tree, em, 0);
191 free_extent_map(em);
193 em = alloc_extent_map();
194 if (!em) {
201 em->start = 0;
202 em->len = SZ_1K;
203 em->block_start = EXTENT_MAP_INLINE;
204 em->block_len = (u64)-1;
206 ret = btrfs_add_extent_mapping(fs_info, em_tree, &em, em->start, em->len);
212 if (em &&
213 (em->start != 0 || extent_map_end(em) != SZ_1K ||
214 em->block_start != EXTENT_MAP_INLINE || em->block_len != (u64)-1)) {
216 "case2 [0 1K]: ret %d return a wrong em (start %llu len %llu block_start %llu block_len %llu",
217 ret, em->start, em->len, em->block_start,
218 em->block_len);
221 free_extent_map(em);
231 struct extent_map *em;
235 em = alloc_extent_map();
236 if (!em) {
242 em->start = SZ_4K;
243 em->len = SZ_4K;
244 em->block_start = SZ_4K;
245 em->block_len = SZ_4K;
247 ret = add_extent_mapping(em_tree, em, 0);
253 free_extent_map(em);
255 em = alloc_extent_map();
256 if (!em) {
263 em->start = 0;
264 em->len = SZ_16K;
265 em->block_start = 0;
266 em->block_len = SZ_16K;
268 ret = btrfs_add_extent_mapping(fs_info, em_tree, &em, start, len);
276 * Since bytes within em are contiguous, em->block_start is identical to
277 * em->start.
279 if (em &&
280 (start < em->start || start + len > extent_map_end(em) ||
281 em->start != em->block_start || em->len != em->block_len)) {
283 "case3 [0x%llx 0x%llx): ret %d em (start 0x%llx len 0x%llx block_start 0x%llx block_len 0x%llx)",
284 start, start + len, ret, em->start, em->len,
285 em->block_start, em->block_len);
288 free_extent_map(em);
303 * t1 goes ahead of t2 and adds em [4K, 8K) into tree.
330 struct extent_map *em;
334 em = alloc_extent_map();
335 if (!em) {
341 em->start = 0;
342 em->len = SZ_8K;
343 em->block_start = 0;
344 em->block_len = SZ_8K;
346 ret = add_extent_mapping(em_tree, em, 0);
352 free_extent_map(em);
354 em = alloc_extent_map();
355 if (!em) {
362 em->start = SZ_8K;
363 em->len = 24 * SZ_1K;
364 em->block_start = SZ_16K; /* avoid merging */
365 em->block_len = 24 * SZ_1K;
367 ret = add_extent_mapping(em_tree, em, 0);
373 free_extent_map(em);
375 em = alloc_extent_map();
376 if (!em) {
382 em->start = 0;
383 em->len = SZ_32K;
384 em->block_start = 0;
385 em->block_len = SZ_32K;
387 ret = btrfs_add_extent_mapping(fs_info, em_tree, &em, start, len);
394 if (em && (start < em->start || start + len > extent_map_end(em))) {
396 "case4 [0x%llx 0x%llx): ret %d, added wrong em (start 0x%llx len 0x%llx block_start 0x%llx block_len 0x%llx)",
397 start, len, ret, em->start, em->len, em->block_start,
398 em->block_len);
401 free_extent_map(em);
416 * t1 goes ahead of t2 and splits em [0, 32K) to em [0K, 8K) and [8K 32K).
449 struct extent_map *em;
452 em = alloc_extent_map();
453 if (!em) {
458 em->start = start;
459 em->len = len;
460 em->block_start = block_start;
461 em->block_len = SZ_4K;
462 set_bit(EXTENT_FLAG_COMPRESSED, &em->flags);
464 ret = add_extent_mapping(em_tree, em, 0);
466 free_extent_map(em);
565 * [32k, 64k) - test whole em dropping
567 * They'll have the EXTENT_FLAG_COMPRESSED flag set to keep the em tree from
568 * merging the em's.
659 * Test the btrfs_add_extent_mapping helper which will attempt to create an em
661 * are two unmerged em's side by side.
665 struct extent_map *em = NULL;
676 em = alloc_extent_map();
677 if (!em) {
682 em->start = SZ_4K;
683 em->len = SZ_4K;
684 em->block_start = SZ_16K;
685 em->block_len = SZ_16K;
687 ret = btrfs_add_extent_mapping(fs_info, em_tree, &em, 0, SZ_8K);
691 test_err("got an error when adding our em: %d", ret);
696 if (em->start != 0) {
697 test_err("unexpected em->start at %llu, wanted 0", em->start);
700 if (em->len != SZ_4K) {
701 test_err("unexpected em->len %llu, expected 4K", em->len);
706 free_extent_map(em);
719 struct extent_map *em;
733 em = alloc_extent_map();
734 if (!em) {
741 em->start = 0;
742 em->len = SZ_16K;
743 em->block_start = 0;
744 em->block_len = SZ_4K;
745 set_bit(EXTENT_FLAG_PINNED, &em->flags);
747 ret = add_extent_mapping(em_tree, em, 0);
753 free_extent_map(em);
755 em = alloc_extent_map();
756 if (!em) {
763 em->start = SZ_32K;
764 em->len = SZ_16K;
765 em->block_start = SZ_32K;
766 em->block_len = SZ_16K;
768 ret = add_extent_mapping(em_tree, em, 0);
774 free_extent_map(em);
785 em = lookup_extent_mapping(em_tree, 0, SZ_16K);
786 if (!em) {
787 test_err("didn't find an em at 0 as expected");
791 if (em->start != 0) {
792 test_err("em->start is %llu, expected 0", em->start);
796 if (em->len != SZ_16K) {
797 test_err("em->len is %llu, expected 16K", em->len);
801 free_extent_map(em);
804 em = lookup_extent_mapping(em_tree, SZ_16K, SZ_16K);
806 if (em) {
807 test_err("found an em when we weren't expecting one");
812 em = lookup_extent_mapping(em_tree, SZ_32K, SZ_16K);
814 if (!em) {
815 test_err("didn't find an em at 32K as expected");
819 if (em->start != (36 * SZ_1K)) {
820 test_err("em->start is %llu, expected 36K", em->start);
824 if (em->len != (12 * SZ_1K)) {
825 test_err("em->len is %llu, expected 12K", em->len);
829 free_extent_map(em);
832 em = lookup_extent_mapping(em_tree, 48 * SZ_1K, (u64)-1);
834 if (em) {
835 test_err("found an unexpected em above 48K");
841 free_extent_map(em);
862 struct extent_map *em;
868 em = alloc_extent_map();
869 if (!em) {
876 kfree(em);
881 set_bit(EXTENT_FLAG_FS_MAPPING, &em->flags);
883 em->start = SZ_4G;
884 em->len = test->data_stripe_size * test->num_data_stripes;
885 em->block_len = em->len;
886 em->orig_block_len = test->data_stripe_size;
887 em->map_lookup = map;
905 ret = add_extent_mapping(&fs_info->mapping_tree, em, 0);
912 ret = btrfs_rmap_block(fs_info, em->start, btrfs_sb_offset(1),
942 remove_extent_mapping(&fs_info->mapping_tree, em);
945 free_extent_map(em);
948 free_extent_map(em);