|
@@ -1624,21 +1624,17 @@ static int __init ocfs2_init(void)
|
|
|
init_waitqueue_head(&ocfs2__ioend_wq[i]);
|
|
|
|
|
|
status = init_ocfs2_uptodate_cache();
|
|
|
- if (status < 0) {
|
|
|
- mlog_errno(status);
|
|
|
- goto leave;
|
|
|
- }
|
|
|
+ if (status < 0)
|
|
|
+ goto out1;
|
|
|
|
|
|
status = ocfs2_initialize_mem_caches();
|
|
|
- if (status < 0) {
|
|
|
- mlog_errno(status);
|
|
|
- goto leave;
|
|
|
- }
|
|
|
+ if (status < 0)
|
|
|
+ goto out2;
|
|
|
|
|
|
ocfs2_wq = create_singlethread_workqueue("ocfs2_wq");
|
|
|
if (!ocfs2_wq) {
|
|
|
status = -ENOMEM;
|
|
|
- goto leave;
|
|
|
+ goto out3;
|
|
|
}
|
|
|
|
|
|
ocfs2_debugfs_root = debugfs_create_dir("ocfs2", NULL);
|
|
@@ -1650,17 +1646,23 @@ static int __init ocfs2_init(void)
|
|
|
ocfs2_set_locking_protocol();
|
|
|
|
|
|
status = register_quota_format(&ocfs2_quota_format);
|
|
|
-leave:
|
|
|
- if (status < 0) {
|
|
|
- ocfs2_free_mem_caches();
|
|
|
- exit_ocfs2_uptodate_cache();
|
|
|
- mlog_errno(status);
|
|
|
- }
|
|
|
+ if (status < 0)
|
|
|
+ goto out4;
|
|
|
+ status = register_filesystem(&ocfs2_fs_type);
|
|
|
+ if (!status)
|
|
|
+ return 0;
|
|
|
|
|
|
- if (status >= 0) {
|
|
|
- return register_filesystem(&ocfs2_fs_type);
|
|
|
- } else
|
|
|
- return -1;
|
|
|
+ unregister_quota_format(&ocfs2_quota_format);
|
|
|
+out4:
|
|
|
+ destroy_workqueue(ocfs2_wq);
|
|
|
+ debugfs_remove(ocfs2_debugfs_root);
|
|
|
+out3:
|
|
|
+ ocfs2_free_mem_caches();
|
|
|
+out2:
|
|
|
+ exit_ocfs2_uptodate_cache();
|
|
|
+out1:
|
|
|
+ mlog_errno(status);
|
|
|
+ return status;
|
|
|
}
|
|
|
|
|
|
static void __exit ocfs2_exit(void)
|