we call ptlrpc_init_svc() or it will silently not create any "stats" entry.
b=1519
int rc = 0;
ENTRY;
+ lprocfs_init_vars(mdt, &lvars);
+ lprocfs_obd_setup(obd, lvars.obd_vars);
+
mds->mds_service =
ptlrpc_init_svc(MDS_NBUFS, MDS_BUFSIZE, MDS_MAXREQSIZE,
MDS_REQUEST_PORTAL, MDC_REPLY_PORTAL,
if (!mds->mds_service) {
CERROR("failed to start service\n");
- RETURN(rc = -ENOMEM);
+ GOTO(err_lprocfs, rc = -ENOMEM);
}
rc = ptlrpc_start_n_threads(obd, mds->mds_service, MDT_NUM_THREADS,
if (rc)
GOTO(err_thread3, rc);
- lprocfs_init_vars(mdt, &lvars);
- lprocfs_obd_setup(obd, lvars.obd_vars);
-
RETURN(0);
err_thread3:
ptlrpc_unregister_service(mds->mds_setattr_service);
err_thread:
ptlrpc_unregister_service(mds->mds_service);
+err_lprocfs:
+ lprocfs_obd_cleanup(obd);
return rc;
}
-
static int mdt_cleanup(struct obd_device *obd, int flags)
{
struct mds_obd *mds = &obd->u.mds;
ENTRY;
- lprocfs_obd_cleanup(obd);
-
ptlrpc_stop_all_threads(mds->mds_readpage_service);
ptlrpc_unregister_service(mds->mds_readpage_service);
ptlrpc_stop_all_threads(mds->mds_service);
ptlrpc_unregister_service(mds->mds_service);
+ lprocfs_obd_cleanup(obd);
+
RETURN(0);
}
if (rc < 0)
RETURN(rc);
+ lprocfs_init_vars(ost, &lvars);
+ lprocfs_obd_setup(obd, lvars.obd_vars);
+
ost->ost_service =
ptlrpc_init_svc(OST_NBUFS, OST_BUFSIZE, OST_MAXREQSIZE,
OST_REQUEST_PORTAL, OSC_REPLY_PORTAL,
obd->obd_proc_entry);
if (ost->ost_service == NULL) {
CERROR("failed to start service\n");
- RETURN(-ENOMEM);
+ GOTO(out_lprocfs, rc = -ENOMEM);
}
rc = ptlrpc_start_n_threads(obd, ost->ost_service, OST_NUM_THREADS,
"ll_ost");
if (rc)
- GOTO(out, rc = -EINVAL);
+ GOTO(out_service, rc = -EINVAL);
ost->ost_create_service =
ptlrpc_init_svc(OST_NBUFS, OST_BUFSIZE, OST_MAXREQSIZE,
obd->obd_proc_entry);
if (ost->ost_create_service == NULL) {
CERROR("failed to start OST create service\n");
- GOTO(out, rc = -ENOMEM);
+ GOTO(out_service, rc = -ENOMEM);
}
rc = ptlrpc_start_n_threads(obd, ost->ost_create_service, 1,
if (rc)
GOTO(out_create, rc = -EINVAL);
- lprocfs_init_vars(ost, &lvars);
- lprocfs_obd_setup(obd, lvars.obd_vars);
-
RETURN(0);
out_create:
ptlrpc_unregister_service(ost->ost_create_service);
-out:
+out_service:
ptlrpc_unregister_service(ost->ost_service);
+out_lprocfs:
+ lprocfs_obd_cleanup(obd);
RETURN(rc);
}
int err = 0;
ENTRY;
- lprocfs_obd_cleanup(obd);
-
spin_lock_bh(&obd->obd_processing_task_lock);
if (obd->obd_recovering) {
target_cancel_recovery_timer(obd);
ptlrpc_stop_all_threads(ost->ost_create_service);
ptlrpc_unregister_service(ost->ost_create_service);
+ lprocfs_obd_cleanup(obd);
+
RETURN(err);
}
if ( IS_ERR(ptlbd->filp) )
RETURN(PTR_ERR(ptlbd->filp));
+ lprocfs_init_vars(ptlbd_sv, &lvars);
+ lprocfs_obd_setup(obd, lvars.obd_vars);
+
ptlbd->ptlbd_service =
ptlrpc_init_svc(PTLBD_NBUFS, PTLBD_BUFSIZE, PTLBD_MAXREQSIZE,
PTLBD_REQUEST_PORTAL, PTLBD_REPLY_PORTAL,
ptlbd_sv_already_setup = 1;
- lprocfs_init_vars(ptlbd_sv, &lvars);
- lprocfs_obd_setup(obd, lvars.obd_vars);
-
RETURN(0);
out_thread:
ptlrpc_unregister_service(ptlbd->ptlbd_service);
out_filp:
filp_close(ptlbd->filp, NULL);
+ lprocfs_obd_cleanup(obd);
RETURN(rc);
}
/* XXX check for state */
- lprocfs_obd_cleanup(obd);
-
ptlrpc_stop_all_threads(ptlbd->ptlbd_service);
ptlrpc_unregister_service(ptlbd->ptlbd_service);
if ( ! IS_ERR(ptlbd->filp) )
filp_close(ptlbd->filp, NULL);
ptlbd_sv_already_setup = 0;
+
+ lprocfs_obd_cleanup(obd);
+
RETURN(0);
}
list_del_init (&service->srv_list);
spin_unlock (&ptlrpc_all_services_lock);
+ ptlrpc_lprocfs_unregister_service(service);
+
for (i = 0; i < ptlrpc_ninterfaces; i++) {
srv_ni = &service->srv_interfaces[i];
CDEBUG(D_NET, "%s: tearing down interface %s\n",
CWARN("Unexpectedly long timeout %p\n", service);
}
- ptlrpc_lprocfs_unregister_service(service);
-
OBD_FREE(service,
offsetof(struct ptlrpc_service,
srv_interfaces[ptlrpc_ninterfaces]));