Lines Matching refs:cache

10 #include "../free-space-cache.h"
20 static int test_extents(struct btrfs_block_group *cache)
27 ret = btrfs_add_free_space(cache, 0, SZ_4M);
33 ret = btrfs_remove_free_space(cache, 0, SZ_4M);
39 if (test_check_exists(cache, 0, SZ_4M)) {
45 ret = btrfs_add_free_space(cache, 0, SZ_4M);
51 ret = btrfs_remove_free_space(cache, 3 * SZ_1M, SZ_1M);
57 ret = btrfs_remove_free_space(cache, 0, SZ_1M);
63 ret = btrfs_remove_free_space(cache, SZ_2M, 4096);
69 if (test_check_exists(cache, 0, SZ_1M)) {
74 if (test_check_exists(cache, SZ_2M, 4096)) {
79 if (test_check_exists(cache, 3 * SZ_1M, SZ_1M)) {
85 btrfs_remove_free_space_cache(cache);
90 static int test_bitmaps(struct btrfs_block_group *cache, u32 sectorsize)
97 ret = test_add_free_space_entry(cache, 0, SZ_4M, 1);
103 ret = btrfs_remove_free_space(cache, 0, SZ_4M);
109 if (test_check_exists(cache, 0, SZ_4M)) {
114 ret = test_add_free_space_entry(cache, 0, SZ_4M, 1);
120 ret = btrfs_remove_free_space(cache, SZ_1M, SZ_2M);
133 ret = test_add_free_space_entry(cache, next_bitmap_offset - SZ_2M,
141 ret = btrfs_remove_free_space(cache, next_bitmap_offset - SZ_1M, SZ_2M);
147 if (test_check_exists(cache, next_bitmap_offset - SZ_1M, SZ_2M)) {
152 btrfs_remove_free_space_cache(cache);
158 static int test_bitmaps_and_extents(struct btrfs_block_group *cache,
171 ret = test_add_free_space_entry(cache, SZ_4M, SZ_1M, 1);
177 ret = test_add_free_space_entry(cache, 0, SZ_1M, 0);
183 ret = btrfs_remove_free_space(cache, 0, SZ_1M);
189 if (test_check_exists(cache, 0, SZ_1M)) {
195 ret = test_add_free_space_entry(cache, 0, SZ_1M, 0);
201 ret = btrfs_remove_free_space(cache, SZ_4M, SZ_1M);
207 if (test_check_exists(cache, SZ_4M, SZ_1M)) {
216 ret = test_add_free_space_entry(cache, SZ_1M, SZ_4M, 1);
222 ret = btrfs_remove_free_space(cache, SZ_512K, 3 * SZ_1M);
228 if (test_check_exists(cache, SZ_512K, 3 * SZ_1M)) {
233 btrfs_remove_free_space_cache(cache);
236 ret = test_add_free_space_entry(cache, SZ_4M, SZ_4M, 1);
242 ret = test_add_free_space_entry(cache, SZ_2M, SZ_2M, 0);
244 test_err("couldn't add extent to the cache %d", ret);
248 ret = btrfs_remove_free_space(cache, 3 * SZ_1M, SZ_4M);
254 if (test_check_exists(cache, 3 * SZ_1M, SZ_4M)) {
269 btrfs_remove_free_space_cache(cache);
270 ret = test_add_free_space_entry(cache, bitmap_offset + SZ_4M, SZ_4M, 1);
276 ret = test_add_free_space_entry(cache, bitmap_offset - SZ_1M,
283 ret = btrfs_remove_free_space(cache, bitmap_offset + SZ_1M, 5 * SZ_1M);
289 if (test_check_exists(cache, bitmap_offset + SZ_1M, 5 * SZ_1M)) {
294 btrfs_remove_free_space_cache(cache);
302 ret = test_add_free_space_entry(cache, SZ_1M, SZ_2M, 1);
308 ret = test_add_free_space_entry(cache, 3 * SZ_1M, SZ_1M, 0);
314 ret = btrfs_remove_free_space(cache, SZ_1M, 3 * SZ_1M);
320 btrfs_remove_free_space_cache(cache);
333 check_num_extents_and_bitmaps(const struct btrfs_block_group *cache,
337 if (cache->free_space_ctl->free_extents != num_extents) {
339 "incorrect # of extent entries in the cache: %d, expected %d",
340 cache->free_space_ctl->free_extents, num_extents);
343 if (cache->free_space_ctl->total_bitmaps != num_bitmaps) {
345 "incorrect # of extent entries in the cache: %d, expected %d",
346 cache->free_space_ctl->total_bitmaps, num_bitmaps);
353 static int check_cache_empty(struct btrfs_block_group *cache)
362 if (cache->free_space_ctl->free_space != 0) {
363 test_err("cache free space is not 0");
368 offset = btrfs_find_space_for_alloc(cache, 0, 4096, 0,
376 /* And no extent nor bitmap entries in the cache anymore. */
377 return check_num_extents_and_bitmaps(cache, 0, 0);
395 test_steal_space_from_bitmap_to_extent(struct btrfs_block_group *cache,
419 * cache->free_space_ctl->extents_thresh, which currently is
426 orig_free_space_ops = cache->free_space_ctl->op;
427 cache->free_space_ctl->op = &test_free_space_ops;
432 ret = test_add_free_space_entry(cache, SZ_128M - SZ_256K, SZ_128K, 0);
439 ret = test_add_free_space_entry(cache, SZ_128M + SZ_512K,
446 ret = check_num_extents_and_bitmaps(cache, 2, 1);
457 ret = btrfs_remove_free_space(cache,
466 if (!test_check_exists(cache, SZ_128M - SZ_256K, SZ_128K)) {
470 if (!test_check_exists(cache, SZ_128M + SZ_512K, SZ_256K)) {
479 if (test_check_exists(cache, SZ_128M + 768 * SZ_1K,
481 test_err("bitmap region not removed from space cache");
489 if (test_check_exists(cache, SZ_128M + SZ_256K, SZ_256K)) {
498 if (test_check_exists(cache, SZ_128M, SZ_256K)) {
505 * lets make sure the free space cache marks it as free in the bitmap,
508 ret = btrfs_add_free_space(cache, SZ_128M, SZ_512K);
514 if (!test_check_exists(cache, SZ_128M, SZ_512K)) {
521 * the cache after adding that free space region.
523 ret = check_num_extents_and_bitmaps(cache, 2, 1);
533 ret = btrfs_add_free_space(cache, SZ_128M + SZ_16M, sectorsize);
541 * the cache after adding that free space region.
543 ret = check_num_extents_and_bitmaps(cache, 2, 1);
552 ret = btrfs_add_free_space(cache, SZ_128M - SZ_128K, SZ_128K);
558 if (!test_check_exists(cache, SZ_128M - SZ_128K, SZ_128K)) {
567 ret = check_num_extents_and_bitmaps(cache, 2, 1);
575 * cache:
586 if (!test_check_exists(cache, SZ_128M - SZ_256K, SZ_1M)) {
591 if (cache->free_space_ctl->free_space != (SZ_1M + sectorsize)) {
592 test_err("cache free space is not 1Mb + %u", sectorsize);
596 offset = btrfs_find_space_for_alloc(cache,
601 "failed to allocate 1Mb from space cache, returned offset is: %llu",
610 ret = check_num_extents_and_bitmaps(cache, 1, 1);
614 if (cache->free_space_ctl->free_space != sectorsize) {
615 test_err("cache free space is not %u", sectorsize);
619 offset = btrfs_find_space_for_alloc(cache,
628 ret = check_cache_empty(cache);
632 btrfs_remove_free_space_cache(cache);
643 ret = test_add_free_space_entry(cache, SZ_128M + SZ_128K, SZ_128K, 0);
650 ret = test_add_free_space_entry(cache, 0, SZ_128M - SZ_512K, 1);
656 ret = check_num_extents_and_bitmaps(cache, 2, 1);
667 ret = btrfs_remove_free_space(cache, 0, SZ_128M - 768 * SZ_1K);
674 if (!test_check_exists(cache, SZ_128M + SZ_128K, SZ_128K)) {
678 if (!test_check_exists(cache, SZ_128M - 768 * SZ_1K, SZ_256K)) {
687 if (test_check_exists(cache, 0, SZ_128M - 768 * SZ_1K)) {
688 test_err("bitmap region not removed from space cache");
696 if (test_check_exists(cache, SZ_128M - SZ_512K, SZ_512K)) {
703 * lets make sure the free space cache marks it as free in the bitmap,
706 ret = btrfs_add_free_space(cache, SZ_128M - SZ_512K, SZ_512K);
712 if (!test_check_exists(cache, SZ_128M - SZ_512K, SZ_512K)) {
719 * the cache after adding that free space region.
721 ret = check_num_extents_and_bitmaps(cache, 2, 1);
731 ret = btrfs_add_free_space(cache, SZ_32M, 2 * sectorsize);
742 ret = btrfs_add_free_space(cache, SZ_128M, SZ_128K);
748 if (!test_check_exists(cache, SZ_128M, SZ_128K)) {
757 ret = check_num_extents_and_bitmaps(cache, 2, 1);
765 * cache:
776 if (!test_check_exists(cache, SZ_128M - 768 * SZ_1K, SZ_1M)) {
781 if (cache->free_space_ctl->free_space != (SZ_1M + 2 * sectorsize)) {
782 test_err("cache free space is not 1Mb + %u", 2 * sectorsize);
786 offset = btrfs_find_space_for_alloc(cache, 0, SZ_1M, 0,
790 "failed to allocate 1Mb from space cache, returned offset is: %llu",
799 ret = check_num_extents_and_bitmaps(cache, 1, 1);
803 if (cache->free_space_ctl->free_space != 2 * sectorsize) {
804 test_err("cache free space is not %u", 2 * sectorsize);
808 offset = btrfs_find_space_for_alloc(cache,
817 ret = check_cache_empty(cache);
821 cache->free_space_ctl->op = orig_free_space_ops;
822 btrfs_remove_free_space_cache(cache);
833 static int test_bytes_index(struct btrfs_block_group *cache, u32 sectorsize)
839 struct btrfs_free_space_ctl *ctl = cache->free_space_ctl;
851 ret = test_add_free_space_entry(cache, offset, bytes, 0);
871 btrfs_remove_free_space_cache(cache);
875 ret = test_add_free_space_entry(cache, offset, bytes, 1);
894 btrfs_remove_free_space_cache(cache);
895 orig_free_space_ops = cache->free_space_ctl->op;
896 cache->free_space_ctl->op = &test_free_space_ops;
898 ret = test_add_free_space_entry(cache, 0, sectorsize, 1);
905 ret = test_add_free_space_entry(cache, offset, sectorsize, 1);
917 ret = btrfs_add_free_space(cache, offset, sectorsize);
929 ret = btrfs_add_free_space(cache, offset, sectorsize);
947 offset = btrfs_find_space_for_alloc(cache, cache->start, sectorsize * 3,
973 ret = btrfs_add_free_space(cache, offset, sectorsize);
991 offset = btrfs_find_space_for_alloc(cache, cache->start, sectorsize * 2,
1000 cache->free_space_ctl->op = orig_free_space_ops;
1001 btrfs_remove_free_space_cache(cache);
1008 struct btrfs_block_group *cache;
1012 test_msg("running btrfs free space cache tests");
1024 cache = btrfs_alloc_dummy_block_group(fs_info,
1026 if (!cache) {
1044 ret = test_extents(cache);
1047 ret = test_bitmaps(cache, sectorsize);
1050 ret = test_bitmaps_and_extents(cache, sectorsize);
1054 ret = test_steal_space_from_bitmap_to_extent(cache, sectorsize);
1057 ret = test_bytes_index(cache, sectorsize);
1059 btrfs_free_dummy_block_group(cache);