X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fptlrpc%2Flproc_ptlrpc.c;h=ee5e8c33617d5b157a028acad1511a36a757dfe0;hb=ea5df4799a3c6ca7f386303694d4440997d82d43;hp=33824a76af40b17607cbea2e57f0410d2fbedf5b;hpb=f4ce6b568b523060e71b17cf679c2b99d0038dbc;p=fs%2Flustre-release.git diff --git a/lustre/ptlrpc/lproc_ptlrpc.c b/lustre/ptlrpc/lproc_ptlrpc.c index 33824a7..ee5e8c3 100644 --- a/lustre/ptlrpc/lproc_ptlrpc.c +++ b/lustre/ptlrpc/lproc_ptlrpc.c @@ -202,10 +202,10 @@ ptlrpc_ldebugfs_register(struct dentry *root, char *dir, char *name, 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); @@ -215,15 +215,10 @@ ptlrpc_ldebugfs_register(struct dentry *root, char *dir, char *name, 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"); @@ -258,16 +253,12 @@ ptlrpc_ldebugfs_register(struct dentry *root, char *dir, char *name, 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 @@ -568,7 +559,7 @@ static int ptlrpc_lprocfs_nrs_seq_show(struct seq_file *m, void *n) 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: @@ -690,7 +681,7 @@ again: out: if (infos) - OBD_FREE(infos, num_pols * sizeof(*infos)); + OBD_FREE_PTR_ARRAY(infos, num_pols); mutex_unlock(&nrs_core.nrs_mutex); @@ -1081,10 +1072,6 @@ ptlrpc_lprocfs_svc_req_history_open(struct inode *inode, struct file *file) 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; @@ -1097,12 +1084,12 @@ ptlrpc_lprocfs_svc_req_history_open(struct inode *inode, struct file *file) /* 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", @@ -1111,13 +1098,14 @@ static int ptlrpc_lprocfs_timeouts_seq_show(struct seq_file *m, void *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); } @@ -1228,8 +1216,6 @@ void ptlrpc_ldebugfs_register_service(struct dentry *entry, .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) @@ -1237,17 +1223,15 @@ void ptlrpc_ldebugfs_register_service(struct dentry *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); @@ -1346,7 +1330,9 @@ EXPORT_SYMBOL(ping_show); 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);