+static struct attribute *osp_obd_attrs[] = {
+ /* First two for compatiability reasons */
+ &lustre_attr_lfsck_max_rpcs_in_flight.attr,
+ &lustre_attr_destroys_in_flight.attr,
+ &lustre_attr_active.attr,
+ &lustre_attr_max_rpcs_in_flight.attr,
+ &lustre_attr_max_rpcs_in_progress.attr,
+ &lustre_attr_maxage.attr,
+ &lustre_attr_ost_conn_uuid.attr,
+ &lustre_attr_ping.attr,
+ &lustre_attr_prealloc_status.attr,
+ &lustre_attr_prealloc_next_id.attr,
+ &lustre_attr_prealloc_last_id.attr,
+ &lustre_attr_prealloc_next_seq.attr,
+ &lustre_attr_prealloc_last_seq.attr,
+ &lustre_attr_prealloc_reserved.attr,
+ &lustre_attr_sync_in_flight.attr,
+ &lustre_attr_sync_in_progress.attr,
+ &lustre_attr_sync_changes.attr,
+ &lustre_attr_force_sync.attr,
+ &lustre_attr_old_sync_processed.attr,
+ &lustre_attr_create_count.attr,
+ &lustre_attr_max_create_count.attr,
+ NULL,
+};
+
+static struct attribute *osp_md_attrs[] = {
+ /* First two for compatiability reasons */
+ &lustre_attr_lfsck_max_rpcs_in_flight.attr,
+ &lustre_attr_destroys_in_flight.attr,
+ &lustre_attr_active.attr,
+ &lustre_attr_max_rpcs_in_flight.attr,
+ &lustre_attr_max_rpcs_in_progress.attr,
+ &lustre_attr_maxage.attr,
+ &lustre_attr_mdt_conn_uuid.attr,
+ &lustre_attr_ping.attr,
+ &lustre_attr_prealloc_status.attr,
+ NULL,
+};
+
+void osp_tunables_fini(struct osp_device *osp)
+{
+ struct obd_device *obd = osp->opd_obd;
+ struct kobject *osc;
+
+ osc = kset_find_obj(lustre_kset, "osc");
+ if (osc) {
+ sysfs_remove_link(osc, obd->obd_name);
+ kobject_put(osc);
+ }
+
+ if (!IS_ERR_OR_NULL(osp->opd_debugfs))
+ ldebugfs_remove(&osp->opd_debugfs);
+
+ ptlrpc_lprocfs_unregister_obd(obd);
+
+ if (!IS_ERR_OR_NULL(obd->obd_debugfs_entry))
+ ldebugfs_remove(&obd->obd_debugfs_entry);
+
+ dt_tunables_fini(&osp->opd_dt_dev);
+}
+