Lines Matching +full:status +full:- +full:sizes

1 // SPDX-License-Identifier: GPL-2.0
3 * In-kernel MOUNT protocol client
28 * XDR data type sizes
37 * XDR argument and result sizes
82 u32 status; member
85 { .status = MNT_OK, .errno = 0, },
86 { .status = MNT_EPERM, .errno = -EPERM, },
87 { .status = MNT_ENOENT, .errno = -ENOENT, },
88 { .status = MNT_EACCES, .errno = -EACCES, },
89 { .status = MNT_EINVAL, .errno = -EINVAL, },
109 u32 status; member
112 { .status = MNT3_OK, .errno = 0, },
113 { .status = MNT3ERR_PERM, .errno = -EPERM, },
114 { .status = MNT3ERR_NOENT, .errno = -ENOENT, },
115 { .status = MNT3ERR_IO, .errno = -EIO, },
116 { .status = MNT3ERR_ACCES, .errno = -EACCES, },
117 { .status = MNT3ERR_NOTDIR, .errno = -ENOTDIR, },
118 { .status = MNT3ERR_INVAL, .errno = -EINVAL, },
119 { .status = MNT3ERR_NAMETOOLONG, .errno = -ENAMETOOLONG, },
120 { .status = MNT3ERR_NOTSUPP, .errno = -ENOTSUPP, },
121 { .status = MNT3ERR_SERVERFAULT, .errno = -EREMOTEIO, },
132 * nfs_mount - Obtain an NFS file handle for the given host and path
139 * server or a faked-up list if the server didn't provide one.
145 .fh = info->fh, in nfs_mount()
146 .auth_count = info->auth_flav_len, in nfs_mount()
147 .auth_flavors = info->auth_flavs, in nfs_mount()
150 .rpc_argp = info->dirpath, in nfs_mount()
154 .net = info->net, in nfs_mount()
155 .protocol = info->protocol, in nfs_mount()
156 .address = (struct sockaddr *)info->sap, in nfs_mount()
157 .addrsize = info->salen, in nfs_mount()
159 .servername = info->hostname, in nfs_mount()
161 .version = info->version, in nfs_mount()
166 int status; in nfs_mount() local
169 (info->hostname ? info->hostname : "server"), in nfs_mount()
170 info->dirpath); in nfs_mount()
172 if (strlen(info->dirpath) > MNTPATHLEN) in nfs_mount()
173 return -ENAMETOOLONG; in nfs_mount()
175 if (info->noresvport) in nfs_mount()
178 nfs_init_timeout_values(&mnt_timeout, info->protocol, timeo, retrans); in nfs_mount()
183 if (info->version == NFS_MNT3_VERSION) in nfs_mount()
184 msg.rpc_proc = &mnt_clnt->cl_procinfo[MOUNTPROC3_MNT]; in nfs_mount()
186 msg.rpc_proc = &mnt_clnt->cl_procinfo[MOUNTPROC_MNT]; in nfs_mount()
188 status = rpc_call_sync(mnt_clnt, &msg, RPC_TASK_SOFT|RPC_TASK_TIMEOUT); in nfs_mount()
191 if (status < 0) in nfs_mount()
197 status = 0; in nfs_mount()
203 if (info->version != NFS_MNT3_VERSION || *info->auth_flav_len == 0) { in nfs_mount()
205 info->auth_flavs[0] = RPC_AUTH_NULL; in nfs_mount()
206 *info->auth_flav_len = 1; in nfs_mount()
209 return status; in nfs_mount()
212 status = PTR_ERR(mnt_clnt); in nfs_mount()
213 dprintk("NFS: failed to create MNT RPC client, status=%d\n", status); in nfs_mount()
217 dprintk("NFS: MNT request failed, status=%d\n", status); in nfs_mount()
222 status = result.errno; in nfs_mount()
246 * RFC 1094: "A non-zero status indicates some sort of error. In this
247 * case, the status is a UNIX error number." This can be problematic
257 u32 status; in decode_status() local
262 return -EIO; in decode_status()
263 status = be32_to_cpup(p); in decode_status()
266 if (mnt_errtbl[i].status == status) { in decode_status()
267 res->errno = mnt_errtbl[i].errno; in decode_status()
272 dprintk("NFS: unrecognized MNT status code: %u\n", status); in decode_status()
273 res->errno = -EACCES; in decode_status()
279 struct nfs_fh *fh = res->fh; in decode_fhandle()
284 return -EIO; in decode_fhandle()
286 fh->size = NFS2_FHSIZE; in decode_fhandle()
287 memcpy(fh->data, p, NFS2_FHSIZE); in decode_fhandle()
296 int status; in mnt_xdr_dec_mountres() local
298 status = decode_status(xdr, res); in mnt_xdr_dec_mountres()
299 if (unlikely(status != 0 || res->errno != 0)) in mnt_xdr_dec_mountres()
300 return status; in mnt_xdr_dec_mountres()
307 u32 status; in decode_fhs_status() local
312 return -EIO; in decode_fhs_status()
313 status = be32_to_cpup(p); in decode_fhs_status()
316 if (mnt3_errtbl[i].status == status) { in decode_fhs_status()
317 res->errno = mnt3_errtbl[i].errno; in decode_fhs_status()
322 dprintk("NFS: unrecognized MNT3 status code: %u\n", status); in decode_fhs_status()
323 res->errno = -EACCES; in decode_fhs_status()
329 struct nfs_fh *fh = res->fh; in decode_fhandle3()
335 return -EIO; in decode_fhandle3()
339 return -EIO; in decode_fhandle3()
343 return -EIO; in decode_fhandle3()
345 fh->size = size; in decode_fhandle3()
346 memcpy(fh->data, p, size); in decode_fhandle3()
352 rpc_authflavor_t *flavors = res->auth_flavors; in decode_auth_flavors()
353 unsigned int *count = res->auth_count; in decode_auth_flavors()
362 return -EIO; in decode_auth_flavors()
370 return -EIO; in decode_auth_flavors()
389 int status; in mnt_xdr_dec_mountres3() local
391 status = decode_fhs_status(xdr, res); in mnt_xdr_dec_mountres3()
392 if (unlikely(status != 0 || res->errno != 0)) in mnt_xdr_dec_mountres3()
393 return status; in mnt_xdr_dec_mountres3()
394 status = decode_fhandle3(xdr, res); in mnt_xdr_dec_mountres3()
395 if (unlikely(status != 0)) { in mnt_xdr_dec_mountres3()
396 res->errno = -EBADHANDLE; in mnt_xdr_dec_mountres3()