Commit 7c0260ee authored by Jeff Mahoney's avatar Jeff Mahoney Committed by David Sterba

btrfs: tests, require fs_info for root

This allows the upcoming patchset to push nodesize and sectorsize into
fs_info.
Signed-off-by: default avatarJeff Mahoney <jeffm@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 8632daae
...@@ -117,6 +117,7 @@ static inline unsigned long btrfs_chunk_item_size(int num_stripes) ...@@ -117,6 +117,7 @@ static inline unsigned long btrfs_chunk_item_size(int num_stripes)
#define BTRFS_FS_STATE_REMOUNTING 1 #define BTRFS_FS_STATE_REMOUNTING 1
#define BTRFS_FS_STATE_TRANS_ABORTED 2 #define BTRFS_FS_STATE_TRANS_ABORTED 2
#define BTRFS_FS_STATE_DEV_REPLACING 3 #define BTRFS_FS_STATE_DEV_REPLACING 3
#define BTRFS_FS_STATE_DUMMY_FS_INFO 4
#define BTRFS_BACKREF_REV_MAX 256 #define BTRFS_BACKREF_REV_MAX 256
#define BTRFS_BACKREF_REV_SHIFT 56 #define BTRFS_BACKREF_REV_SHIFT 56
......
...@@ -1233,6 +1233,7 @@ static void __setup_root(u32 nodesize, u32 sectorsize, u32 stripesize, ...@@ -1233,6 +1233,7 @@ static void __setup_root(u32 nodesize, u32 sectorsize, u32 stripesize,
struct btrfs_root *root, struct btrfs_fs_info *fs_info, struct btrfs_root *root, struct btrfs_fs_info *fs_info,
u64 objectid) u64 objectid)
{ {
bool dummy = test_bit(BTRFS_FS_STATE_DUMMY_FS_INFO, &fs_info->fs_state);
root->node = NULL; root->node = NULL;
root->commit_root = NULL; root->commit_root = NULL;
root->sectorsize = sectorsize; root->sectorsize = sectorsize;
...@@ -1287,14 +1288,14 @@ static void __setup_root(u32 nodesize, u32 sectorsize, u32 stripesize, ...@@ -1287,14 +1288,14 @@ static void __setup_root(u32 nodesize, u32 sectorsize, u32 stripesize,
root->log_transid = 0; root->log_transid = 0;
root->log_transid_committed = -1; root->log_transid_committed = -1;
root->last_log_commit = 0; root->last_log_commit = 0;
if (fs_info) if (!dummy)
extent_io_tree_init(&root->dirty_log_pages, extent_io_tree_init(&root->dirty_log_pages,
fs_info->btree_inode->i_mapping); fs_info->btree_inode->i_mapping);
memset(&root->root_key, 0, sizeof(root->root_key)); memset(&root->root_key, 0, sizeof(root->root_key));
memset(&root->root_item, 0, sizeof(root->root_item)); memset(&root->root_item, 0, sizeof(root->root_item));
memset(&root->defrag_progress, 0, sizeof(root->defrag_progress)); memset(&root->defrag_progress, 0, sizeof(root->defrag_progress));
if (fs_info) if (!dummy)
root->defrag_trans_start = fs_info->generation; root->defrag_trans_start = fs_info->generation;
else else
root->defrag_trans_start = 0; root->defrag_trans_start = 0;
...@@ -1315,15 +1316,19 @@ static struct btrfs_root *btrfs_alloc_root(struct btrfs_fs_info *fs_info, ...@@ -1315,15 +1316,19 @@ static struct btrfs_root *btrfs_alloc_root(struct btrfs_fs_info *fs_info,
#ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS #ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
/* Should only be used by the testing infrastructure */ /* Should only be used by the testing infrastructure */
struct btrfs_root *btrfs_alloc_dummy_root(u32 sectorsize, u32 nodesize) struct btrfs_root *btrfs_alloc_dummy_root(struct btrfs_fs_info *fs_info,
u32 sectorsize, u32 nodesize)
{ {
struct btrfs_root *root; struct btrfs_root *root;
root = btrfs_alloc_root(NULL, GFP_KERNEL); if (!fs_info)
return ERR_PTR(-EINVAL);
root = btrfs_alloc_root(fs_info, GFP_KERNEL);
if (!root) if (!root)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
/* We don't use the stripesize in selftest, set it as sectorsize */ /* We don't use the stripesize in selftest, set it as sectorsize */
__setup_root(nodesize, sectorsize, sectorsize, root, NULL, __setup_root(nodesize, sectorsize, sectorsize, root, fs_info,
BTRFS_ROOT_TREE_OBJECTID); BTRFS_ROOT_TREE_OBJECTID);
set_bit(BTRFS_ROOT_DUMMY_ROOT, &root->state); set_bit(BTRFS_ROOT_DUMMY_ROOT, &root->state);
root->alloc_bytenr = 0; root->alloc_bytenr = 0;
......
...@@ -90,7 +90,8 @@ void btrfs_drop_and_free_fs_root(struct btrfs_fs_info *fs_info, ...@@ -90,7 +90,8 @@ void btrfs_drop_and_free_fs_root(struct btrfs_fs_info *fs_info,
void btrfs_free_fs_root(struct btrfs_root *root); void btrfs_free_fs_root(struct btrfs_root *root);
#ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS #ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
struct btrfs_root *btrfs_alloc_dummy_root(u32 sectorsize, u32 nodesize); struct btrfs_root *btrfs_alloc_dummy_root(struct btrfs_fs_info *fs_info,
u32 sectorsize, u32 nodesize);
#endif #endif
/* /*
......
...@@ -128,14 +128,27 @@ struct btrfs_fs_info *btrfs_alloc_dummy_fs_info(void) ...@@ -128,14 +128,27 @@ struct btrfs_fs_info *btrfs_alloc_dummy_fs_info(void)
extent_io_tree_init(&fs_info->freed_extents[0], NULL); extent_io_tree_init(&fs_info->freed_extents[0], NULL);
extent_io_tree_init(&fs_info->freed_extents[1], NULL); extent_io_tree_init(&fs_info->freed_extents[1], NULL);
fs_info->pinned_extents = &fs_info->freed_extents[0]; fs_info->pinned_extents = &fs_info->freed_extents[0];
set_bit(BTRFS_FS_STATE_DUMMY_FS_INFO, &fs_info->fs_state);
test_mnt->mnt_sb->s_fs_info = fs_info;
return fs_info; return fs_info;
} }
static void btrfs_free_dummy_fs_info(struct btrfs_fs_info *fs_info) void btrfs_free_dummy_fs_info(struct btrfs_fs_info *fs_info)
{ {
struct radix_tree_iter iter; struct radix_tree_iter iter;
void **slot; void **slot;
if (!fs_info)
return;
if (WARN_ON(!test_bit(BTRFS_FS_STATE_DUMMY_FS_INFO,
&fs_info->fs_state)))
return;
test_mnt->mnt_sb->s_fs_info = NULL;
spin_lock(&fs_info->buffer_lock); spin_lock(&fs_info->buffer_lock);
radix_tree_for_each_slot(slot, &fs_info->buffer_radix, &iter, 0) { radix_tree_for_each_slot(slot, &fs_info->buffer_radix, &iter, 0) {
struct extent_buffer *eb; struct extent_buffer *eb;
...@@ -167,10 +180,11 @@ void btrfs_free_dummy_root(struct btrfs_root *root) ...@@ -167,10 +180,11 @@ void btrfs_free_dummy_root(struct btrfs_root *root)
{ {
if (!root) if (!root)
return; return;
/* Will be freed by btrfs_free_fs_roots */
if (WARN_ON(test_bit(BTRFS_ROOT_IN_RADIX, &root->state)))
return;
if (root->node) if (root->node)
free_extent_buffer(root->node); free_extent_buffer(root->node);
if (root->fs_info)
btrfs_free_dummy_fs_info(root->fs_info);
kfree(root); kfree(root);
} }
......
...@@ -35,6 +35,7 @@ int btrfs_test_qgroups(u32 sectorsize, u32 nodesize); ...@@ -35,6 +35,7 @@ int btrfs_test_qgroups(u32 sectorsize, u32 nodesize);
int btrfs_test_free_space_tree(u32 sectorsize, u32 nodesize); int btrfs_test_free_space_tree(u32 sectorsize, u32 nodesize);
struct inode *btrfs_new_test_inode(void); struct inode *btrfs_new_test_inode(void);
struct btrfs_fs_info *btrfs_alloc_dummy_fs_info(void); struct btrfs_fs_info *btrfs_alloc_dummy_fs_info(void);
void btrfs_free_dummy_fs_info(struct btrfs_fs_info *fs_info);
void btrfs_free_dummy_root(struct btrfs_root *root); void btrfs_free_dummy_root(struct btrfs_root *root);
struct btrfs_block_group_cache * struct btrfs_block_group_cache *
btrfs_alloc_dummy_block_group(unsigned long length, u32 sectorsize); btrfs_alloc_dummy_block_group(unsigned long length, u32 sectorsize);
......
...@@ -24,8 +24,9 @@ ...@@ -24,8 +24,9 @@
static int test_btrfs_split_item(u32 sectorsize, u32 nodesize) static int test_btrfs_split_item(u32 sectorsize, u32 nodesize)
{ {
struct btrfs_path *path; struct btrfs_fs_info *fs_info;
struct btrfs_root *root; struct btrfs_path *path = NULL;
struct btrfs_root *root = NULL;
struct extent_buffer *eb; struct extent_buffer *eb;
struct btrfs_item *item; struct btrfs_item *item;
char *value = "mary had a little lamb"; char *value = "mary had a little lamb";
...@@ -40,17 +41,24 @@ static int test_btrfs_split_item(u32 sectorsize, u32 nodesize) ...@@ -40,17 +41,24 @@ static int test_btrfs_split_item(u32 sectorsize, u32 nodesize)
test_msg("Running btrfs_split_item tests\n"); test_msg("Running btrfs_split_item tests\n");
root = btrfs_alloc_dummy_root(sectorsize, nodesize); fs_info = btrfs_alloc_dummy_fs_info();
if (!fs_info) {
test_msg("Could not allocate fs_info\n");
return -ENOMEM;
}
root = btrfs_alloc_dummy_root(fs_info, sectorsize, nodesize);
if (IS_ERR(root)) { if (IS_ERR(root)) {
test_msg("Could not allocate root\n"); test_msg("Could not allocate root\n");
return PTR_ERR(root); ret = PTR_ERR(root);
goto out;
} }
path = btrfs_alloc_path(); path = btrfs_alloc_path();
if (!path) { if (!path) {
test_msg("Could not allocate path\n"); test_msg("Could not allocate path\n");
kfree(root); ret = -ENOMEM;
return -ENOMEM; goto out;
} }
path->nodes[0] = eb = alloc_dummy_extent_buffer(NULL, nodesize, path->nodes[0] = eb = alloc_dummy_extent_buffer(NULL, nodesize,
...@@ -219,7 +227,8 @@ static int test_btrfs_split_item(u32 sectorsize, u32 nodesize) ...@@ -219,7 +227,8 @@ static int test_btrfs_split_item(u32 sectorsize, u32 nodesize)
} }
out: out:
btrfs_free_path(path); btrfs_free_path(path);
kfree(root); btrfs_free_dummy_root(root);
btrfs_free_dummy_fs_info(fs_info);
return ret; return ret;
} }
......
...@@ -837,6 +837,7 @@ test_steal_space_from_bitmap_to_extent(struct btrfs_block_group_cache *cache, ...@@ -837,6 +837,7 @@ test_steal_space_from_bitmap_to_extent(struct btrfs_block_group_cache *cache,
int btrfs_test_free_space_cache(u32 sectorsize, u32 nodesize) int btrfs_test_free_space_cache(u32 sectorsize, u32 nodesize)
{ {
struct btrfs_fs_info *fs_info;
struct btrfs_block_group_cache *cache; struct btrfs_block_group_cache *cache;
struct btrfs_root *root = NULL; struct btrfs_root *root = NULL;
int ret = -ENOMEM; int ret = -ENOMEM;
...@@ -855,15 +856,17 @@ int btrfs_test_free_space_cache(u32 sectorsize, u32 nodesize) ...@@ -855,15 +856,17 @@ int btrfs_test_free_space_cache(u32 sectorsize, u32 nodesize)
return 0; return 0;
} }
root = btrfs_alloc_dummy_root(sectorsize, nodesize); fs_info = btrfs_alloc_dummy_fs_info();
if (IS_ERR(root)) { if (!fs_info) {
ret = PTR_ERR(root); ret = -ENOMEM;
goto out; goto out;
} }
root->fs_info = btrfs_alloc_dummy_fs_info(); root = btrfs_alloc_dummy_root(fs_info, sectorsize, nodesize);
if (!root->fs_info) if (IS_ERR(root)) {
ret = PTR_ERR(root);
goto out; goto out;
}
root->fs_info->extent_root = root; root->fs_info->extent_root = root;
cache->fs_info = root->fs_info; cache->fs_info = root->fs_info;
...@@ -882,6 +885,7 @@ int btrfs_test_free_space_cache(u32 sectorsize, u32 nodesize) ...@@ -882,6 +885,7 @@ int btrfs_test_free_space_cache(u32 sectorsize, u32 nodesize)
out: out:
btrfs_free_dummy_block_group(cache); btrfs_free_dummy_block_group(cache);
btrfs_free_dummy_root(root); btrfs_free_dummy_root(root);
btrfs_free_dummy_fs_info(fs_info);
test_msg("Free space cache tests finished\n"); test_msg("Free space cache tests finished\n");
return ret; return ret;
} }
...@@ -443,23 +443,24 @@ typedef int (*test_func_t)(struct btrfs_trans_handle *, ...@@ -443,23 +443,24 @@ typedef int (*test_func_t)(struct btrfs_trans_handle *,
static int run_test(test_func_t test_func, int bitmaps, static int run_test(test_func_t test_func, int bitmaps,
u32 sectorsize, u32 nodesize) u32 sectorsize, u32 nodesize)
{ {
struct btrfs_fs_info *fs_info;
struct btrfs_root *root = NULL; struct btrfs_root *root = NULL;
struct btrfs_block_group_cache *cache = NULL; struct btrfs_block_group_cache *cache = NULL;
struct btrfs_trans_handle trans; struct btrfs_trans_handle trans;
struct btrfs_path *path = NULL; struct btrfs_path *path = NULL;
int ret; int ret;
root = btrfs_alloc_dummy_root(sectorsize, nodesize); fs_info = btrfs_alloc_dummy_fs_info();
if (IS_ERR(root)) { if (!fs_info) {
test_msg("Couldn't allocate dummy root\n"); test_msg("Couldn't allocate dummy fs info\n");
ret = PTR_ERR(root); ret = -ENOMEM;
goto out; goto out;
} }
root->fs_info = btrfs_alloc_dummy_fs_info(); root = btrfs_alloc_dummy_root(fs_info, sectorsize, nodesize);
if (!root->fs_info) { if (IS_ERR(root)) {
test_msg("Couldn't allocate dummy fs info\n"); test_msg("Couldn't allocate dummy root\n");
ret = -ENOMEM; ret = PTR_ERR(root);
goto out; goto out;
} }
...@@ -534,6 +535,7 @@ static int run_test(test_func_t test_func, int bitmaps, ...@@ -534,6 +535,7 @@ static int run_test(test_func_t test_func, int bitmaps,
btrfs_free_path(path); btrfs_free_path(path);
btrfs_free_dummy_block_group(cache); btrfs_free_dummy_block_group(cache);
btrfs_free_dummy_root(root); btrfs_free_dummy_root(root);
btrfs_free_dummy_fs_info(fs_info);
return ret; return ret;
} }
......
...@@ -230,6 +230,7 @@ static unsigned long vacancy_only = 0; ...@@ -230,6 +230,7 @@ static unsigned long vacancy_only = 0;
static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize) static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
{ {
struct btrfs_fs_info *fs_info = NULL;
struct inode *inode = NULL; struct inode *inode = NULL;
struct btrfs_root *root = NULL; struct btrfs_root *root = NULL;
struct extent_map *em = NULL; struct extent_map *em = NULL;
...@@ -248,19 +249,15 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize) ...@@ -248,19 +249,15 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
BTRFS_I(inode)->location.objectid = BTRFS_FIRST_FREE_OBJECTID; BTRFS_I(inode)->location.objectid = BTRFS_FIRST_FREE_OBJECTID;
BTRFS_I(inode)->location.offset = 0; BTRFS_I(inode)->location.offset = 0;
root = btrfs_alloc_dummy_root(sectorsize, nodesize); fs_info = btrfs_alloc_dummy_fs_info();
if (IS_ERR(root)) { if (!fs_info) {
test_msg("Couldn't allocate root\n"); test_msg("Couldn't allocate dummy fs info\n");
goto out; goto out;
} }
/* root = btrfs_alloc_dummy_root(fs_info, sectorsize, nodesize);
* We do this since btrfs_get_extent wants to assign em->bdev to if (IS_ERR(root)) {
* root->fs_info->fs_devices->latest_bdev. test_msg("Couldn't allocate root\n");
*/
root->fs_info = btrfs_alloc_dummy_fs_info();
if (!root->fs_info) {
test_msg("Couldn't allocate dummy fs info\n");
goto out; goto out;
} }
...@@ -835,11 +832,13 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize) ...@@ -835,11 +832,13 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
free_extent_map(em); free_extent_map(em);
iput(inode); iput(inode);
btrfs_free_dummy_root(root); btrfs_free_dummy_root(root);
btrfs_free_dummy_fs_info(fs_info);
return ret; return ret;
} }
static int test_hole_first(u32 sectorsize, u32 nodesize) static int test_hole_first(u32 sectorsize, u32 nodesize)
{ {
struct btrfs_fs_info *fs_info = NULL;
struct inode *inode = NULL; struct inode *inode = NULL;
struct btrfs_root *root = NULL; struct btrfs_root *root = NULL;
struct extent_map *em = NULL; struct extent_map *em = NULL;
...@@ -855,15 +854,15 @@ static int test_hole_first(u32 sectorsize, u32 nodesize) ...@@ -855,15 +854,15 @@ static int test_hole_first(u32 sectorsize, u32 nodesize)
BTRFS_I(inode)->location.objectid = BTRFS_FIRST_FREE_OBJECTID; BTRFS_I(inode)->location.objectid = BTRFS_FIRST_FREE_OBJECTID;
BTRFS_I(inode)->location.offset = 0; BTRFS_I(inode)->location.offset = 0;
root = btrfs_alloc_dummy_root(sectorsize, nodesize); fs_info = btrfs_alloc_dummy_fs_info();
if (IS_ERR(root)) { if (!fs_info) {
test_msg("Couldn't allocate root\n"); test_msg("Couldn't allocate dummy fs info\n");
goto out; goto out;
} }
root->fs_info = btrfs_alloc_dummy_fs_info(); root = btrfs_alloc_dummy_root(fs_info, sectorsize, nodesize);
if (!root->fs_info) { if (IS_ERR(root)) {
test_msg("Couldn't allocate dummy fs info\n"); test_msg("Couldn't allocate root\n");
goto out; goto out;
} }
...@@ -934,11 +933,13 @@ static int test_hole_first(u32 sectorsize, u32 nodesize) ...@@ -934,11 +933,13 @@ static int test_hole_first(u32 sectorsize, u32 nodesize)
free_extent_map(em); free_extent_map(em);
iput(inode); iput(inode);
btrfs_free_dummy_root(root); btrfs_free_dummy_root(root);
btrfs_free_dummy_fs_info(fs_info);
return ret; return ret;
} }
static int test_extent_accounting(u32 sectorsize, u32 nodesize) static int test_extent_accounting(u32 sectorsize, u32 nodesize)
{ {
struct btrfs_fs_info *fs_info = NULL;
struct inode *inode = NULL; struct inode *inode = NULL;
struct btrfs_root *root = NULL; struct btrfs_root *root = NULL;
int ret = -ENOMEM; int ret = -ENOMEM;
...@@ -949,15 +950,15 @@ static int test_extent_accounting(u32 sectorsize, u32 nodesize) ...@@ -949,15 +950,15 @@ static int test_extent_accounting(u32 sectorsize, u32 nodesize)
return ret; return ret;
} }
root = btrfs_alloc_dummy_root(sectorsize, nodesize); fs_info = btrfs_alloc_dummy_fs_info();
if (IS_ERR(root)) { if (!fs_info) {
test_msg("Couldn't allocate root\n"); test_msg("Couldn't allocate dummy fs info\n");
goto out; goto out;
} }
root->fs_info = btrfs_alloc_dummy_fs_info(); root = btrfs_alloc_dummy_root(fs_info, sectorsize, nodesize);
if (!root->fs_info) { if (IS_ERR(root)) {
test_msg("Couldn't allocate dummy fs info\n"); test_msg("Couldn't allocate root\n");
goto out; goto out;
} }
...@@ -1132,6 +1133,7 @@ static int test_extent_accounting(u32 sectorsize, u32 nodesize) ...@@ -1132,6 +1133,7 @@ static int test_extent_accounting(u32 sectorsize, u32 nodesize)
NULL, GFP_KERNEL); NULL, GFP_KERNEL);
iput(inode); iput(inode);
btrfs_free_dummy_root(root); btrfs_free_dummy_root(root);
btrfs_free_dummy_fs_info(fs_info);
return ret; return ret;
} }
......
...@@ -453,22 +453,24 @@ static int test_multiple_refs(struct btrfs_root *root, ...@@ -453,22 +453,24 @@ static int test_multiple_refs(struct btrfs_root *root,
int btrfs_test_qgroups(u32 sectorsize, u32 nodesize) int btrfs_test_qgroups(u32 sectorsize, u32 nodesize)
{ {
struct btrfs_fs_info *fs_info = NULL;
struct btrfs_root *root; struct btrfs_root *root;
struct btrfs_root *tmp_root; struct btrfs_root *tmp_root;
int ret = 0; int ret = 0;
root = btrfs_alloc_dummy_root(sectorsize, nodesize); fs_info = btrfs_alloc_dummy_fs_info();
if (IS_ERR(root)) { if (!fs_info) {
test_msg("Couldn't allocate root\n"); test_msg("Couldn't allocate dummy fs info\n");
return PTR_ERR(root); return -ENOMEM;
} }
root->fs_info = btrfs_alloc_dummy_fs_info(); root = btrfs_alloc_dummy_root(fs_info, sectorsize, nodesize);
if (!root->fs_info) { if (IS_ERR(root)) {
test_msg("Couldn't allocate dummy fs info\n"); test_msg("Couldn't allocate root\n");
ret = -ENOMEM; ret = PTR_ERR(root);
goto out; goto out;
} }
/* We are using this root as our extent root */ /* We are using this root as our extent root */
root->fs_info->extent_root = root; root->fs_info->extent_root = root;
...@@ -495,7 +497,7 @@ int btrfs_test_qgroups(u32 sectorsize, u32 nodesize) ...@@ -495,7 +497,7 @@ int btrfs_test_qgroups(u32 sectorsize, u32 nodesize)
btrfs_set_header_nritems(root->node, 0); btrfs_set_header_nritems(root->node, 0);
root->alloc_bytenr += 2 * nodesize; root->alloc_bytenr += 2 * nodesize;
tmp_root = btrfs_alloc_dummy_root(sectorsize, nodesize); tmp_root = btrfs_alloc_dummy_root(fs_info, sectorsize, nodesize);
if (IS_ERR(tmp_root)) { if (IS_ERR(tmp_root)) {
test_msg("Couldn't allocate a fs root\n"); test_msg("Couldn't allocate a fs root\n");
ret = PTR_ERR(tmp_root); ret = PTR_ERR(tmp_root);
...@@ -510,7 +512,7 @@ int btrfs_test_qgroups(u32 sectorsize, u32 nodesize) ...@@ -510,7 +512,7 @@ int btrfs_test_qgroups(u32 sectorsize, u32 nodesize)
goto out; goto out;
} }
tmp_root = btrfs_alloc_dummy_root(sectorsize, nodesize); tmp_root = btrfs_alloc_dummy_root(fs_info, sectorsize, nodesize);
if (IS_ERR(tmp_root)) { if (IS_ERR(tmp_root)) {
test_msg("Couldn't allocate a fs root\n"); test_msg("Couldn't allocate a fs root\n");
ret = PTR_ERR(tmp_root); ret = PTR_ERR(tmp_root);
...@@ -531,5 +533,6 @@ int btrfs_test_qgroups(u32 sectorsize, u32 nodesize) ...@@ -531,5 +533,6 @@ int btrfs_test_qgroups(u32 sectorsize, u32 nodesize)
ret = test_multiple_refs(root, sectorsize, nodesize); ret = test_multiple_refs(root, sectorsize, nodesize);
out: out:
btrfs_free_dummy_root(root); btrfs_free_dummy_root(root);
btrfs_free_dummy_fs_info(fs_info);
return ret; return ret;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment