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
- tagging RC_CURRENT
[fs/lustre-release.git]
/
lustre
/
ptlrpc
/
lproc_ptlrpc.c
diff --git
a/lustre/ptlrpc/lproc_ptlrpc.c
b/lustre/ptlrpc/lproc_ptlrpc.c
index
c4c47d3
..
0075860
100644
(file)
--- a/
lustre/ptlrpc/lproc_ptlrpc.c
+++ b/
lustre/ptlrpc/lproc_ptlrpc.c
@@
-49,7
+49,7
@@
struct ll_rpc_opcode {
{ OST_STATFS, "ost_statfs" },
{ OST_SAN_READ, "ost_san_read" },
{ OST_SAN_WRITE, "ost_san_write" },
- { OST_SYNC
FS, "ost_syncfs
" },
+ { OST_SYNC
, "ost_sync
" },
{ OST_SET_INFO, "ost_set_info" },
{ MDS_GETATTR, "mds_getattr" },
{ MDS_GETATTR_NAME, "mds_getattr_name" },
@@
-60,14
+60,16
@@
struct ll_rpc_opcode {
{ MDS_DISCONNECT, "mds_disconnect" },
{ MDS_GETSTATUS, "mds_getstatus" },
{ MDS_STATFS, "mds_statfs" },
- { MDS_GETLOVINFO, "mds_getlovinfo" },
{ MDS_PIN, "mds_pin" },
{ MDS_UNPIN, "mds_unpin" },
+ { MDS_SYNC, "mds_sync" },
+ { MDS_DONE_WRITING, "mds_done_writing" },
{ LDLM_ENQUEUE, "ldlm_enqueue" },
{ LDLM_CONVERT, "ldlm_convert" },
{ LDLM_CANCEL, "ldlm_cancel" },
{ LDLM_BL_CALLBACK, "ldlm_bl_callback" },
{ LDLM_CP_CALLBACK, "ldlm_cp_callback" },
+ { LDLM_GL_CALLBACK, "ldlm_gl_callback" },
{ PTLBD_QUERY, "ptlbd_query" },
{ PTLBD_READ, "ptlbd_read" },
{ PTLBD_WRITE, "ptlbd_write" },
@@
-75,7
+77,7
@@
struct ll_rpc_opcode {
{ PTLBD_CONNECT, "ptlbd_connect" },
{ PTLBD_DISCONNECT, "ptlbd_disconnect" },
{ OBD_PING, "obd_ping" },
- { OBD_LOG_CANCEL, "
obd_log_cancel"
},
+ { OBD_LOG_CANCEL, "
llog_origin_handle_cancel"
},
};
const char* ll_opcode2str(__u32 opcode)
@@
-99,39
+101,39
@@
void ptlrpc_lprocfs_register_service(struct obd_device *obddev,
void ptlrpc_lprocfs_unregister_service(struct ptlrpc_service *svc) { return; }
#else
-void ptlrpc_lprocfs_register_service(struct obd_device *obddev,
- struct ptlrpc_service *svc)
+void ptlrpc_lprocfs_register(struct proc_dir_entry *root, char *dir,
+ char *name, struct proc_dir_entry **procroot_ret,
+ struct lprocfs_stats **stats_ret)
{
struct proc_dir_entry *svc_procroot;
struct lprocfs_stats *svc_stats;
int i, rc;
- unsigned int svc_counter_config = LPROCFS_CNTR_EXTERNALLOCK |
- LPROCFS_CNTR_AVGMINMAX | LPROCFS_CNTR_STDDEV;
-
- LASSERT(svc->svc_procroot == NULL);
- LASSERT(svc->svc_stats == NULL);
+ unsigned int svc_counter_config = LPROCFS_CNTR_AVGMINMAX |
+ LPROCFS_CNTR_STDDEV;
- svc_procroot = lprocfs_register(svc->srv_name, obddev->obd_proc_entry,
- NULL, NULL);
- if (svc_procroot == NULL)
- return;
+ LASSERT(*procroot_ret == NULL);
+ LASSERT(*stats_ret == NULL);
svc_stats = lprocfs_alloc_stats(PTLRPC_LAST_CNTR + LUSTRE_MAX_OPCODES);
- if (svc_stats == NULL) {
- lprocfs_remove(svc_procroot);
+ if (svc_stats == NULL)
return;
+
+ if (dir) {
+ svc_procroot = lprocfs_register(dir, root, NULL, NULL);
+ if (IS_ERR(svc_procroot)) {
+ lprocfs_free_stats(svc_stats);
+ return;
+ }
+ } else {
+ svc_procroot = root;
}
lprocfs_counter_init(svc_stats, PTLRPC_REQWAIT_CNTR,
svc_counter_config, "req_waittime", "usec");
- /* Wait for b_eq branch
- lprocfs_counter_init(svc_stats, PTLRPC_SVCEQDEPTH_CNTR,
- svc_counter_config, "svc_eqdepth", "reqs");
- */
- /* no stddev on idletime */
- lprocfs_counter_init(svc_stats, PTLRPC_SVCIDLETIME_CNTR,
- (LPROCFS_CNTR_EXTERNALLOCK|LPROCFS_CNTR_AVGMINMAX),
- "svc_idletime", "usec");
+ lprocfs_counter_init(svc_stats, PTLRPC_REQQDEPTH_CNTR,
+ svc_counter_config, "req_qdepth", "reqs");
+ lprocfs_counter_init(svc_stats, PTLRPC_REQACTIVE_CNTR,
+ svc_counter_config, "req_active", "reqs");
for (i = 0; i < LUSTRE_MAX_OPCODES; i++) {
__u32 opcode = ll_rpc_opcode_table[i].opcode;
lprocfs_counter_init(svc_stats, PTLRPC_LAST_CNTR + i,
@@
-139,25
+141,65
@@
void ptlrpc_lprocfs_register_service(struct obd_device *obddev,
"usec");
}
- rc = lprocfs_register_stats(svc_procroot,
"stats"
, svc_stats);
+ rc = lprocfs_register_stats(svc_procroot,
name
, svc_stats);
if (rc < 0) {
- lprocfs_remove(svc_procroot);
+ if (dir)
+ lprocfs_remove(svc_procroot);
lprocfs_free_stats(svc_stats);
} else {
- svc->svc_procroot = svc_procroot;
- svc->svc_stats = svc_stats;
+ if (dir)
+ *procroot_ret = svc_procroot;
+ *stats_ret = svc_stats;
}
}
+void ptlrpc_lprocfs_register_service(struct proc_dir_entry *entry,
+ struct ptlrpc_service *svc)
+{
+ ptlrpc_lprocfs_register(entry, svc->srv_name,
+ "stats", &svc->srv_procroot,
+ &svc->srv_stats);
+}
+
+void ptlrpc_lprocfs_register_obd(struct obd_device *obddev)
+{
+ ptlrpc_lprocfs_register(obddev->obd_proc_entry, NULL, "stats",
+ &obddev->obd_svc_procroot,
+ &obddev->obd_svc_stats);
+}
+
+void ptlrpc_lprocfs_rpc_sent(struct ptlrpc_request *req)
+{
+ struct lprocfs_stats *svc_stats;
+ int opc = opcode_offset(req->rq_reqmsg->opc);
+
+ svc_stats = req->rq_import->imp_obd->obd_svc_stats;
+ if (svc_stats == NULL || opc <= 0)
+ return;
+ LASSERT(opc < LUSTRE_MAX_OPCODES);
+ lprocfs_counter_add(svc_stats, opc + PTLRPC_LAST_CNTR, 0);
+}
+
void ptlrpc_lprocfs_unregister_service(struct ptlrpc_service *svc)
{
- if (svc->svc_procroot) {
- lprocfs_remove(svc->svc_procroot);
- svc->svc_procroot = NULL;
+ if (svc->srv_procroot != NULL) {
+ lprocfs_remove(svc->srv_procroot);
+ svc->srv_procroot = NULL;
+ }
+ if (svc->srv_stats) {
+ lprocfs_free_stats(svc->srv_stats);
+ svc->srv_stats = NULL;
+ }
+}
+void ptlrpc_lprocfs_unregister_obd(struct obd_device *obd)
+{
+ if (obd->obd_svc_procroot) {
+ lprocfs_remove(obd->obd_svc_procroot);
+ obd->obd_svc_procroot = NULL;
}
- if (
svc->
svc_stats) {
- lprocfs_free_stats(
svc->
svc_stats);
-
svc->
svc_stats = NULL;
+ if (
obd->obd_
svc_stats) {
+ lprocfs_free_stats(
obd->obd_
svc_stats);
+
obd->obd_
svc_stats = NULL;
}
}
#endif /* LPROCFS */