mdc_llog_finish(obd);
err_llog_cleanup:
ptlrpc_lprocfs_unregister_obd(obd);
- lprocfs_obd_cleanup(obd);
lprocfs_free_md_stats(obd);
osc_cleanup_common(obd);
obd_cleanup_client_import(obd);
ptlrpc_lprocfs_unregister_obd(obd);
- lprocfs_obd_cleanup(obd);
lprocfs_free_md_stats(obd);
mdc_llog_finish(obd);
RETURN(0);
osc_precleanup_common(obd);
ptlrpc_lprocfs_unregister_obd(obd);
- lprocfs_obd_cleanup(obd);
RETURN(0);
}
LASSERT(m->lpd_obd);
ptlrpc_lprocfs_unregister_obd(m->lpd_obd);
- lprocfs_obd_cleanup(m->lpd_obd);
rc = client_obd_cleanup(m->lpd_obd);
LASSERTF(rc == 0, "error %d\n", rc);
obd_fid_fini(osp->opd_obd);
out_proc:
ptlrpc_lprocfs_unregister_obd(obd);
- lprocfs_obd_cleanup(obd);
if (osp->opd_symlink)
lprocfs_remove(&osp->opd_symlink);
client_obd_cleanup(obd);
LASSERT(osp->opd_obd);
ptlrpc_lprocfs_unregister_obd(osp->opd_obd);
- lprocfs_obd_cleanup(osp->opd_obd);
if (osp->opd_connect_mdt) {
struct client_obd *cli = &osp->opd_obd->u.cli;
void ptlrpc_lprocfs_unregister_obd(struct obd_device *obd)
{
+ /* cleanup first to allow concurrent access to device's
+ * stats via debugfs to complete safely
+ */
+ lprocfs_obd_cleanup(obd);
+
if (obd->obd_svc_procroot)
lprocfs_remove(&obd->obd_svc_procroot);