Lines Matching full:em

17 	struct extent_map *em;  in free_extent_map_tree()  local
24 em = rb_entry(node, struct extent_map, rb_node); in free_extent_map_tree()
25 remove_extent_mapping(inode, em); in free_extent_map_tree()
28 if (refcount_read(&em->refs) != 1) { in free_extent_map_tree()
31 "em leak: em (start %llu len %llu disk_bytenr %llu disk_num_bytes %llu offset %llu) refs %d", in free_extent_map_tree()
32 em->start, em->len, em->disk_bytenr, in free_extent_map_tree()
33 em->disk_num_bytes, em->offset, in free_extent_map_tree()
34 refcount_read(&em->refs)); in free_extent_map_tree()
36 refcount_set(&em->refs, 1); in free_extent_map_tree()
39 free_extent_map(em); in free_extent_map_tree()
58 * -> return em
65 struct extent_map *em; in test_case_1() local
71 em = alloc_extent_map(); in test_case_1()
72 if (!em) { in test_case_1()
78 em->start = 0; in test_case_1()
79 em->len = SZ_16K; in test_case_1()
80 em->disk_bytenr = 0; in test_case_1()
81 em->disk_num_bytes = SZ_16K; in test_case_1()
82 em->ram_bytes = SZ_16K; in test_case_1()
84 ret = btrfs_add_extent_mapping(inode, &em, em->start, em->len); in test_case_1()
90 free_extent_map(em); in test_case_1()
93 em = alloc_extent_map(); in test_case_1()
94 if (!em) { in test_case_1()
100 em->start = SZ_16K; in test_case_1()
101 em->len = SZ_4K; in test_case_1()
102 em->disk_bytenr = SZ_32K; /* avoid merging */ in test_case_1()
103 em->disk_num_bytes = SZ_4K; in test_case_1()
104 em->ram_bytes = SZ_4K; in test_case_1()
106 ret = btrfs_add_extent_mapping(inode, &em, em->start, em->len); in test_case_1()
112 free_extent_map(em); in test_case_1()
114 em = alloc_extent_map(); in test_case_1()
115 if (!em) { in test_case_1()
122 em->start = start; in test_case_1()
123 em->len = len; in test_case_1()
124 em->disk_bytenr = start; in test_case_1()
125 em->disk_num_bytes = len; in test_case_1()
126 em->ram_bytes = len; in test_case_1()
128 ret = btrfs_add_extent_mapping(inode, &em, em->start, em->len); in test_case_1()
134 if (!em) { in test_case_1()
140 if (em->start != 0 || extent_map_end(em) != SZ_16K || in test_case_1()
141 em->disk_bytenr != 0 || em->disk_num_bytes != SZ_16K) { in test_case_1()
143 "case1 [%llu %llu]: ret %d return a wrong em (start %llu len %llu disk_bytenr %llu disk_num_bytes %… in test_case_1()
144 start, start + len, ret, em->start, em->len, in test_case_1()
145 em->disk_bytenr, em->disk_num_bytes); in test_case_1()
148 free_extent_map(em); in test_case_1()
166 struct extent_map *em; in test_case_2() local
170 em = alloc_extent_map(); in test_case_2()
171 if (!em) { in test_case_2()
177 em->start = 0; in test_case_2()
178 em->len = SZ_1K; in test_case_2()
179 em->disk_bytenr = EXTENT_MAP_INLINE; in test_case_2()
180 em->disk_num_bytes = 0; in test_case_2()
181 em->ram_bytes = SZ_1K; in test_case_2()
183 ret = btrfs_add_extent_mapping(inode, &em, em->start, em->len); in test_case_2()
189 free_extent_map(em); in test_case_2()
192 em = alloc_extent_map(); in test_case_2()
193 if (!em) { in test_case_2()
199 em->start = SZ_4K; in test_case_2()
200 em->len = SZ_4K; in test_case_2()
201 em->disk_bytenr = SZ_4K; in test_case_2()
202 em->disk_num_bytes = SZ_4K; in test_case_2()
203 em->ram_bytes = SZ_4K; in test_case_2()
205 ret = btrfs_add_extent_mapping(inode, &em, em->start, em->len); in test_case_2()
211 free_extent_map(em); in test_case_2()
213 em = alloc_extent_map(); in test_case_2()
214 if (!em) { in test_case_2()
221 em->start = 0; in test_case_2()
222 em->len = SZ_1K; in test_case_2()
223 em->disk_bytenr = EXTENT_MAP_INLINE; in test_case_2()
224 em->disk_num_bytes = 0; in test_case_2()
225 em->ram_bytes = SZ_1K; in test_case_2()
227 ret = btrfs_add_extent_mapping(inode, &em, em->start, em->len); in test_case_2()
233 if (!em) { in test_case_2()
238 if (em->start != 0 || extent_map_end(em) != SZ_1K || in test_case_2()
239 em->disk_bytenr != EXTENT_MAP_INLINE) { in test_case_2()
241 "case2 [0 1K]: ret %d return a wrong em (start %llu len %llu disk_bytenr %llu", in test_case_2()
242 ret, em->start, em->len, em->disk_bytenr); in test_case_2()
245 free_extent_map(em); in test_case_2()
258 struct extent_map *em; in __test_case_3() local
263 em = alloc_extent_map(); in __test_case_3()
264 if (!em) { in __test_case_3()
270 em->start = SZ_4K; in __test_case_3()
271 em->len = SZ_4K; in __test_case_3()
272 em->disk_bytenr = SZ_4K; in __test_case_3()
273 em->disk_num_bytes = SZ_4K; in __test_case_3()
274 em->ram_bytes = SZ_4K; in __test_case_3()
276 ret = btrfs_add_extent_mapping(inode, &em, em->start, em->len); in __test_case_3()
282 free_extent_map(em); in __test_case_3()
284 em = alloc_extent_map(); in __test_case_3()
285 if (!em) { in __test_case_3()
292 em->start = 0; in __test_case_3()
293 em->len = SZ_16K; in __test_case_3()
294 em->disk_bytenr = 0; in __test_case_3()
295 em->disk_num_bytes = SZ_16K; in __test_case_3()
296 em->ram_bytes = SZ_16K; in __test_case_3()
298 ret = btrfs_add_extent_mapping(inode, &em, start, len); in __test_case_3()
305 if (!em) { in __test_case_3()
312 * Since bytes within em are contiguous, em->block_start is identical to in __test_case_3()
313 * em->start. in __test_case_3()
315 if (start < em->start || start + len > extent_map_end(em) || in __test_case_3()
316 em->start != extent_map_block_start(em)) { in __test_case_3()
318 "case3 [%llu %llu): ret %d em (start %llu len %llu disk_bytenr %llu block_len %llu)", in __test_case_3()
319 start, start + len, ret, em->start, em->len, in __test_case_3()
320 em->disk_bytenr, em->disk_num_bytes); in __test_case_3()
323 free_extent_map(em); in __test_case_3()
340 * t1 goes ahead of t2 and adds em [4K, 8K) into tree.
367 struct extent_map *em; in __test_case_4() local
372 em = alloc_extent_map(); in __test_case_4()
373 if (!em) { in __test_case_4()
379 em->start = 0; in __test_case_4()
380 em->len = SZ_8K; in __test_case_4()
381 em->disk_bytenr = 0; in __test_case_4()
382 em->disk_num_bytes = SZ_8K; in __test_case_4()
383 em->ram_bytes = SZ_8K; in __test_case_4()
385 ret = btrfs_add_extent_mapping(inode, &em, em->start, em->len); in __test_case_4()
391 free_extent_map(em); in __test_case_4()
393 em = alloc_extent_map(); in __test_case_4()
394 if (!em) { in __test_case_4()
401 em->start = SZ_8K; in __test_case_4()
402 em->len = 24 * SZ_1K; in __test_case_4()
403 em->disk_bytenr = SZ_16K; /* avoid merging */ in __test_case_4()
404 em->disk_num_bytes = 24 * SZ_1K; in __test_case_4()
405 em->ram_bytes = 24 * SZ_1K; in __test_case_4()
407 ret = btrfs_add_extent_mapping(inode, &em, em->start, em->len); in __test_case_4()
413 free_extent_map(em); in __test_case_4()
415 em = alloc_extent_map(); in __test_case_4()
416 if (!em) { in __test_case_4()
422 em->start = 0; in __test_case_4()
423 em->len = SZ_32K; in __test_case_4()
424 em->disk_bytenr = 0; in __test_case_4()
425 em->disk_num_bytes = SZ_32K; in __test_case_4()
426 em->ram_bytes = SZ_32K; in __test_case_4()
428 ret = btrfs_add_extent_mapping(inode, &em, start, len); in __test_case_4()
435 if (!em) { in __test_case_4()
441 if (start < em->start || start + len > extent_map_end(em)) { in __test_case_4()
443 "case4 [%llu %llu): ret %d, added wrong em (start %llu len %llu disk_bytenr %llu disk_num_bytes %ll… in __test_case_4()
444 start, start + len, ret, em->start, em->len, in __test_case_4()
445 em->disk_bytenr, em->disk_num_bytes); in __test_case_4()
448 free_extent_map(em); in __test_case_4()
465 * t1 goes ahead of t2 and splits em [0, 32K) to em [0K, 8K) and [8K 32K).
498 struct extent_map *em; in add_compressed_extent() local
501 em = alloc_extent_map(); in add_compressed_extent()
502 if (!em) { in add_compressed_extent()
507 em->start = start; in add_compressed_extent()
508 em->len = len; in add_compressed_extent()
509 em->disk_bytenr = block_start; in add_compressed_extent()
510 em->disk_num_bytes = SZ_4K; in add_compressed_extent()
511 em->ram_bytes = len; in add_compressed_extent()
512 em->flags |= EXTENT_FLAG_COMPRESS_ZLIB; in add_compressed_extent()
514 ret = btrfs_add_extent_mapping(inode, &em, em->start, em->len); in add_compressed_extent()
516 free_extent_map(em); in add_compressed_extent()
615 * [32k, 64k) - test whole em dropping
617 * They'll have the EXTENT_FLAG_COMPRESSED flag set to keep the em tree from
618 * merging the em's.
703 * Test the btrfs_add_extent_mapping helper which will attempt to create an em
705 * are two unmerged em's side by side.
710 struct extent_map *em = NULL; in test_case_6() local
722 em = alloc_extent_map(); in test_case_6()
723 if (!em) { in test_case_6()
729 em->start = SZ_4K; in test_case_6()
730 em->len = SZ_4K; in test_case_6()
731 em->disk_bytenr = SZ_16K; in test_case_6()
732 em->disk_num_bytes = SZ_16K; in test_case_6()
733 em->ram_bytes = SZ_16K; in test_case_6()
735 ret = btrfs_add_extent_mapping(inode, &em, 0, SZ_8K); in test_case_6()
739 test_err("got an error when adding our em: %d", ret); in test_case_6()
744 if (em->start != 0) { in test_case_6()
745 test_err("unexpected em->start at %llu, wanted 0", em->start); in test_case_6()
748 if (em->len != SZ_4K) { in test_case_6()
749 test_err("unexpected em->len %llu, expected 4K", em->len); in test_case_6()
754 free_extent_map(em); in test_case_6()
770 struct extent_map *em; in test_case_7() local
776 em = alloc_extent_map(); in test_case_7()
777 if (!em) { in test_case_7()
783 em->start = 0; in test_case_7()
784 em->len = SZ_16K; in test_case_7()
785 em->disk_bytenr = 0; in test_case_7()
786 em->disk_num_bytes = SZ_4K; in test_case_7()
787 em->ram_bytes = SZ_16K; in test_case_7()
788 em->flags |= (EXTENT_FLAG_PINNED | EXTENT_FLAG_COMPRESS_ZLIB); in test_case_7()
790 ret = btrfs_add_extent_mapping(inode, &em, em->start, em->len); in test_case_7()
796 free_extent_map(em); in test_case_7()
798 em = alloc_extent_map(); in test_case_7()
799 if (!em) { in test_case_7()
806 em->start = SZ_32K; in test_case_7()
807 em->len = SZ_16K; in test_case_7()
808 em->disk_bytenr = SZ_32K; in test_case_7()
809 em->disk_num_bytes = SZ_16K; in test_case_7()
810 em->ram_bytes = SZ_16K; in test_case_7()
812 ret = btrfs_add_extent_mapping(inode, &em, em->start, em->len); in test_case_7()
818 free_extent_map(em); in test_case_7()
829 em = lookup_extent_mapping(em_tree, 0, SZ_16K); in test_case_7()
830 if (!em) { in test_case_7()
831 test_err("didn't find an em at 0 as expected"); in test_case_7()
835 if (em->start != 0) { in test_case_7()
836 test_err("em->start is %llu, expected 0", em->start); in test_case_7()
840 if (em->len != SZ_16K) { in test_case_7()
841 test_err("em->len is %llu, expected 16K", em->len); in test_case_7()
845 free_extent_map(em); in test_case_7()
848 em = lookup_extent_mapping(em_tree, SZ_16K, SZ_16K); in test_case_7()
850 if (em) { in test_case_7()
851 test_err("found an em when we weren't expecting one"); in test_case_7()
856 em = lookup_extent_mapping(em_tree, SZ_32K, SZ_16K); in test_case_7()
858 if (!em) { in test_case_7()
859 test_err("didn't find an em at 32K as expected"); in test_case_7()
863 if (em->start != (36 * SZ_1K)) { in test_case_7()
864 test_err("em->start is %llu, expected 36K", em->start); in test_case_7()
868 if (em->len != (12 * SZ_1K)) { in test_case_7()
869 test_err("em->len is %llu, expected 12K", em->len); in test_case_7()
873 if (extent_map_block_start(em) != SZ_32K + SZ_4K) { in test_case_7()
874 test_err("em->block_start is %llu, expected 36K", in test_case_7()
875 extent_map_block_start(em)); in test_case_7()
879 free_extent_map(em); in test_case_7()
882 em = lookup_extent_mapping(em_tree, 48 * SZ_1K, (u64)-1); in test_case_7()
884 if (em) { in test_case_7()
885 test_err("found an unexpected em above 48K"); in test_case_7()
891 free_extent_map(em); in test_case_7()
912 struct extent_map *em; in test_case_8() local
916 em = alloc_extent_map(); in test_case_8()
917 if (!em) { in test_case_8()
923 em->start = SZ_1K * 120; in test_case_8()
924 em->len = SZ_8K; in test_case_8()
925 em->disk_num_bytes = SZ_4K; in test_case_8()
926 em->ram_bytes = SZ_8K; in test_case_8()
927 em->flags |= EXTENT_FLAG_COMPRESS_ZLIB; in test_case_8()
929 ret = btrfs_add_extent_mapping(inode, &em, em->start, em->len); in test_case_8()
931 free_extent_map(em); in test_case_8()
937 em = alloc_extent_map(); in test_case_8()
938 if (!em) { in test_case_8()
948 em->start = SZ_1K * 108; in test_case_8()
949 em->len = SZ_1K * 36; in test_case_8()
950 em->disk_num_bytes = SZ_4K; in test_case_8()
951 em->ram_bytes = SZ_1K * 36; in test_case_8()
952 em->flags |= EXTENT_FLAG_COMPRESS_ZLIB; in test_case_8()
968 ret = btrfs_add_extent_mapping(inode, &em, SZ_1K * 140, SZ_4K); in test_case_8()
970 free_extent_map(em); in test_case_8()
976 if (em->start != SZ_128K) { in test_case_8()
977 test_err("unexpected extent map start %llu (should be 128K)", em->start); in test_case_8()
981 if (em->len != SZ_16K) { in test_case_8()
982 test_err("unexpected extent map length %llu (should be 16K)", em->len); in test_case_8()
986 if (em->offset != SZ_1K * 20) { in test_case_8()
987 test_err("unexpected extent map offset %llu (should be 20K)", em->offset); in test_case_8()