summaryrefslogtreecommitdiffstats
path: root/tapset/nfsderrno.stp
blob: 3a533fd29ede3c911e1d329535087f5ba553cab2 (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

%{
#include <linux/kernel.h>
#include <linux/linkage.h>
#include <linux/time.h>
#include <linux/errno.h>
#include <linux/fs.h>
#include <linux/stat.h>
#include <linux/fcntl.h>
#include <linux/net.h>
#include <linux/in.h>
#include <linux/namei.h>
#include <linux/unistd.h>
#include <linux/slab.h>

#include <linux/sunrpc/clnt.h>
#include <linux/sunrpc/svc.h>
#include <linux/nfsd/nfsd.h>
%}

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"},
	};
	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);

%}