Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
LU-7733 ptlrpc: print times in microseconds
[fs/lustre-release.git]
/
lustre
/
ptlrpc
/
lproc_ptlrpc.c
diff --git
a/lustre/ptlrpc/lproc_ptlrpc.c
b/lustre/ptlrpc/lproc_ptlrpc.c
index
3cb05f5
..
82fe468
100644
(file)
--- a/
lustre/ptlrpc/lproc_ptlrpc.c
+++ b/
lustre/ptlrpc/lproc_ptlrpc.c
@@
-70,6
+70,7
@@
static struct ll_rpc_opcode {
{ OST_QUOTACHECK, "ost_quotacheck" },
{ OST_QUOTACTL, "ost_quotactl" },
{ OST_QUOTA_ADJUST_QUNIT, "ost_quota_adjust_qunit" },
+ { OST_LADVISE, "ost_ladvise" },
{ MDS_GETATTR, "mds_getattr" },
{ MDS_GETATTR_NAME, "mds_getattr_lock" },
{ MDS_CLOSE, "mds_close" },
@@
-77,7
+78,7
@@
static struct ll_rpc_opcode {
{ MDS_READPAGE, "mds_readpage" },
{ MDS_CONNECT, "mds_connect" },
{ MDS_DISCONNECT, "mds_disconnect" },
-
{ MDS_GETSTATUS, "mds_getstatus
" },
+
{ MDS_GET_ROOT, "mds_get_root
" },
{ MDS_STATFS, "mds_statfs" },
{ MDS_PIN, "mds_pin" },
{ MDS_UNPIN, "mds_unpin" },
@@
-293,33
+294,34
@@
ptlrpc_lprocfs_req_history_max_seq_write(struct file *file,
const char __user *buffer,
size_t count, loff_t *off)
{
- struct seq_file
*m = file->private_data;
- struct ptlrpc_service
*svc = m->private;
- int
bufpages;
-
int
val;
- int
rc;
+ struct seq_file *m = file->private_data;
+ struct ptlrpc_service *svc = m->private;
+ int bufpages;
+
__s64
val;
+ int rc;
- rc = lprocfs_
write_helper
(buffer, count, &val);
-
if (rc < 0)
-
return rc;
+ rc = lprocfs_
str_to_s64
(buffer, count, &val);
+ if (rc < 0)
+ return rc;
-
if (val < 0
)
-
return -ERANGE;
+
if (val < 0 || val > INT_MAX
)
+ return -ERANGE;
-
/* This sanity check is more of an insanity check; we can still
-
* hose a kernel by allowing the request history to grow too
-
* far. */
+ /* This sanity check is more of an insanity check; we can still
+ * hose a kernel by allowing the request history to grow too
+ * far. */
bufpages = (svc->srv_buf_size + PAGE_CACHE_SIZE - 1) >>
PAGE_CACHE_SHIFT;
if (val > totalram_pages/(2 * bufpages))
-
return -ERANGE;
+ return -ERANGE;
spin_lock(&svc->srv_lock);
if (val == 0)
svc->srv_hist_nrqbds_cpt_max = 0;
else
- svc->srv_hist_nrqbds_cpt_max = max(1, (val / svc->srv_ncpts));
+ svc->srv_hist_nrqbds_cpt_max =
+ max(1, ((int)val / svc->srv_ncpts));
spin_unlock(&svc->srv_lock);
@@
-342,10
+344,10
@@
ptlrpc_lprocfs_threads_min_seq_write(struct file *file,
const char __user *buffer,
size_t count, loff_t *off)
{
- struct seq_file
*m = file->private_data;
- struct ptlrpc_service
*svc = m->private;
-
int
val;
- int
rc = lprocfs_write_helper
(buffer, count, &val);
+ struct seq_file *m = file->private_data;
+ struct ptlrpc_service *svc = m->private;
+
__s64
val;
+ int
rc = lprocfs_str_to_s64
(buffer, count, &val);
if (rc < 0)
return rc;
@@
-359,7
+361,7
@@
ptlrpc_lprocfs_threads_min_seq_write(struct file *file,
return -ERANGE;
}
- svc->srv_nthrs_cpt_init = val / svc->srv_ncpts;
+ svc->srv_nthrs_cpt_init =
(int)
val / svc->srv_ncpts;
spin_unlock(&svc->srv_lock);
@@
-398,10
+400,10
@@
ptlrpc_lprocfs_threads_max_seq_write(struct file *file,
const char __user *buffer,
size_t count, loff_t *off)
{
- struct seq_file
*m = file->private_data;
- struct ptlrpc_service
*svc = m->private;
-
int
val;
- int
rc = lprocfs_write_helper
(buffer, count, &val);
+ struct seq_file *m = file->private_data;
+ struct ptlrpc_service *svc = m->private;
+
__s64
val;
+ int
rc = lprocfs_str_to_s64
(buffer, count, &val);
if (rc < 0)
return rc;
@@
-415,7
+417,7
@@
ptlrpc_lprocfs_threads_max_seq_write(struct file *file,
return -ERANGE;
}
- svc->srv_nthrs_cpt_limit = val / svc->srv_ncpts;
+ svc->srv_nthrs_cpt_limit =
(int)
val / svc->srv_ncpts;
spin_unlock(&svc->srv_lock);
@@
-962,23
+964,34
@@
static int ptlrpc_lprocfs_svc_req_history_show(struct seq_file *s, void *iter)
rc = ptlrpc_lprocfs_svc_req_history_seek(svcpt, srhi, srhi->srhi_seq);
if (rc == 0) {
+ struct timespec arrival, sent, arrivaldiff;
char nidstr[LNET_NIDSTR_SIZE];
req = srhi->srhi_req;
libcfs_nid2str_r(req->rq_self, nidstr, sizeof(nidstr));
+ arrival.tv_sec = req->rq_arrival_time.tv_sec;
+ arrival.tv_nsec =
+ req->rq_arrival_time.tv_usec * NSEC_PER_USEC;
+ sent.tv_sec = req->rq_sent;
+ sent.tv_nsec = 0;
+ arrivaldiff = timespec_sub(sent, arrival);
+
/* Print common req fields.
* CAVEAT EMPTOR: we're racing with the service handler
* here. The request could contain any old crap, so you
* must be just as careful as the service's request
* parser. Currently I only print stuff here I know is OK
* to look at coz it was set up in request_in_callback()!!! */
- seq_printf(s, LPD64":%s:%s:x"LPU64":%d:%s:%ld:%lds(%+lds) ",
+ seq_printf(s, LPD64":%s:%s:x"LPU64":%d:%s:"
+ "%ld.%06ld:%ld.%06lds(%+ld.0s) ",
req->rq_history_seq, nidstr,
libcfs_id2str(req->rq_peer), req->rq_xid,
req->rq_reqlen, ptlrpc_rqphase2str(req),
req->rq_arrival_time.tv_sec,
- req->rq_sent - req->rq_arrival_time.tv_sec,
+ req->rq_arrival_time.tv_usec,
+ arrivaldiff.tv_sec,
+ arrivaldiff.tv_nsec / NSEC_PER_USEC,
req->rq_sent - req->rq_deadline);
if (svc->srv_ops.so_req_printer == NULL)
seq_printf(s, "\n");
@@
-1060,16
+1073,16
@@
static ssize_t
ptlrpc_lprocfs_hp_ratio_seq_write(struct file *file, const char __user *buffer,
size_t count, loff_t *off)
{
- struct seq_file
*m = file->private_data;
- struct ptlrpc_service
*svc = m->private;
- int
rc;
-
int
val;
+ struct seq_file *m = file->private_data;
+ struct ptlrpc_service *svc = m->private;
+ int rc;
+
__s64
val;
- rc = lprocfs_
write_helper
(buffer, count, &val);
+ rc = lprocfs_
str_to_s64
(buffer, count, &val);
if (rc < 0)
return rc;
- if (val < 0)
+ if (val < 0
|| val > INT_MAX
)
return -ERANGE;
spin_lock(&svc->srv_lock);
@@
-1314,13
+1327,14
@@
ssize_t
lprocfs_pinger_recov_seq_write(struct file *file, const char __user *buffer,
size_t count, loff_t *off)
{
- struct seq_file *m = file->private_data;
- struct obd_device *obd = m->private;
- struct client_obd *cli = &obd->u.cli;
- struct obd_import *imp = cli->cl_import;
- int rc, val;
+ struct seq_file *m = file->private_data;
+ struct obd_device *obd = m->private;
+ struct client_obd *cli = &obd->u.cli;
+ struct obd_import *imp = cli->cl_import;
+ int rc;
+ __s64 val;
- rc = lprocfs_
write_helper
(buffer, count, &val);
+ rc = lprocfs_
str_to_s64
(buffer, count, &val);
if (rc < 0)
return rc;