Btrfs: Return value checking in module init
Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
@@ -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);
|
|||||||
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)
|
|||||||
btrfs_init_transaction_sys();
|
btrfs_init_transaction_sys();
|
||||||
err = btrfs_init_cachep();
|
err = btrfs_init_cachep();
|
||||||
if (err)
|
if (err)
|
||||||
|
goto free_transaction_sys;
|
||||||
|
err = extent_map_init();
|
||||||
|
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;
|
return err;
|
||||||
extent_map_init();
|
|
||||||
return register_filesystem(&btrfs_fs_type);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit exit_btrfs_fs(void)
|
static void __exit exit_btrfs_fs(void)
|
||||||
|
Reference in New Issue
Block a user