Whamcloud - gitweb
LU-12461 contrib: Add epython scripts for crash dump analysis
[fs/lustre-release.git] / contrib / debug_tools / epython_scripts / rpc_opcode.py
1 #!/usr/bin/env python
2
3 """
4 Copyright 2019 Cray Inc.  All Rights Reserved
5 Utility to maps numeric opcode to string identifier
6 """
7
8 from pykdump.API import *
9 import argparse
10
11 description_short = "Maps Lustre rpc opcodes string identifiers."
12
13 opcodes = {
14     0:  'OST_REPLY',
15     1:  'OST_GETATTR',
16     2:  'OST_SETATTR',
17     3:  'OST_READ',
18     4:  'OST_WRITE',
19     5:  'OST_CREATE',
20     6:  'OST_DESTROY',
21     7:  'OST_GET_INFO',
22     8:  'OST_CONNECT',
23     9:  'OST_DISCONNECT',
24     10: 'OST_PUNCH',
25     11: 'OST_OPEN',
26     12: 'OST_CLOSE',
27     13: 'OST_STATFS',
28     16: 'OST_SYNC',
29     17: 'OST_SET_INFO',
30     18: 'OST_QUOTACHECK',
31     19: 'OST_QUOTACTL',
32     20: 'OST_QUOTA_ADJUST_QUNIT',  # not used since 2.4
33     21: 'OST_LADVISE',
34
35     33: 'MDS_GETATTR',
36     34: 'MDS_GETATTR_NAME',
37     35: 'MDS_CLOSE',
38     36: 'MDS_REINT',
39     37: 'MDS_READPAGE',
40     38: 'MDS_CONNECT',
41     39: 'MDS_DISCONNECT',
42     40: 'MDS_GET_ROOT',
43     41: 'MDS_STATFS',
44     42: 'MDS_PIN',
45     43: 'MDS_UNPIN',          # obsolete, never used in a release
46     44: 'MDS_SYNC',
47     45: 'MDS_DONE_WRITING',
48     46: 'MDS_SET_INFO',
49     47: 'MDS_QUOTACHECK',     # not used since 2.4
50     48: 'MDS_QUOTACTL',
51     49: 'MDS_GETXATTR',
52     50: 'MDS_SETXATTR',       # obsolete, now it's MDS_REINT op
53     51: 'MDS_WRITEPAGE',
54     52: 'MDS_IS_SUBDIR',      # obsolete, never used in a release
55     53: 'MDS_GET_INFO',
56     54: 'MDS_HSM_STATE_GET',
57     55: 'MDS_HSM_STATE_SET',
58     56: 'MDS_HSM_ACTION',
59     57: 'MDS_HSM_PROGRESS',
60     58: 'MDS_HSM_REQUEST',
61     59: 'MDS_HSM_CT_REGISTER',
62     60: 'MDS_HSM_CT_UNREGISTER',
63     61: 'MDS_SWAP_LAYOUTS',
64
65     101: 'LDLM_ENQUEUE',
66     102: 'LDLM_CONVERT',
67     103: 'LDLM_CANCEL',
68     104: 'LDLM_BL_CALLBACK',
69     105: 'LDLM_CP_CALLBACK',
70     106: 'LDLM_GL_CALLBACK',
71     107: 'LDLM_SET_INFO',
72
73     250: 'MGS_CONNECT',
74     251: 'MGS_DISCONNECT',
75     252: 'MGS_EXCEPTION',           # node died, etc.
76     253: 'MGS_TARGET_REG',          # whenever target starts up
77     254: 'MGS_TARGET_DEL',
78     255: 'MGS_SET_INFO',
79     256: 'MGS_CONFIG_READ',
80
81     400: 'OBD_PING',
82     401: 'OBD_LOG_CANCEL',          # obsolete since 1.5
83     402: 'OBD_QC_CALLBACK',         # obsolete since 2.4
84     403: 'OBD_IDX_READ',
85
86     501: 'LLOG_ORIGIN_HANDLE_CREATE',
87     502: 'LLOG_ORIGIN_HANDLE_NEXT_BLOCK',
88     503: 'LLOG_ORIGIN_HANDLE_READ_HEADER',
89     504: 'LLOG_ORIGIN_HANDLE_WRITE_REC',    # Obsolete by 2.1.
90     505: 'LLOG_ORIGIN_HANDLE_CLOSE',        # Obsolete by 1.8.
91     506: 'LLOG_ORIGIN_CONNECT',             # Obsolete by 2.4.
92     507: 'LLOG_CATINFO',                    # Obsolete by 2.3.
93     508: 'LLOG_ORIGIN_HANDLE_PREV_BLOCK',
94     509: 'LLOG_ORIGIN_HANDLE_DESTROY',      # Obsolete by 2.11.
95
96     601: 'QUOTA_DQACQ',
97     602: 'QUOTA_DQREL',
98
99     700: 'SEQ_QUERY',
100
101     801: 'SEC_CTX_INIT',
102     802: 'SEC_CTX_INIT_CONT',
103     803: 'SEC_CTX_FINI',
104
105     900: 'FLD_QUERY',
106     901: 'FLD_READ',
107
108     1000: 'OUT_UPDATE',
109
110     1101: 'LFSCK_NOTIFY',
111     1102: 'LFSCK_QUERY'
112 }
113
114 def translate_opcodes(opc_list):
115     for opc in opc_list:
116         try:
117             print "o%d \t= %s" % (opc, opcodes[opc])
118         except:
119             print "o%d \t= unknown" % opc
120
121
122 if __name__ == "__main__":
123     description = "Maps one or more Lustre rpc opcodes to its string identifier."
124     parser = argparse.ArgumentParser(description=description)
125     parser.add_argument('opcode', nargs="+", type=int,
126         help="list of one or more opcodes")
127
128     args = parser.parse_args()
129     translate_opcodes(args.opcode)