These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / fs / btrfs / tests / free-space-tests.c
index 2299bfd..8b72b00 100644 (file)
@@ -19,6 +19,7 @@
 #include <linux/slab.h>
 #include "btrfs-tests.h"
 #include "../ctree.h"
+#include "../disk-io.h"
 #include "../free-space-cache.h"
 
 #define BITS_PER_BITMAP                (PAGE_CACHE_SIZE * 8)
@@ -35,6 +36,12 @@ static struct btrfs_block_group_cache *init_test_block_group(void)
                kfree(cache);
                return NULL;
        }
+       cache->fs_info = btrfs_alloc_dummy_fs_info();
+       if (!cache->fs_info) {
+               kfree(cache->free_space_ctl);
+               kfree(cache);
+               return NULL;
+       }
 
        cache->key.objectid = 0;
        cache->key.offset = 1024 * 1024 * 1024;
@@ -879,7 +886,8 @@ test_steal_space_from_bitmap_to_extent(struct btrfs_block_group_cache *cache)
 int btrfs_test_free_space_cache(void)
 {
        struct btrfs_block_group_cache *cache;
-       int ret;
+       struct btrfs_root *root = NULL;
+       int ret = -ENOMEM;
 
        test_msg("Running btrfs free space cache tests\n");
 
@@ -889,6 +897,19 @@ int btrfs_test_free_space_cache(void)
                return 0;
        }
 
+       root = btrfs_alloc_dummy_root();
+       if (IS_ERR(root)) {
+               ret = PTR_ERR(root);
+               goto out;
+       }
+
+       root->fs_info = btrfs_alloc_dummy_fs_info();
+       if (!root->fs_info)
+               goto out;
+
+       root->fs_info->extent_root = root;
+       cache->fs_info = root->fs_info;
+
        ret = test_extents(cache);
        if (ret)
                goto out;
@@ -904,6 +925,7 @@ out:
        __btrfs_remove_free_space_cache(cache->free_space_ctl);
        kfree(cache->free_space_ctl);
        kfree(cache);
+       btrfs_free_dummy_root(root);
        test_msg("Free space cache tests finished\n");
        return ret;
 }