Commit b2136cc2 authored by David Sterba's avatar David Sterba

btrfs: tests: allocate dummy fs_info and root in test_find_delalloc()

Allocate fs_info and root to have a valid fs_info pointer in case it's
dereferenced by a helper outside of tests, like find_lock_delalloc_range().
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 737e6e5f
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "btrfs-tests.h" #include "btrfs-tests.h"
#include "../ctree.h" #include "../ctree.h"
#include "../extent_io.h" #include "../extent_io.h"
#include "../disk-io.h"
#include "../btrfs_inode.h" #include "../btrfs_inode.h"
#define PROCESS_UNLOCK (1 << 0) #define PROCESS_UNLOCK (1 << 0)
...@@ -105,9 +106,11 @@ static void dump_extent_io_tree(const struct extent_io_tree *tree) ...@@ -105,9 +106,11 @@ static void dump_extent_io_tree(const struct extent_io_tree *tree)
} }
} }
static int test_find_delalloc(u32 sectorsize) static int test_find_delalloc(u32 sectorsize, u32 nodesize)
{ {
struct inode *inode; struct btrfs_fs_info *fs_info;
struct btrfs_root *root = NULL;
struct inode *inode = NULL;
struct extent_io_tree *tmp; struct extent_io_tree *tmp;
struct page *page; struct page *page;
struct page *locked_page = NULL; struct page *locked_page = NULL;
...@@ -121,12 +124,27 @@ static int test_find_delalloc(u32 sectorsize) ...@@ -121,12 +124,27 @@ static int test_find_delalloc(u32 sectorsize)
test_msg("running find delalloc tests"); test_msg("running find delalloc tests");
fs_info = btrfs_alloc_dummy_fs_info(nodesize, sectorsize);
if (!fs_info) {
test_std_err(TEST_ALLOC_FS_INFO);
return -ENOMEM;
}
root = btrfs_alloc_dummy_root(fs_info);
if (IS_ERR(root)) {
test_std_err(TEST_ALLOC_ROOT);
ret = PTR_ERR(root);
goto out;
}
inode = btrfs_new_test_inode(); inode = btrfs_new_test_inode();
if (!inode) { if (!inode) {
test_std_err(TEST_ALLOC_INODE); test_std_err(TEST_ALLOC_INODE);
return -ENOMEM; ret = -ENOMEM;
goto out;
} }
tmp = &BTRFS_I(inode)->io_tree; tmp = &BTRFS_I(inode)->io_tree;
BTRFS_I(inode)->root = root;
/* /*
* Passing NULL as we don't have fs_info but tracepoints are not used * Passing NULL as we don't have fs_info but tracepoints are not used
...@@ -316,6 +334,8 @@ static int test_find_delalloc(u32 sectorsize) ...@@ -316,6 +334,8 @@ static int test_find_delalloc(u32 sectorsize)
process_page_range(inode, 0, total_dirty - 1, process_page_range(inode, 0, total_dirty - 1,
PROCESS_UNLOCK | PROCESS_RELEASE); PROCESS_UNLOCK | PROCESS_RELEASE);
iput(inode); iput(inode);
btrfs_free_dummy_root(root);
btrfs_free_dummy_fs_info(fs_info);
return ret; return ret;
} }
...@@ -794,7 +814,7 @@ int btrfs_test_extent_io(u32 sectorsize, u32 nodesize) ...@@ -794,7 +814,7 @@ int btrfs_test_extent_io(u32 sectorsize, u32 nodesize)
test_msg("running extent I/O tests"); test_msg("running extent I/O tests");
ret = test_find_delalloc(sectorsize); ret = test_find_delalloc(sectorsize, nodesize);
if (ret) if (ret)
goto out; goto out;
......
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