summaryrefslogtreecommitdiffstats
path: root/tapset/nfsderrno.stp
blob: 5472892b2d94e42099f86174fd46288de9d2322a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
// nfsd errnos tapset
// Copyright (C) 2010 Red Hat Inc.
//
// This file is part of systemtap, and is free software.  You can
// redistribute it and/or modify it under the terms of the GNU General
// Public License (GPL); either version 2, or (at your option) any
// later version.

%{
#include <linux/nfs.h>
#include <linux/nfs4.h>

#define	nfs_ok			cpu_to_be32(NFS_OK)
#define	nfserr_perm		cpu_to_be32(NFSERR_PERM)
#define	nfserr_noent		cpu_to_be32(NFSERR_NOENT)
#define	nfserr_io		cpu_to_be32(NFSERR_IO)
#define	nfserr_nxio		cpu_to_be32(NFSERR_NXIO)
#define	nfserr_eagain		cpu_to_be32(NFSERR_EAGAIN)
#define	nfserr_acces		cpu_to_be32(NFSERR_ACCES)
#define	nfserr_exist		cpu_to_be32(NFSERR_EXIST)
#define	nfserr_xdev		cpu_to_be32(NFSERR_XDEV)
#define	nfserr_nodev		cpu_to_be32(NFSERR_NODEV)
#define	nfserr_notdir		cpu_to_be32(NFSERR_NOTDIR)
#define	nfserr_isdir		cpu_to_be32(NFSERR_ISDIR)
#define	nfserr_inval		cpu_to_be32(NFSERR_INVAL)
#define	nfserr_fbig		cpu_to_be32(NFSERR_FBIG)
#define	nfserr_nospc		cpu_to_be32(NFSERR_NOSPC)
#define	nfserr_rofs		cpu_to_be32(NFSERR_ROFS)
#define	nfserr_mlink		cpu_to_be32(NFSERR_MLINK)
#define	nfserr_opnotsupp	cpu_to_be32(NFSERR_OPNOTSUPP)
#define	nfserr_nametoolong	cpu_to_be32(NFSERR_NAMETOOLONG)
#define	nfserr_notempty		cpu_to_be32(NFSERR_NOTEMPTY)
#define	nfserr_dquot		cpu_to_be32(NFSERR_DQUOT)
#define	nfserr_stale		cpu_to_be32(NFSERR_STALE)
#define	nfserr_remote		cpu_to_be32(NFSERR_REMOTE)
#define	nfserr_wflush		cpu_to_be32(NFSERR_WFLUSH)
#define	nfserr_badhandle	cpu_to_be32(NFSERR_BADHANDLE)
#define	nfserr_notsync		cpu_to_be32(NFSERR_NOT_SYNC)
#define	nfserr_badcookie	cpu_to_be32(NFSERR_BAD_COOKIE)
#define	nfserr_notsupp		cpu_to_be32(NFSERR_NOTSUPP)
#define	nfserr_toosmall		cpu_to_be32(NFSERR_TOOSMALL)
#define	nfserr_serverfault	cpu_to_be32(NFSERR_SERVERFAULT)
#define	nfserr_badtype		cpu_to_be32(NFSERR_BADTYPE)
#define	nfserr_jukebox		cpu_to_be32(NFSERR_JUKEBOX)
#define	nfserr_denied		cpu_to_be32(NFSERR_DENIED)
#define	nfserr_deadlock		cpu_to_be32(NFSERR_DEADLOCK)
#define nfserr_expired          cpu_to_be32(NFSERR_EXPIRED)
#define	nfserr_bad_cookie	cpu_to_be32(NFSERR_BAD_COOKIE)
#define	nfserr_same		cpu_to_be32(NFSERR_SAME)
#define	nfserr_clid_inuse	cpu_to_be32(NFSERR_CLID_INUSE)
#define	nfserr_stale_clientid	cpu_to_be32(NFSERR_STALE_CLIENTID)
#define	nfserr_resource		cpu_to_be32(NFSERR_RESOURCE)
#define	nfserr_moved		cpu_to_be32(NFSERR_MOVED)
#define	nfserr_nofilehandle	cpu_to_be32(NFSERR_NOFILEHANDLE)
#define	nfserr_minor_vers_mismatch	cpu_to_be32(NFSERR_MINOR_VERS_MISMATCH)
#define nfserr_share_denied	cpu_to_be32(NFSERR_SHARE_DENIED)
#define nfserr_stale_stateid	cpu_to_be32(NFSERR_STALE_STATEID)
#define nfserr_old_stateid	cpu_to_be32(NFSERR_OLD_STATEID)
#define nfserr_bad_stateid	cpu_to_be32(NFSERR_BAD_STATEID)
#define nfserr_bad_seqid	cpu_to_be32(NFSERR_BAD_SEQID)
#define	nfserr_symlink		cpu_to_be32(NFSERR_SYMLINK)
#define	nfserr_not_same		cpu_to_be32(NFSERR_NOT_SAME)
#define	nfserr_restorefh	cpu_to_be32(NFSERR_RESTOREFH)
#define	nfserr_attrnotsupp	cpu_to_be32(NFSERR_ATTRNOTSUPP)
#define	nfserr_bad_xdr		cpu_to_be32(NFSERR_BAD_XDR)
#define	nfserr_openmode		cpu_to_be32(NFSERR_OPENMODE)
#define	nfserr_locks_held	cpu_to_be32(NFSERR_LOCKS_HELD)
#define	nfserr_op_illegal	cpu_to_be32(NFSERR_OP_ILLEGAL)
#define	nfserr_grace		cpu_to_be32(NFSERR_GRACE)
#define	nfserr_no_grace		cpu_to_be32(NFSERR_NO_GRACE)
#define	nfserr_reclaim_bad	cpu_to_be32(NFSERR_RECLAIM_BAD)
#define	nfserr_badname		cpu_to_be32(NFSERR_BADNAME)
#define	nfserr_cb_path_down	cpu_to_be32(NFSERR_CB_PATH_DOWN)
#define	nfserr_locked		cpu_to_be32(NFSERR_LOCKED)
#define	nfserr_wrongsec		cpu_to_be32(NFSERR_WRONGSEC)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)
#define nfserr_badiomode		cpu_to_be32(NFS4ERR_BADIOMODE)
#define nfserr_badlayout		cpu_to_be32(NFS4ERR_BADLAYOUT)
#define nfserr_bad_session_digest	cpu_to_be32(NFS4ERR_BAD_SESSION_DIGEST)
#define nfserr_badsession		cpu_to_be32(NFS4ERR_BADSESSION)
#define nfserr_badslot			cpu_to_be32(NFS4ERR_BADSLOT)
#define nfserr_complete_already		cpu_to_be32(NFS4ERR_COMPLETE_ALREADY)
#define nfserr_conn_not_bound_to_session cpu_to_be32(NFS4ERR_CONN_NOT_BOUND_TO_SESSION)
#define nfserr_deleg_already_wanted	cpu_to_be32(NFS4ERR_DELEG_ALREADY_WANTED)
#define nfserr_back_chan_busy		cpu_to_be32(NFS4ERR_BACK_CHAN_BUSY)
#define nfserr_layouttrylater		cpu_to_be32(NFS4ERR_LAYOUTTRYLATER)
#define nfserr_layoutunavailable	cpu_to_be32(NFS4ERR_LAYOUTUNAVAILABLE)
#define nfserr_nomatching_layout	cpu_to_be32(NFS4ERR_NOMATCHING_LAYOUT)
#define nfserr_recallconflict		cpu_to_be32(NFS4ERR_RECALLCONFLICT)
#define nfserr_unknown_layouttype	cpu_to_be32(NFS4ERR_UNKNOWN_LAYOUTTYPE)
#define nfserr_seq_misordered		cpu_to_be32(NFS4ERR_SEQ_MISORDERED)
#define nfserr_sequence_pos		cpu_to_be32(NFS4ERR_SEQUENCE_POS)
#define nfserr_req_too_big		cpu_to_be32(NFS4ERR_REQ_TOO_BIG)
#define nfserr_rep_too_big		cpu_to_be32(NFS4ERR_REP_TOO_BIG)
#define nfserr_rep_too_big_to_cache	cpu_to_be32(NFS4ERR_REP_TOO_BIG_TO_CACHE)
#define nfserr_retry_uncached_rep	cpu_to_be32(NFS4ERR_RETRY_UNCACHED_REP)
#define nfserr_unsafe_compound		cpu_to_be32(NFS4ERR_UNSAFE_COMPOUND)
#define nfserr_too_many_ops		cpu_to_be32(NFS4ERR_TOO_MANY_OPS)
#define nfserr_op_not_in_session	cpu_to_be32(NFS4ERR_OP_NOT_IN_SESSION)
#define nfserr_hash_alg_unsupp		cpu_to_be32(NFS4ERR_HASH_ALG_UNSUPP)
#define nfserr_clientid_busy		cpu_to_be32(NFS4ERR_CLIENTID_BUSY)
#define nfserr_pnfs_io_hole		cpu_to_be32(NFS4ERR_PNFS_IO_HOLE)
#define nfserr_seq_false_retry		cpu_to_be32(NFS4ERR_SEQ_FALSE_RETRY)
#define nfserr_bad_high_slot		cpu_to_be32(NFS4ERR_BAD_HIGH_SLOT)
#define nfserr_deadsession		cpu_to_be32(NFS4ERR_DEADSESSION)
#define nfserr_encr_alg_unsupp		cpu_to_be32(NFS4ERR_ENCR_ALG_UNSUPP)
#define nfserr_pnfs_no_layout		cpu_to_be32(NFS4ERR_PNFS_NO_LAYOUT)
#define nfserr_not_only_op		cpu_to_be32(NFS4ERR_NOT_ONLY_OP)
#define nfserr_wrong_cred		cpu_to_be32(NFS4ERR_WRONG_CRED)
#define nfserr_wrong_type		cpu_to_be32(NFS4ERR_WRONG_TYPE)
#define nfserr_dirdeleg_unavail		cpu_to_be32(NFS4ERR_DIRDELEG_UNAVAIL)
#define nfserr_reject_deleg		cpu_to_be32(NFS4ERR_REJECT_DELEG)
#define nfserr_returnconflict		cpu_to_be32(NFS4ERR_RETURNCONFLICT)
#define nfserr_deleg_revoked		cpu_to_be32(NFS4ERR_DELEG_REVOKED)
#endif
%}

