Commit 2f4cbe64 authored by Wyatt Banks's avatar Wyatt Banks Committed by Chris Mason

Btrfs: Return value checking in module init

Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
parent 3acd7ee8
...@@ -42,18 +42,30 @@ struct extent_page_data { ...@@ -42,18 +42,30 @@ struct extent_page_data {
struct extent_map_tree *tree; struct extent_map_tree *tree;
get_extent_t *get_extent; get_extent_t *get_extent;
}; };
int __init extent_map_init(void)
void __init extent_map_init(void)
{ {
extent_map_cache = btrfs_cache_create("extent_map", extent_map_cache = btrfs_cache_create("extent_map",
sizeof(struct extent_map), 0, sizeof(struct extent_map), 0,
NULL); NULL);
if (!extent_map_cache)
return -ENOMEM;
extent_state_cache = btrfs_cache_create("extent_state", extent_state_cache = btrfs_cache_create("extent_state",
sizeof(struct extent_state), 0, sizeof(struct extent_state), 0,
NULL); NULL);
if (!extent_state_cache)
goto free_map_cache;
extent_buffer_cache = btrfs_cache_create("extent_buffers", extent_buffer_cache = btrfs_cache_create("extent_buffers",
sizeof(struct extent_buffer), 0, sizeof(struct extent_buffer), 0,
NULL); NULL);
if (!extent_buffer_cache)
goto free_state_cache;
return 0;
free_state_cache:
kmem_cache_destroy(extent_state_cache);
free_map_cache:
kmem_cache_destroy(extent_map_cache);
return -ENOMEM;
} }
void __exit extent_map_exit(void) void __exit extent_map_exit(void)
......
...@@ -110,7 +110,7 @@ struct extent_map *alloc_extent_map(gfp_t mask); ...@@ -110,7 +110,7 @@ struct extent_map *alloc_extent_map(gfp_t mask);
void free_extent_map(struct extent_map *em); void free_extent_map(struct extent_map *em);
int extent_read_full_page(struct extent_map_tree *tree, struct page *page, int extent_read_full_page(struct extent_map_tree *tree, struct page *page,
get_extent_t *get_extent); get_extent_t *get_extent);
void __init extent_map_init(void); int __init extent_map_init(void);
void __exit extent_map_exit(void); void __exit extent_map_exit(void);
int test_range_bit(struct extent_map_tree *tree, u64 start, u64 end, int test_range_bit(struct extent_map_tree *tree, u64 start, u64 end,
......
...@@ -347,9 +347,24 @@ static int __init init_btrfs_fs(void) ...@@ -347,9 +347,24 @@ static int __init init_btrfs_fs(void)
btrfs_init_transaction_sys(); btrfs_init_transaction_sys();
err = btrfs_init_cachep(); err = btrfs_init_cachep();
if (err) if (err)
return err; goto free_transaction_sys;
extent_map_init(); err = extent_map_init();
return register_filesystem(&btrfs_fs_type); if (err)
goto free_cachep;
err = register_filesystem(&btrfs_fs_type);
if (err)
goto free_extent_map;
return 0;
free_extent_map:
extent_map_exit();
free_cachep:
btrfs_destroy_cachep();
free_transaction_sys:
btrfs_exit_transaction_sys();
btrfs_exit_sysfs();
return err;
} }
static void __exit exit_btrfs_fs(void) static void __exit exit_btrfs_fs(void)
......
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