3 * UNFS3 error translation
4 * (C) 2004, Pascal Schmidt
5 * see file LICENSE for license details
9 * translations from Unix errno to NFS error numbers
21 static int is_stale(void)
23 if (errno == ENOTDIR || errno == ELOOP || errno == ENOENT ||
24 errno == ENAMETOOLONG)
30 nfsstat3 symlink_err(void)
32 if (errno == EACCES || errno == EPERM)
36 else if (errno == EROFS)
38 else if (errno == EEXIST)
40 else if (errno == ENOSPC)
43 else if (errno == EDQUOT)
46 else if (errno == ENOSYS)
47 return NFS3ERR_NOTSUPP;
48 else if (errno == EINVAL)
54 nfsstat3 mkdir_err(void)
59 nfsstat3 mknod_err(void)
64 nfsstat3 link_err(void)
68 else if (errno == EMLINK)
71 else if (errno == EDQUOT)
78 nfsstat3 lookup_err(void)
83 else if (errno == ENOMEDIUM)
86 else if (errno == EACCES)
88 else if (errno == ENOTDIR || errno == ELOOP || errno == ENAMETOOLONG)
90 else if (errno == EINVAL)
96 nfsstat3 readlink_err(void)
100 else if (errno == EACCES)
101 return NFS3ERR_ACCES;
102 else if (errno == ENOSYS)
103 return NFS3ERR_NOTSUPP;
105 return NFS3ERR_STALE;
110 nfsstat3 read_err(void)
113 return NFS3ERR_INVAL;
115 return NFS3ERR_STALE;
116 else if (errno == EACCES)
117 return NFS3ERR_ACCES;
118 else if (errno == ENXIO || errno == ENODEV)
124 nfsstat3 write_open_err(void)
127 return NFS3ERR_ACCES;
129 return NFS3ERR_STALE;
130 else if (errno == EINVAL)
131 return NFS3ERR_INVAL;
132 else if (errno == EROFS)
138 nfsstat3 write_write_err(void)
141 return NFS3ERR_INVAL;
142 else if (errno == EFBIG)
144 else if (errno == ENOSPC)
145 return NFS3ERR_NOSPC;
147 else if (errno == EDQUOT)
148 return NFS3ERR_DQUOT;
154 nfsstat3 create_err(void)
157 return NFS3ERR_ACCES;
159 return NFS3ERR_STALE;
160 else if (errno == EROFS)
162 else if (errno == ENOSPC)
163 return NFS3ERR_NOSPC;
164 else if (errno == EEXIST)
165 return NFS3ERR_EXIST;
167 else if (errno == EDQUOT)
168 return NFS3ERR_DQUOT;
174 nfsstat3 rename_err(void)
177 return NFS3ERR_ISDIR;
178 else if (errno == EXDEV)
180 else if (errno == EEXIST)
181 return NFS3ERR_EXIST;
182 else if (errno == ENOTEMPTY)
183 return NFS3ERR_NOTEMPTY;
184 else if (errno == EINVAL)
185 return NFS3ERR_INVAL;
186 else if (errno == ENOTDIR)
187 return NFS3ERR_NOTDIR;
188 else if (errno == EACCES || errno == EPERM)
189 return NFS3ERR_ACCES;
190 else if (errno == ENOENT)
191 return NFS3ERR_NOENT;
192 else if (errno == ELOOP || errno == ENAMETOOLONG)
193 return NFS3ERR_STALE;
194 else if (errno == EROFS)
196 else if (errno == ENOSPC)
197 return NFS3ERR_NOSPC;
199 else if (errno == EDQUOT)
200 return NFS3ERR_DQUOT;
206 nfsstat3 remove_err(void)
208 if (errno == EACCES || errno == EPERM)
209 return NFS3ERR_ACCES;
210 else if (errno == ENOENT)
212 else if (errno == ENOTDIR || errno == ELOOP || errno == ENAMETOOLONG)
213 return NFS3ERR_STALE;
214 else if (errno == EINVAL)
215 return NFS3ERR_INVAL;
216 else if (errno == EROFS)
222 nfsstat3 rmdir_err(void)
224 if (errno == ENOTEMPTY)
225 return NFS3ERR_NOTEMPTY;
230 nfsstat3 setattr_err(void)
234 else if (errno == EROFS)
237 return NFS3ERR_STALE;
238 else if (errno == EACCES)
239 return NFS3ERR_ACCES;
241 else if (errno == EDQUOT)
242 return NFS3ERR_DQUOT;
244 else if (errno == EINVAL)
245 return NFS3ERR_INVAL;
250 nfsstat3 readdir_err(void)
254 else if (errno == EACCES)
255 return NFS3ERR_ACCES;
256 else if (errno == ENOTDIR)
257 return NFS3ERR_NOTDIR;
259 return NFS3ERR_STALE;
260 else if (errno == EINVAL)
261 return NFS3ERR_INVAL;
267 * combine two error values
269 nfsstat3 join(nfsstat3 x, nfsstat3 y)
271 return (x != NFS3_OK) ? x : y;
275 * combine three error values
277 nfsstat3 join3(nfsstat3 x, nfsstat3 y, nfsstat3 z)
279 return (x != NFS3_OK) ? x : join(y, z);