#define CLASS_MAX_NAME 1024
int class_register_type(struct obd_ops *dt_ops, struct md_ops *md_ops,
- struct lprocfs_vars *vars, const char *name,
- struct lu_device_type *ldt)
+ struct lprocfs_seq_vars *module_vars,
+#ifndef HAVE_ONLY_PROCFS_SEQ
+ struct lprocfs_vars *vars,
+#endif
+ const char *name, struct lu_device_type *ldt)
{
struct obd_type *type;
int rc = 0;
spin_lock_init(&type->obd_type_lock);
#ifdef LPROCFS
- type->typ_procroot = lprocfs_register(type->typ_name, proc_lustre_root,
- vars, type);
- if (IS_ERR(type->typ_procroot)) {
- rc = PTR_ERR(type->typ_procroot);
- type->typ_procroot = NULL;
- GOTO (failed, rc);
- }
+#ifndef HAVE_ONLY_PROCFS_SEQ
+ if (vars) {
+ type->typ_procroot = lprocfs_register(type->typ_name,
+ proc_lustre_root,
+ vars, type);
+ } else
+#endif
+ {
+ type->typ_procroot = lprocfs_seq_register(type->typ_name,
+ proc_lustre_root,
+ module_vars, type);
+ }
+ if (IS_ERR(type->typ_procroot)) {
+ rc = PTR_ERR(type->typ_procroot);
+ type->typ_procroot = NULL;
+ GOTO (failed, rc);
+ }
#endif
if (ldt != NULL) {
type->typ_lu = ldt;
OBD_FREE_PTR(type->typ_md_ops);
if (type->typ_dt_ops != NULL)
OBD_FREE_PTR(type->typ_dt_ops);
+#ifdef LPROCFS
+#ifndef HAVE_ONLY_PROCFS_SEQ
+ lprocfs_try_remove_proc_entry(type->typ_name, proc_lustre_root);
+#else
+ remove_proc_subtree(type->typ_name, proc_lustre_root);
+#endif
+#endif
OBD_FREE(type, sizeof(*type));
RETURN(rc);
}
* other modules can share names (i.e. lod can use lov entry). so
* we can't reference pointer as it can get invalided when another
* module removes the entry */
+#ifdef LPROCFS
+#ifndef HAVE_ONLY_PROCFS_SEQ
lprocfs_try_remove_proc_entry(type->typ_name, proc_lustre_root);
-
+#else
+ remove_proc_subtree(type->typ_name, proc_lustre_root);
+#endif
+#endif
if (type->typ_lu)
lu_device_type_fini(type->typ_lu);