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