Whamcloud - gitweb
Revert "LU-3319 procfs: move osp proc handling to seq_files"
[fs/lustre-release.git] / lustre / osp / osp_dev.c
index e41133f..d246678 100644 (file)
@@ -371,7 +371,7 @@ static int osp_process_config(const struct lu_env *env,
                              struct lu_device *dev, struct lustre_cfg *lcfg)
 {
        struct osp_device               *d = lu2osp_dev(dev);
-       struct obd_device               *obd = d->opd_obd;
+       struct lprocfs_static_vars       lvars = { 0 };
        int                              rc;
 
        ENTRY;
@@ -385,9 +385,11 @@ static int osp_process_config(const struct lu_env *env,
                rc = osp_shutdown(env, d);
                break;
        case LCFG_PARAM:
-               LASSERT(obd);
-               rc = class_process_proc_seq_param(PARAM_OSC, obd->obd_vars,
-                                                 lcfg, obd);
+               lprocfs_osp_init_vars(&lvars);
+
+               LASSERT(d->opd_obd);
+               rc = class_process_proc_param(PARAM_OSC, lvars.obd_vars,
+                                             lcfg, d->opd_obd);
                if (rc > 0)
                        rc = 0;
                if (rc == -ENOSYS) {
@@ -840,9 +842,6 @@ static struct lu_device *osp_device_fini(const struct lu_env *env,
                        OBD_FREE_PTR(cli->cl_rpc_lock);
                        cli->cl_rpc_lock = NULL;
                }
-       } else {
-               if (m->opd_obd->obd_proc_private != NULL)
-                       lprocfs_remove((struct proc_dir_entry **)&m->opd_obd->obd_proc_private);
        }
 
        rc = client_obd_cleanup(m->opd_obd);
@@ -1236,25 +1235,33 @@ struct llog_operations osp_mds_ost_orig_logops;
 
 static int __init osp_mod_init(void)
 {
-       int rc;
+       struct lprocfs_static_vars       lvars;
+       cfs_proc_dir_entry_t            *osc_proc_dir;
+       int                              rc;
 
        rc = lu_kmem_init(osp_caches);
        if (rc)
                return rc;
 
+       lprocfs_osp_init_vars(&lvars);
+
        rc = class_register_type(&osp_obd_device_ops, NULL, NULL,
 #ifndef HAVE_ONLY_PROCFS_SEQ
-                               NULL,
+                               lvars.module_vars,
 #endif
                                LUSTRE_OSP_NAME, &osp_device_type);
+
+       /* create "osc" entry in procfs for compatibility purposes */
        if (rc != 0) {
                lu_kmem_fini(osp_caches);
                return rc;
        }
 
+       lprocfs_lwp_init_vars(&lvars);
+
        rc = class_register_type(&lwp_obd_device_ops, NULL, NULL,
 #ifndef HAVE_ONLY_PROCFS_SEQ
-                               NULL,
+                               lvars.module_vars,
 #endif
                                LUSTRE_LWP_NAME, &lwp_device_type);
        if (rc != 0) {
@@ -1267,11 +1274,22 @@ static int __init osp_mod_init(void)
        osp_mds_ost_orig_logops = llog_osd_ops;
        osp_mds_ost_orig_logops.lop_add = llog_cat_add_rec;
        osp_mds_ost_orig_logops.lop_declare_add = llog_cat_declare_add_rec;
+
+       osc_proc_dir = lprocfs_srch(proc_lustre_root, "osc");
+       if (osc_proc_dir == NULL) {
+               osc_proc_dir = lprocfs_register("osc", proc_lustre_root, NULL,
+                                               NULL);
+               if (IS_ERR(osc_proc_dir))
+                       CERROR("osp: can't create compat entry \"osc\": %d\n",
+                              (int) PTR_ERR(osc_proc_dir));
+       }
        return rc;
 }
 
 static void __exit osp_mod_exit(void)
 {
+       lprocfs_try_remove_proc_entry("osc", proc_lustre_root);
+
        class_unregister_type(LUSTRE_LWP_NAME);
        class_unregister_type(LUSTRE_OSP_NAME);
        lu_kmem_fini(osp_caches);