lkml.org 
[lkml]   [2018]   [May]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Date
Subject[PATCH 01/30] 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>
---
drivers/staging/lustre/lustre/osc/osc_request.c | 29 +++++++++++++----------
1 file 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;
}

\
 
 \ /
  Last update: 2018-05-21 06:45    [W:2.434 / U:0.000 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site