aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/lustre/lustre/osc
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.com>2018-05-21 14:35:12 +1000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-05-25 18:29:09 +0200
commite67f133d02e78c0c5e7c46ca84996aad3b25d8d1 (patch)
tree2a460b72f1efa0499c1a57704969ca2dd194317c /drivers/staging/lustre/lustre/osc
parentstaging: comedi: comedidev.h: Fix SPDX-License-Identifier tag style (diff)
downloadlinux-dev-e67f133d02e78c0c5e7c46ca84996aad3b25d8d1.tar.xz
linux-dev-e67f133d02e78c0c5e7c46ca84996aad3b25d8d1.zip
staging: lustre: osc: tidy up osc_init()
A module_init() function that registers the services of the module should do that last, after all other initialization has succeeded. This patch moves the class_register_type() call to the end and ensures everything else that might have been set up, is cleaned up on error. Signed-off-by: NeilBrown <neilb@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/lustre/lustre/osc')
-rw-r--r--drivers/staging/lustre/lustre/osc/osc_request.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/drivers/staging/lustre/lustre/osc/osc_request.c b/drivers/staging/lustre/lustre/osc/osc_request.c
index 0038e555e905..0b5245741e42 100644
--- a/drivers/staging/lustre/lustre/osc/osc_request.c
+++ b/drivers/staging/lustre/lustre/osc/osc_request.c
@@ -2837,19 +2837,14 @@ static int __init osc_init(void)
lprocfs_osc_init_vars(&lvars);
- rc = class_register_type(&osc_obd_ops, NULL,
- LUSTRE_OSC_NAME, &osc_device_type);
- if (rc)
- goto out_kmem;
-
rc = register_shrinker(&osc_cache_shrinker);
if (rc)
- goto out_type;
+ goto err;
/* This is obviously too much memory, only prevent overflow here */
if (osc_reqpool_mem_max >= 1 << 12 || osc_reqpool_mem_max == 0) {
rc = -EINVAL;
- goto out_type;
+ goto err;
}
reqpool_size = osc_reqpool_mem_max << 20;
@@ -2870,14 +2865,22 @@ static int __init osc_init(void)
osc_rq_pool = ptlrpc_init_rq_pool(0, OST_MAXREQSIZE,
ptlrpc_add_rqs_to_pool);
- if (osc_rq_pool)
- return 0;
-
rc = -ENOMEM;
-out_type:
- class_unregister_type(LUSTRE_OSC_NAME);
-out_kmem:
+ if (!osc_rq_pool)
+ goto err;
+
+ rc = class_register_type(&osc_obd_ops, NULL,
+ LUSTRE_OSC_NAME, &osc_device_type);
+ if (rc)
+ goto err;
+
+ return rc;
+
+err:
+ if (osc_rq_pool)
+ ptlrpc_free_rq_pool(osc_rq_pool);
+ unregister_shrinker(&osc_cache_shrinker);
lu_kmem_fini(osc_caches);
return rc;
}