diff options
-rw-r--r-- | fs/btrfs/super.c | 43 | ||||
-rw-r--r-- | fs/btrfs/tests/btrfs-tests.c | 47 | ||||
-rw-r--r-- | fs/btrfs/tests/btrfs-tests.h | 35 |
3 files changed, 48 insertions, 77 deletions
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 4a0c0aeb0041..959823a12c42 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c | |||
@@ -2342,49 +2342,6 @@ static void btrfs_print_mod_info(void) | |||
2342 | btrfs_crc32c_impl()); | 2342 | btrfs_crc32c_impl()); |
2343 | } | 2343 | } |
2344 | 2344 | ||
2345 | static int btrfs_run_sanity_tests(void) | ||
2346 | { | ||
2347 | int ret, i; | ||
2348 | u32 sectorsize, nodesize; | ||
2349 | u32 test_sectorsize[] = { | ||
2350 | PAGE_SIZE, | ||
2351 | }; | ||
2352 | ret = btrfs_init_test_fs(); | ||
2353 | if (ret) | ||
2354 | return ret; | ||
2355 | for (i = 0; i < ARRAY_SIZE(test_sectorsize); i++) { | ||
2356 | sectorsize = test_sectorsize[i]; | ||
2357 | for (nodesize = sectorsize; | ||
2358 | nodesize <= BTRFS_MAX_METADATA_BLOCKSIZE; | ||
2359 | nodesize <<= 1) { | ||
2360 | pr_info("BTRFS: selftest: sectorsize: %u nodesize: %u\n", | ||
2361 | sectorsize, nodesize); | ||
2362 | ret = btrfs_test_free_space_cache(sectorsize, nodesize); | ||
2363 | if (ret) | ||
2364 | goto out; | ||
2365 | ret = btrfs_test_extent_buffer_operations(sectorsize, | ||
2366 | nodesize); | ||
2367 | if (ret) | ||
2368 | goto out; | ||
2369 | ret = btrfs_test_extent_io(sectorsize, nodesize); | ||
2370 | if (ret) | ||
2371 | goto out; | ||
2372 | ret = btrfs_test_inodes(sectorsize, nodesize); | ||
2373 | if (ret) | ||
2374 | goto out; | ||
2375 | ret = btrfs_test_qgroups(sectorsize, nodesize); | ||
2376 | if (ret) | ||
2377 | goto out; | ||
2378 | ret = btrfs_test_free_space_tree(sectorsize, nodesize); | ||
2379 | if (ret) | ||
2380 | goto out; | ||
2381 | } | ||
2382 | } | ||
2383 | out: | ||
2384 | btrfs_destroy_test_fs(); | ||
2385 | return ret; | ||
2386 | } | ||
2387 | |||
2388 | static int __init init_btrfs_fs(void) | 2345 | static int __init init_btrfs_fs(void) |
2389 | { | 2346 | { |
2390 | int err; | 2347 | int err; |
diff --git a/fs/btrfs/tests/btrfs-tests.c b/fs/btrfs/tests/btrfs-tests.c index 02223f3f78f4..71d9a0129347 100644 --- a/fs/btrfs/tests/btrfs-tests.c +++ b/fs/btrfs/tests/btrfs-tests.c | |||
@@ -54,7 +54,7 @@ struct inode *btrfs_new_test_inode(void) | |||
54 | return new_inode(test_mnt->mnt_sb); | 54 | return new_inode(test_mnt->mnt_sb); |
55 | } | 55 | } |
56 | 56 | ||
57 | int btrfs_init_test_fs(void) | 57 | static int btrfs_init_test_fs(void) |
58 | { | 58 | { |
59 | int ret; | 59 | int ret; |
60 | 60 | ||
@@ -73,7 +73,7 @@ int btrfs_init_test_fs(void) | |||
73 | return 0; | 73 | return 0; |
74 | } | 74 | } |
75 | 75 | ||
76 | void btrfs_destroy_test_fs(void) | 76 | static void btrfs_destroy_test_fs(void) |
77 | { | 77 | { |
78 | kern_unmount(test_mnt); | 78 | kern_unmount(test_mnt); |
79 | unregister_filesystem(&test_type); | 79 | unregister_filesystem(&test_type); |
@@ -220,3 +220,46 @@ void btrfs_init_dummy_trans(struct btrfs_trans_handle *trans) | |||
220 | INIT_LIST_HEAD(&trans->qgroup_ref_list); | 220 | INIT_LIST_HEAD(&trans->qgroup_ref_list); |
221 | trans->type = __TRANS_DUMMY; | 221 | trans->type = __TRANS_DUMMY; |
222 | } | 222 | } |
223 | |||
224 | int btrfs_run_sanity_tests(void) | ||
225 | { | ||
226 | int ret, i; | ||
227 | u32 sectorsize, nodesize; | ||
228 | u32 test_sectorsize[] = { | ||
229 | PAGE_SIZE, | ||
230 | }; | ||
231 | ret = btrfs_init_test_fs(); | ||
232 | if (ret) | ||
233 | return ret; | ||
234 | for (i = 0; i < ARRAY_SIZE(test_sectorsize); i++) { | ||
235 | sectorsize = test_sectorsize[i]; | ||
236 | for (nodesize = sectorsize; | ||
237 | nodesize <= BTRFS_MAX_METADATA_BLOCKSIZE; | ||
238 | nodesize <<= 1) { | ||
239 | pr_info("BTRFS: selftest: sectorsize: %u nodesize: %u\n", | ||
240 | sectorsize, nodesize); | ||
241 | ret = btrfs_test_free_space_cache(sectorsize, nodesize); | ||
242 | if (ret) | ||
243 | goto out; | ||
244 | ret = btrfs_test_extent_buffer_operations(sectorsize, | ||
245 | nodesize); | ||
246 | if (ret) | ||
247 | goto out; | ||
248 | ret = btrfs_test_extent_io(sectorsize, nodesize); | ||
249 | if (ret) | ||
250 | goto out; | ||
251 | ret = btrfs_test_inodes(sectorsize, nodesize); | ||
252 | if (ret) | ||
253 | goto out; | ||
254 | ret = btrfs_test_qgroups(sectorsize, nodesize); | ||
255 | if (ret) | ||
256 | goto out; | ||
257 | ret = btrfs_test_free_space_tree(sectorsize, nodesize); | ||
258 | if (ret) | ||
259 | goto out; | ||
260 | } | ||
261 | } | ||
262 | out: | ||
263 | btrfs_destroy_test_fs(); | ||
264 | return ret; | ||
265 | } | ||
diff --git a/fs/btrfs/tests/btrfs-tests.h b/fs/btrfs/tests/btrfs-tests.h index 66fb6b701eb7..e7d364f315db 100644 --- a/fs/btrfs/tests/btrfs-tests.h +++ b/fs/btrfs/tests/btrfs-tests.h | |||
@@ -20,20 +20,19 @@ | |||
20 | #define __BTRFS_TESTS | 20 | #define __BTRFS_TESTS |
21 | 21 | ||
22 | #ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS | 22 | #ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS |
23 | int btrfs_run_sanity_tests(void); | ||
23 | 24 | ||
24 | #define test_msg(fmt, ...) pr_info("BTRFS: selftest: " fmt, ##__VA_ARGS__) | 25 | #define test_msg(fmt, ...) pr_info("BTRFS: selftest: " fmt, ##__VA_ARGS__) |
25 | 26 | ||
26 | struct btrfs_root; | 27 | struct btrfs_root; |
27 | struct btrfs_trans_handle; | 28 | struct btrfs_trans_handle; |
28 | 29 | ||
29 | int btrfs_test_free_space_cache(u32 sectorsize, u32 nodesize); | ||
30 | int btrfs_test_extent_buffer_operations(u32 sectorsize, u32 nodesize); | 30 | int btrfs_test_extent_buffer_operations(u32 sectorsize, u32 nodesize); |
31 | int btrfs_test_free_space_cache(u32 sectorsize, u32 nodesize); | ||
31 | int btrfs_test_extent_io(u32 sectorsize, u32 nodesize); | 32 | int btrfs_test_extent_io(u32 sectorsize, u32 nodesize); |
32 | int btrfs_test_inodes(u32 sectorsize, u32 nodesize); | 33 | int btrfs_test_inodes(u32 sectorsize, u32 nodesize); |
33 | int btrfs_test_qgroups(u32 sectorsize, u32 nodesize); | 34 | int btrfs_test_qgroups(u32 sectorsize, u32 nodesize); |
34 | int btrfs_test_free_space_tree(u32 sectorsize, u32 nodesize); | 35 | int btrfs_test_free_space_tree(u32 sectorsize, u32 nodesize); |
35 | int btrfs_init_test_fs(void); | ||
36 | void btrfs_destroy_test_fs(void); | ||
37 | struct inode *btrfs_new_test_inode(void); | 36 | struct inode *btrfs_new_test_inode(void); |
38 | struct btrfs_fs_info *btrfs_alloc_dummy_fs_info(void); | 37 | struct btrfs_fs_info *btrfs_alloc_dummy_fs_info(void); |
39 | void btrfs_free_dummy_root(struct btrfs_root *root); | 38 | void btrfs_free_dummy_root(struct btrfs_root *root); |
@@ -42,35 +41,7 @@ btrfs_alloc_dummy_block_group(unsigned long length, u32 sectorsize); | |||
42 | void btrfs_free_dummy_block_group(struct btrfs_block_group_cache *cache); | 41 | void btrfs_free_dummy_block_group(struct btrfs_block_group_cache *cache); |
43 | void btrfs_init_dummy_trans(struct btrfs_trans_handle *trans); | 42 | void btrfs_init_dummy_trans(struct btrfs_trans_handle *trans); |
44 | #else | 43 | #else |
45 | static inline int btrfs_test_free_space_cache(u32 sectorsize, u32 nodesize) | 44 | static inline int btrfs_run_sanity_tests(void) |
46 | { | ||
47 | return 0; | ||
48 | } | ||
49 | static inline int btrfs_test_extent_buffer_operations(u32 sectorsize, | ||
50 | u32 nodesize) | ||
51 | { | ||
52 | return 0; | ||
53 | } | ||
54 | static inline int btrfs_init_test_fs(void) | ||
55 | { | ||
56 | return 0; | ||
57 | } | ||
58 | static inline void btrfs_destroy_test_fs(void) | ||
59 | { | ||
60 | } | ||
61 | static inline int btrfs_test_extent_io(u32 sectorsize, u32 nodesize) | ||
62 | { | ||
63 | return 0; | ||
64 | } | ||
65 | static inline int btrfs_test_inodes(u32 sectorsize, u32 nodesize) | ||
66 | { | ||
67 | return 0; | ||
68 | } | ||
69 | static inline int btrfs_test_qgroups(u32 sectorsize, u32 nodesize) | ||
70 | { | ||
71 | return 0; | ||
72 | } | ||
73 | static inline int btrfs_test_free_space_tree(u32 sectorsize, u32 nodesize) | ||
74 | { | 45 | { |
75 | return 0; | 46 | return 0; |
76 | } | 47 | } |