struct lprocfs_stats **stats_ret)
{
struct dentry *svc_debugfs_entry;
- struct lprocfs_stats *svc_stats;
- int i, rc;
- unsigned int svc_counter_config = LPROCFS_CNTR_AVGMINMAX |
- LPROCFS_CNTR_STDDEV;
+ struct lprocfs_stats *svc_stats;
+ int i;
+ unsigned int svc_counter_config = LPROCFS_CNTR_AVGMINMAX |
+ LPROCFS_CNTR_STDDEV;
LASSERT(!*debugfs_root_ret);
LASSERT(!*stats_ret);
if (!svc_stats)
return;
- if (dir) {
- svc_debugfs_entry = ldebugfs_register(dir, root, NULL, NULL);
- if (IS_ERR(svc_debugfs_entry)) {
- lprocfs_free_stats(&svc_stats);
- return;
- }
- } else {
+ if (dir)
+ svc_debugfs_entry = debugfs_create_dir(dir, root);
+ else
svc_debugfs_entry = root;
- }
lprocfs_counter_init(svc_stats, PTLRPC_REQWAIT_CNTR,
svc_counter_config, "req_waittime", "usec");
ll_opcode2str(opcode), "usec");
}
- rc = ldebugfs_register_stats(svc_debugfs_entry, name, svc_stats);
- if (rc < 0) {
- if (dir)
- debugfs_remove_recursive(svc_debugfs_entry);
- lprocfs_free_stats(&svc_stats);
- } else {
- if (dir)
- *debugfs_root_ret = svc_debugfs_entry;
- *stats_ret = svc_stats;
- }
+ debugfs_create_file(name, 0644, svc_debugfs_entry, svc_stats,
+ &lprocfs_stats_seq_fops);
+
+ if (dir)
+ *debugfs_root_ret = svc_debugfs_entry;
+ *stats_ret = svc_stats;
}
static int
num_pols = svc->srv_parts[0]->scp_nrs_reg.nrs_num_pols;
spin_unlock(&nrs->nrs_lock);
- OBD_ALLOC(infos, num_pols * sizeof(*infos));
+ OBD_ALLOC_PTR_ARRAY(infos, num_pols);
if (infos == NULL)
GOTO(out, rc = -ENOMEM);
again:
out:
if (infos)
- OBD_FREE(infos, num_pols * sizeof(*infos));
+ OBD_FREE_PTR_ARRAY(infos, num_pols);
mutex_unlock(&nrs_core.nrs_mutex);
struct seq_file *seqf;
int rc;
- rc = LPROCFS_ENTRY_CHECK(inode);
- if (rc < 0)
- return rc;
-
rc = seq_open(file, &sops);
if (rc)
return rc;
/* See also lprocfs_rd_timeouts */
static int ptlrpc_lprocfs_timeouts_seq_show(struct seq_file *m, void *n)
{
- struct ptlrpc_service *svc = m->private;
- struct ptlrpc_service_part *svcpt;
- time64_t worstt;
- unsigned int cur;
- unsigned int worst;
- int i;
+ struct ptlrpc_service *svc = m->private;
+ struct ptlrpc_service_part *svcpt;
+ time64_t worst_timestamp;
+ timeout_t cur_timeout;
+ timeout_t worst_timeout;
+ int i;
if (AT_OFF) {
seq_printf(m, "adaptive timeouts off, using obd_timeout %u\n",
}
ptlrpc_service_for_each_part(svcpt, i, svc) {
- cur = at_get(&svcpt->scp_at_estimate);
- worst = svcpt->scp_at_estimate.at_worst_ever;
- worstt = svcpt->scp_at_estimate.at_worst_time;
+ cur_timeout = at_get(&svcpt->scp_at_estimate);
+ worst_timeout = svcpt->scp_at_estimate.at_worst_timeout_ever;
+ worst_timestamp = svcpt->scp_at_estimate.at_worst_timestamp;
seq_printf(m, "%10s : cur %3u worst %3u (at %lld, %llds ago) ",
- "service", cur, worst, (s64)worstt,
- (s64)(ktime_get_real_seconds() - worstt));
+ "service", cur_timeout, worst_timeout,
+ worst_timestamp,
+ ktime_get_real_seconds() - worst_timestamp);
lprocfs_at_hist_helper(m, &svcpt->scp_at_estimate);
}
.release = lprocfs_seq_release,
};
- int rc;
-
ptlrpc_ldebugfs_register(entry, svc->srv_name, "stats",
&svc->srv_debugfs_entry, &svc->srv_stats);
if (!svc->srv_debugfs_entry)
ldebugfs_add_vars(svc->srv_debugfs_entry, lproc_vars, NULL);
- rc = ldebugfs_seq_create(svc->srv_debugfs_entry, "req_history",
- 0400, &req_history_fops, svc);
- if (rc)
- CWARN("Error adding the req_history file\n");
+ debugfs_create_file("req_history", 0400, svc->srv_debugfs_entry, svc,
+ &req_history_fops);
}
-void ptlrpc_lprocfs_register_obd(struct obd_device *obddev)
+void ptlrpc_lprocfs_register_obd(struct obd_device *obd)
{
- ptlrpc_ldebugfs_register(obddev->obd_debugfs_entry, NULL, "stats",
- &obddev->obd_svc_debugfs_entry,
- &obddev->obd_svc_stats);
+ ptlrpc_ldebugfs_register(obd->obd_debugfs_entry, NULL, "stats",
+ &obd->obd_svc_debugfs_entry,
+ &obd->obd_svc_stats);
}
EXPORT_SYMBOL(ptlrpc_lprocfs_register_obd);
ssize_t ping_store(struct kobject *kobj, struct attribute *attr,
const char *buffer, size_t count)
{
- return ping_show(kobj, attr, (char *)buffer);
+ int rc = ping_show(kobj, attr, (char *)buffer);
+
+ return (rc < 0) ? rc : count;
}
EXPORT_SYMBOL(ping_store);