function nfsderror:string(err:long) 
%{
	static struct {
		int	nfserr;
		char *string;
	} nfs_errtbl[] = {
		{nfs_ok, "NFS_OK"},
		{nfserr_perm, "NFSERR_PERM"},
		{nfserr_noent, "NFSERR_NOENT"},
		{nfserr_io, "NFSERR_IO"},
		{nfserr_nxio, "NFSERR_NXIO"},
		{nfserr_eagain, "NFSERR_EAGAIN"},
		{nfserr_acces, "NFSERR_ACCES"},
		{nfserr_exist, "NFSERR_EXIST"},
		{nfserr_xdev, "NFSERR_XDEV"},
		{nfserr_nodev, "NFSERR_NODEV"},
		{nfserr_notdir, "NFSERR_NOTDIR"},
		{nfserr_isdir, "NFSERR_ISDIR"},
		{nfserr_inval, "NFSERR_INVAL"},
		{nfserr_fbig, "NFSERR_FBIG"},
		{nfserr_nospc, "NFSERR_NOSPC"},
		{nfserr_rofs, "NFSERR_ROFS"},
		{nfserr_mlink, "NFSERR_MLINK"},
		{nfserr_opnotsupp, "NFSERR_OPNOTSUPP"},
		{nfserr_nametoolong, "NFSERR_NAMETOOLONG"},
		{nfserr_notempty, "NFSERR_NOTEMPTY"},
		{nfserr_dquot, "NFSERR_DQUOT"},
		{nfserr_stale, "NFSERR_STALE"},
		{nfserr_remote, "NFSERR_REMOTE"},
		{nfserr_wflush, "NFSERR_WFLUSH"},
		{nfserr_badhandle, "NFSERR_BADHANDLE"},
		{nfserr_notsync, "NFSERR_NOT_SYNC"},
		{nfserr_badcookie, "NFSERR_BAD_COOKIE"},
		{nfserr_notsupp, "NFSERR_NOTSUPP"},
		{nfserr_toosmall, "NFSERR_TOOSMALL"},
		{nfserr_serverfault, "NFSERR_SERVERFAULT"},
		{nfserr_badtype, "NFSERR_BADTYPE"},
		{nfserr_jukebox, "NFSERR_JUKEBOX"},
		{nfserr_denied, "NFSERR_DENIED"},
		{nfserr_deadlock, "NFSERR_DEADLOCK"},
		{nfserr_expired, "NFSERR_EXPIRED"},
		{nfserr_bad_cookie, "NFSERR_BAD_COOKIE"},
		{nfserr_same, "NFSERR_SAME"},
		{nfserr_clid_inuse, "NFSERR_CLID_INUSE"},
		{nfserr_stale_clientid, "NFSERR_STALE_CLIENTID"},
		{nfserr_resource, "NFSERR_RESOURCE"},
		{nfserr_moved, "NFSERR_MOVED"},
		{nfserr_nofilehandle, "NFSERR_NOFILEHANDLE"},
		{nfserr_minor_vers_mismatch, "NFSERR_MINOR_VERS_MISMATCH"},
		{nfserr_share_denied, "NFSERR_SHARE_DENIED"},
		{nfserr_stale_stateid, "NFSERR_STALE_STATEID"},
		{nfserr_old_stateid, "NFSERR_OLD_STATEID"},
		{nfserr_bad_stateid, "NFSERR_BAD_STATEID"},
		{nfserr_bad_seqid, "NFSERR_BAD_SEQID"},
		{nfserr_symlink , "NFSERR_SYMLINK"},
		{nfserr_not_same , "NFSERR_NOT_SAME"},
		{nfserr_restorefh , "NFSERR_RESTOREFH"},
		{nfserr_attrnotsupp, "NFSERR_ATTRNOTSUPP"},
		{nfserr_bad_xdr, "NFSERR_BAD_XDR"},
		{nfserr_openmode, "NFSERR_OPENMODE"},
		{nfserr_locks_held, "NFSERR_LOCKS_HELD"},
		{nfserr_op_illegal, "NFSERR_OP_ILLEGAL"},
		{nfserr_grace, "NFSERR_GRACE"},
		{nfserr_no_grace, "NFSERR_NO_GRACE"},
		{nfserr_reclaim_bad, "NFSERR_RECLAIM_BAD"},
		{nfserr_badname, "NFSERR_BADNAME"},
		{nfserr_cb_path_down, "NFSERR_CB_PATH_DOWN"},
		{nfserr_locked, "NFSERR_LOCKED"},
		{nfserr_wrongsec, "NFSERR_WRONGSEC"},
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)
		{nfserr_badiomode, "NFS4ERR_BADIOMODE"},
		{nfserr_badlayout, "NFS4ERR_BADLAYOUT"},
		{nfserr_bad_session_digest, "NFS4ERR_BAD_SESSION_DIGEST"},
		{nfserr_badsession, "NFS4ERR_BADSESSION"},
		{nfserr_badslot, "NFS4ERR_BADSLOT"},
		{nfserr_complete_already, "NFS4ERR_COMPLETE_ALREADY"},
		{nfserr_conn_not_bound_to_session, "NFS4ERR_CONN_NOT_BOUND_TO_SESSION"},
		{nfserr_deleg_already_wanted, "NFS4ERR_DELEG_ALREADY_WANTED"},
		{nfserr_back_chan_busy, "NFS4ERR_BACK_CHAN_BUSY"},
		{nfserr_layouttrylater, "NFS4ERR_LAYOUTTRYLATER"},
		{nfserr_layoutunavailable, "NFS4ERR_LAYOUTUNAVAILABLE"},
		{nfserr_nomatching_layout, "NFS4ERR_NOMATCHING_LAYOUT"},
		{nfserr_recallconflict, "NFS4ERR_RECALLCONFLICT"},
		{nfserr_unknown_layouttype, "NFS4ERR_UNKNOWN_LAYOUTTYPE"},
		{nfserr_seq_misordered, "NFS4ERR_SEQ_MISORDERED"},
		{nfserr_sequence_pos, "NFS4ERR_SEQUENCE_POS"},
		{nfserr_req_too_big, "NFS4ERR_REQ_TOO_BIG"},
		{nfserr_rep_too_big, "NFS4ERR_REP_TOO_BIG"},
		{nfserr_rep_too_big_to_cache, "NFS4ERR_REP_TOO_BIG_TO_CACHE"},
		{nfserr_retry_uncached_rep, "NFS4ERR_RETRY_UNCACHED_REP"},
		{nfserr_unsafe_compound, "NFS4ERR_UNSAFE_COMPOUND"},
		{nfserr_too_many_ops, "NFS4ERR_TOO_MANY_OPS"},
		{nfserr_op_not_in_session, "NFS4ERR_OP_NOT_IN_SESSION"},
		{nfserr_hash_alg_unsupp, "NFS4ERR_HASH_ALG_UNSUPP"},
		{nfserr_clientid_busy, "NFS4ERR_CLIENTID_BUSY"},
		{nfserr_pnfs_io_hole, "NFS4ERR_PNFS_IO_HOLE"},
		{nfserr_seq_false_retry, "NFS4ERR_SEQ_FALSE_RETRY"},
		{nfserr_bad_high_slot, "NFS4ERR_BAD_HIGH_SLOT"},
		{nfserr_deadsession, "NFS4ERR_DEADSESSION"},
		{nfserr_encr_alg_unsupp, "NFS4ERR_ENCR_ALG_UNSUPP"},
		{nfserr_pnfs_no_layout, "NFS4ERR_PNFS_NO_LAYOUT"},
		{nfserr_not_only_op, "NFS4ERR_NOT_ONLY_OP"},
		{nfserr_wrong_cred, "NFS4ERR_WRONG_CRED"},
		{nfserr_wrong_type, "NFS4ERR_WRONG_TYPE"},
		{nfserr_dirdeleg_unavail, "NFS4ERR_DIRDELEG_UNAVAIL"},
		{nfserr_reject_deleg, "NFS4ERR_REJECT_DELEG"},
		{nfserr_returnconflict, "NFS4ERR_RETURNCONFLICT"},
		{nfserr_deleg_revoked, "NFS4ERR_DELEG_REVOKED"},
#endif
	};
	int	i;
	int tabsz = (sizeof(nfs_errtbl)/sizeof(nfs_errtbl[0]));

	for (i = 0; i < tabsz; i++) {
		if (nfs_errtbl[i].nfserr == THIS->err) {
			break;
		}
	}
	if (i == tabsz)
		snprintf(THIS->__retvalue, MAXSTRINGLEN, "nfsderr %d", ntohl(THIS->err));
	else
		snprintf(THIS->__retvalue, MAXSTRINGLEN, 
			"nfsderr %d(%s)", ntohl(nfs_errtbl[i].nfserr), nfs_errtbl[i].string);

%}