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
|
%{
#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/nfs.h>
#include <linux/nfs4.h>
%}
function nfs4error:string(err:long)
%{
static struct {
int nfserr;
char *string;
} nfs_errtbl[] = {
{ NFS4_OK, "Success" },
{ NFS4ERR_PERM, "NFS4ERR_PERM" },
{ NFS4ERR_NOENT, "NFS4ERR_NOENT" },
{ NFS4ERR_IO, "NFS4ERR_IO" },
{ NFS4ERR_NXIO, "NFS4ERR_NXIO" },
{ NFS4ERR_ACCESS, "NFS4ERR_ACCESS" },
{ NFS4ERR_EXIST, "NFS4ERR_EXIST" },
{ NFS4ERR_XDEV, "NFS4ERR_XDEV" },
{ NFS4ERR_NOTDIR, "NFS4ERR_NOTDIR" },
{ NFS4ERR_ISDIR, "NFS4ERR_ISDIR" },
{ NFS4ERR_INVAL, "NFS4ERR_INVAL" },
{ NFS4ERR_FBIG, "NFS4ERR_FBIG" },
{ NFS4ERR_NOSPC, "NFS4ERR_NOSPC" },
{ NFS4ERR_ROFS, "NFS4ERR_ROFS" },
{ NFS4ERR_MLINK, "NFS4ERR_MLINK" },
{ NFS4ERR_NAMETOOLONG, "NFS4ERR_NAMETOOLONG" },
{ NFS4ERR_NOTEMPTY, "NFS4ERR_NOTEMPTY" },
{ NFS4ERR_DQUOT, "NFS4ERR_DQUOT" },
{ NFS4ERR_STALE, "NFS4ERR_STALE" },
{ NFS4ERR_BADHANDLE, "NFS4ERR_BADHANDLE" },
{ NFS4ERR_BADOWNER, "NFS4ERR_BADOWNER" },
{ NFS4ERR_BADNAME, "NFS4ERR_BADNAME" },
{ NFS4ERR_BAD_COOKIE, "NFS4ERR_BAD_COOKIE" },
{ NFS4ERR_NOTSUPP, "NFS4ERR_NOTSUPP" },
{ NFS4ERR_TOOSMALL, "NFS4ERR_TOOSMALL" },
{ NFS4ERR_SERVERFAULT, "NFS4ERR_SERVERFAULT" },
{ NFS4ERR_BADTYPE, "NFS4ERR_BADTYPE" },
{ NFS4ERR_LOCKED, "NFS4ERR_LOCKED" },
{ NFS4ERR_RESOURCE, "NFS4ERR_RESOURCE" },
{ NFS4ERR_SYMLINK, "NFS4ERR_SYMLINK" },
{ NFS4ERR_OP_ILLEGAL, "NFS4ERR_OP_ILLEGAL" },
{ NFS4ERR_DEADLOCK, "NFS4ERR_DEADLOCK" },
{ NFS4ERR_WRONGSEC, "NFS4ERR_WRONGSEC" }, /* FIXME: this needs
* to be handled by a
* middle-layer.
*/
{ -1, "Bad Error Code" }
};
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, "nfs4err %d", ntohl(THIS->err));
else
snprintf(THIS->__retvalue, MAXSTRINGLEN,
"nfs4err %d(%s)", nfs_errtbl[i].nfserr, nfs_errtbl[i].string);
%}
|