summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
b3f5156)
add missing lprocfs_exp_cleanup calls to
error handling paths in {mdt,filter,mgs}_connect.
i=tappro
i=andrew.perepechko
{
lnet_nid_t *client_nid = localdata;
int rc, newnid;
{
lnet_nid_t *client_nid = localdata;
int rc, newnid;
rc = lprocfs_exp_setup(exp, client_nid, &newnid);
if (rc) {
rc = lprocfs_exp_setup(exp, client_nid, &newnid);
if (rc) {
* /proc entries */
if (rc == -EALREADY)
rc = 0;
* /proc entries */
if (rc == -EALREADY)
rc = 0;
if (newnid) {
/* Always add in ldlm_stats */
exp->exp_nid_stats->nid_ldlm_stats =
lprocfs_alloc_stats(LDLM_LAST_OPC - LDLM_FIRST_OPC,
LPROCFS_STATS_FLAG_NOPERCPU);
if (exp->exp_nid_stats->nid_ldlm_stats == NULL)
if (newnid) {
/* Always add in ldlm_stats */
exp->exp_nid_stats->nid_ldlm_stats =
lprocfs_alloc_stats(LDLM_LAST_OPC - LDLM_FIRST_OPC,
LPROCFS_STATS_FLAG_NOPERCPU);
if (exp->exp_nid_stats->nid_ldlm_stats == NULL)
+ GOTO(clean, rc = -ENOMEM);
lprocfs_init_ldlm_stats(exp->exp_nid_stats->nid_ldlm_stats);
rc = lprocfs_register_stats(exp->exp_nid_stats->nid_proc,
"ldlm_stats",
exp->exp_nid_stats->nid_ldlm_stats);
lprocfs_init_ldlm_stats(exp->exp_nid_stats->nid_ldlm_stats);
rc = lprocfs_register_stats(exp->exp_nid_stats->nid_proc,
"ldlm_stats",
exp->exp_nid_stats->nid_ldlm_stats);
+ if (rc)
+ GOTO(clean, rc);
+ RETURN(0);
+ clean:
+ lprocfs_exp_cleanup(exp);
{
lnet_nid_t *client_nid = localdata;
int rc, newnid;
{
lnet_nid_t *client_nid = localdata;
int rc, newnid;
rc = lprocfs_exp_setup(exp, client_nid, &newnid);
if (rc) {
rc = lprocfs_exp_setup(exp, client_nid, &newnid);
if (rc) {
* /proc entries */
if (rc == -EALREADY)
rc = 0;
* /proc entries */
if (rc == -EALREADY)
rc = 0;
lprocfs_alloc_stats(LDLM_LAST_OPC - LDLM_FIRST_OPC,
LPROCFS_STATS_FLAG_NOPERCPU);
if (exp->exp_nid_stats->nid_ldlm_stats == NULL)
lprocfs_alloc_stats(LDLM_LAST_OPC - LDLM_FIRST_OPC,
LPROCFS_STATS_FLAG_NOPERCPU);
if (exp->exp_nid_stats->nid_ldlm_stats == NULL)
+ GOTO(clean, rc = -ENOMEM);
lprocfs_init_ldlm_stats(exp->exp_nid_stats->nid_ldlm_stats);
rc = lprocfs_register_stats(exp->exp_nid_stats->nid_proc,
"ldlm_stats",
exp->exp_nid_stats->nid_ldlm_stats);
lprocfs_init_ldlm_stats(exp->exp_nid_stats->nid_ldlm_stats);
rc = lprocfs_register_stats(exp->exp_nid_stats->nid_proc,
"ldlm_stats",
exp->exp_nid_stats->nid_ldlm_stats);
+ if (rc)
+ GOTO(clean, rc);
+ RETURN(0);
+clean:
+ lprocfs_exp_cleanup(exp);
OBD_ALLOC(tmp->nid_brw_stats, sizeof(struct brw_stats));
if (tmp->nid_brw_stats == NULL)
OBD_ALLOC(tmp->nid_brw_stats, sizeof(struct brw_stats));
if (tmp->nid_brw_stats == NULL)
+ GOTO(clean, rc = -ENOMEM);
init_brw_stats(tmp->nid_brw_stats);
rc = lprocfs_seq_create(exp->exp_nid_stats->nid_proc, "brw_stats",
init_brw_stats(tmp->nid_brw_stats);
rc = lprocfs_seq_create(exp->exp_nid_stats->nid_proc, "brw_stats",
rc = lprocfs_init_rw_stats(obd, &exp->exp_nid_stats->nid_stats);
if (rc)
rc = lprocfs_init_rw_stats(obd, &exp->exp_nid_stats->nid_stats);
if (rc)
rc = lprocfs_register_stats(tmp->nid_proc, "stats",
tmp->nid_stats);
if (rc)
rc = lprocfs_register_stats(tmp->nid_proc, "stats",
tmp->nid_stats);
if (rc)
/* Always add in ldlm_stats */
tmp->nid_ldlm_stats =
lprocfs_alloc_stats(LDLM_LAST_OPC - LDLM_FIRST_OPC,
LPROCFS_STATS_FLAG_NOPERCPU);
if (tmp->nid_ldlm_stats == NULL)
/* Always add in ldlm_stats */
tmp->nid_ldlm_stats =
lprocfs_alloc_stats(LDLM_LAST_OPC - LDLM_FIRST_OPC,
LPROCFS_STATS_FLAG_NOPERCPU);
if (tmp->nid_ldlm_stats == NULL)
+ GOTO(clean, rc = -ENOMEM);
lprocfs_init_ldlm_stats(tmp->nid_ldlm_stats);
rc = lprocfs_register_stats(tmp->nid_proc, "ldlm_stats",
tmp->nid_ldlm_stats);
if (rc)
lprocfs_init_ldlm_stats(tmp->nid_ldlm_stats);
rc = lprocfs_register_stats(tmp->nid_proc, "ldlm_stats",
tmp->nid_ldlm_stats);
if (rc)
+ clean:
+ lprocfs_exp_cleanup(exp);
+ return rc;
}
/* Add client data to the FILTER. We use a bitmap to locate a free space
}
/* Add client data to the FILTER. We use a bitmap to locate a free space
fed->fed_lcd = NULL;
}
class_disconnect(lexp);
fed->fed_lcd = NULL;
}
class_disconnect(lexp);
+ lprocfs_exp_cleanup(lexp);
*exp = NULL;
} else {
*exp = lexp;
*exp = NULL;
} else {
*exp = lexp;