@@ -50,8 +50,7 @@ static ssize_t active_show(struct kobject *kobj, struct attribute *attr,
}
static ssize_t active_store(struct kobject *kobj, struct attribute *attr,
- const char *buffer,
- size_t count)
+ const char *buffer, size_t count)
{
struct obd_device *dev = container_of(kobj, struct obd_device,
obd_kset.kobj);
@@ -157,8 +156,8 @@ static ssize_t max_dirty_mb_store(struct kobject *kobj,
struct obd_device *dev = container_of(kobj, struct obd_device,
obd_kset.kobj);
struct client_obd *cli = &dev->u.cli;
- int rc;
unsigned long pages_number;
+ int rc;
rc = kstrtoul(buffer, 10, &pages_number);
if (rc)
@@ -180,6 +179,9 @@ static ssize_t max_dirty_mb_store(struct kobject *kobj,
}
LUSTRE_RW_ATTR(max_dirty_mb);
+#define ost_conn_uuid_show conn_uuid_show
+LUSTRE_RO_ATTR(ost_conn_uuid);
+
static int osc_cached_mb_seq_show(struct seq_file *m, void *v)
{
struct obd_device *dev = m->private;
@@ -407,9 +409,8 @@ static ssize_t checksums_store(struct kobject *kobj,
static int osc_checksum_type_seq_show(struct seq_file *m, void *v)
{
struct obd_device *obd = m->private;
- int i;
-
DECLARE_CKSUM_NAME;
+ int i;
if (!obd)
return 0;
@@ -431,10 +432,9 @@ static ssize_t osc_checksum_type_seq_write(struct file *file,
size_t count, loff_t *off)
{
struct obd_device *obd = ((struct seq_file *)file->private_data)->private;
- int i;
-
DECLARE_CKSUM_NAME;
char kernbuf[10];
+ int i;
if (!obd)
return 0;
@@ -665,7 +665,6 @@ static int osc_unstable_stats_seq_show(struct seq_file *m, void *v)
LPROC_SEQ_FOPS_RO_TYPE(osc, connect_flags);
LPROC_SEQ_FOPS_RO_TYPE(osc, server_uuid);
-LPROC_SEQ_FOPS_RO_TYPE(osc, conn_uuid);
LPROC_SEQ_FOPS_RO_TYPE(osc, timeouts);
LPROC_SEQ_FOPS_RO_TYPE(osc, state);
@@ -675,17 +674,24 @@ static int osc_unstable_stats_seq_show(struct seq_file *m, void *v)
LPROC_SEQ_FOPS_RW_TYPE(osc, pinger_recov);
static struct lprocfs_vars lprocfs_osc_obd_vars[] = {
- { "ping", &osc_ping_fops, NULL, 0222 },
- { "connect_flags", &osc_connect_flags_fops, NULL, 0 },
- /*{ "filegroups", lprocfs_rd_filegroups, NULL, 0 },*/
- { "ost_server_uuid", &osc_server_uuid_fops, NULL, 0 },
- { "ost_conn_uuid", &osc_conn_uuid_fops, NULL, 0 },
- { "osc_cached_mb", &osc_cached_mb_fops, NULL },
- { "checksum_type", &osc_checksum_type_fops, NULL },
- { "timeouts", &osc_timeouts_fops, NULL, 0 },
- { "import", &osc_import_fops, NULL },
- { "state", &osc_state_fops, NULL, 0 },
- { "pinger_recov", &osc_pinger_recov_fops, NULL },
+ { .name = "ping",
+ .fops = &osc_ping_fops },
+ { .name = "connect_flags",
+ .fops = &osc_connect_flags_fops },
+ { .name = "ost_server_uuid",
+ .fops = &osc_server_uuid_fops },
+ { .name = "osc_cached_mb",
+ .fops = &osc_cached_mb_fops },
+ { .name = "checksum_type",
+ .fops = &osc_checksum_type_fops },
+ { .name = "timeouts",
+ .fops = &osc_timeouts_fops },
+ { .name = "import",
+ .fops = &osc_import_fops },
+ { .name = "state",
+ .fops = &osc_state_fops },
+ { .name = "pinger_recov",
+ .fops = &osc_pinger_recov_fops },
{ .name = "unstable_stats",
.fops = &osc_unstable_stats_fops },
{ NULL }
@@ -871,11 +877,31 @@ void lproc_osc_attach_seqstat(struct obd_device *dev)
&lustre_attr_max_pages_per_rpc.attr,
&lustre_attr_max_rpcs_in_flight.attr,
&lustre_attr_resend_count.attr,
+ &lustre_attr_ost_conn_uuid.attr,
NULL,
};
-void lprocfs_osc_init_vars(struct obd_device *obd)
+int osc_tunables_init(struct obd_device *obd)
{
- obd->obd_ktype.default_attrs = osc_attrs;
+ int rc;
+
obd->obd_vars = lprocfs_osc_obd_vars;
+ obd->obd_ktype.default_attrs = osc_attrs;
+ rc = lprocfs_obd_setup(obd, false);
+ if (rc)
+ return rc;
+
+ rc = sptlrpc_lprocfs_cliobd_attach(obd);
+ if (rc) {
+ lprocfs_obd_cleanup(obd);
+ return rc;
+ }
+
+ debugfs_create_file("osc_stats", 0644, obd->obd_debugfs_entry, obd,
+ &osc_stats_fops);
+ debugfs_create_file("rpc_stats", 0644, obd->obd_debugfs_entry, obd,
+ &osc_rpc_stats_fops);
+
+ ptlrpc_lprocfs_register_obd(obd);
+ return 0;
}
@@ -145,8 +145,7 @@ long osc_lru_shrink(const struct lu_env *env, struct client_obd *cli,
int osc_setup(struct obd_device *obd, struct lustre_cfg *lcfg);
-void lproc_osc_attach_seqstat(struct obd_device *dev);
-void lprocfs_osc_init_vars(struct obd_device *obd);
+int osc_tunables_init(struct obd_device *obd);
extern struct lu_device_type osc_device_type;
@@ -2885,12 +2885,9 @@ int osc_setup(struct obd_device *obd, struct lustre_cfg *lcfg)
cli->cl_grant_shrink_interval = GRANT_SHRINK_INTERVAL;
- lprocfs_osc_init_vars(obd);
- if (lprocfs_obd_setup(obd, false) == 0) {
- lproc_osc_attach_seqstat(obd);
- sptlrpc_lprocfs_cliobd_attach(obd);
- ptlrpc_lprocfs_register_obd(obd);
- }
+ rc = osc_tunables_init(obd);
+ if (rc)
+ goto out_quota;
/*
* We try to control the total number of requests with a upper limit
@@ -2916,6 +2913,8 @@ int osc_setup(struct obd_device *obd, struct lustre_cfg *lcfg)
return rc;
+out_quota:
+ osc_quota_cleanup(obd);
out_ptlrpcd_work:
if (cli->cl_writeback_work) {
ptlrpcd_destroy_work(cli->cl_writeback_work);
@@ -2993,18 +2992,9 @@ static int osc_cleanup(struct obd_device *obd)
int osc_process_config_base(struct obd_device *obd, struct lustre_cfg *lcfg)
{
- int rc = 0;
-
- switch (lcfg->lcfg_command) {
- default:
- rc = class_process_proc_param(PARAM_OSC, obd->obd_vars,
- lcfg, obd);
- if (rc > 0)
- rc = 0;
- break;
- }
-
- return rc;
+ ssize_t count = class_modify_config(lcfg, PARAM_OSC,
+ &obd->obd_kset.kobj);
+ return count > 0 ? 0 : count;
}
static int osc_process_config(struct obd_device *obd, u32 len, void *buf)