Lines Matching +full:is +full:- +full:decoded +full:- +full:cs
8 * 04 Aug 1998 Ion Badulescu <ionut@cs.columbia.edu>
33 * number of 32bit-words
73 struct rpc_auth *auth = req->rq_cred->cr_auth; in prepare_reply_buffer()
76 replen = RPC_REPHDRSIZE + auth->au_rslack + bufsize; in prepare_reply_buffer()
77 xdr_inline_pages(&req->rq_rcv_buf, replen << 2, pages, base, len); in prepare_reply_buffer()
81 * Handle decode buffer overflows out-of-line.
86 "Remaining buffer length is %tu words.\n", in print_overflow_msg()
87 func, xdr->end - xdr->p); in print_overflow_msg()
98 * functions. For run-time efficiency, some data types are encoded
99 * or decoded inline.
115 hdrlen = (u8 *)xdr->p - (u8 *)xdr->iov->iov_base; in decode_nfsdata()
116 recvd = xdr->buf->len - hdrlen; in decode_nfsdata()
121 result->eof = 0; /* NFSv2 does not pass EOF flag on the wire. */ in decode_nfsdata()
122 result->count = count; in decode_nfsdata()
131 return -EIO; in decode_nfsdata()
167 return -EIO; in decode_stat()
200 BUG_ON(fh->size != NFS2_FHSIZE); in encode_fhandle()
202 memcpy(p, fh->data, NFS2_FHSIZE); in encode_fhandle()
212 fh->size = NFS2_FHSIZE; in decode_fhandle()
213 memcpy(fh->data, p, NFS2_FHSIZE); in decode_fhandle()
217 return -EIO; in decode_fhandle()
230 *p++ = cpu_to_be32(timep->tv_sec); in xdr_encode_time()
231 if (timep->tv_nsec != 0) in xdr_encode_time()
232 *p++ = cpu_to_be32(timep->tv_nsec / NSEC_PER_USEC); in xdr_encode_time()
239 * Passing the invalid value useconds=1000000 is a Sun convention for
243 * Illustrated" by Brent Callaghan, Addison-Wesley, ISBN 0-201-32750-5.
248 *p++ = cpu_to_be32(timep->tv_sec); in xdr_encode_current_server_time()
255 timep->tv_sec = be32_to_cpup(p++); in xdr_decode_time()
256 timep->tv_nsec = be32_to_cpup(p++) * NSEC_PER_USEC; in xdr_decode_time()
290 fattr->valid |= NFS_ATTR_FATTR_V2; in decode_fattr()
294 fattr->mode = be32_to_cpup(p++); in decode_fattr()
295 fattr->nlink = be32_to_cpup(p++); in decode_fattr()
296 fattr->uid = be32_to_cpup(p++); in decode_fattr()
297 fattr->gid = be32_to_cpup(p++); in decode_fattr()
298 fattr->size = be32_to_cpup(p++); in decode_fattr()
299 fattr->du.nfs2.blocksize = be32_to_cpup(p++); in decode_fattr()
302 fattr->rdev = new_decode_dev(rdev); in decode_fattr()
304 fattr->mode = (fattr->mode & ~S_IFMT) | S_IFIFO; in decode_fattr()
305 fattr->rdev = 0; in decode_fattr()
308 fattr->du.nfs2.blocks = be32_to_cpup(p++); in decode_fattr()
309 fattr->fsid.major = be32_to_cpup(p++); in decode_fattr()
310 fattr->fsid.minor = 0; in decode_fattr()
311 fattr->fileid = be32_to_cpup(p++); in decode_fattr()
313 p = xdr_decode_time(p, &fattr->atime); in decode_fattr()
314 p = xdr_decode_time(p, &fattr->mtime); in decode_fattr()
315 xdr_decode_time(p, &fattr->ctime); in decode_fattr()
319 return -EIO; in decode_fattr()
350 if (attr->ia_valid & ATTR_MODE) in encode_sattr()
351 *p++ = cpu_to_be32(attr->ia_mode); in encode_sattr()
354 if (attr->ia_valid & ATTR_UID) in encode_sattr()
355 *p++ = cpu_to_be32(attr->ia_uid); in encode_sattr()
358 if (attr->ia_valid & ATTR_GID) in encode_sattr()
359 *p++ = cpu_to_be32(attr->ia_gid); in encode_sattr()
362 if (attr->ia_valid & ATTR_SIZE) in encode_sattr()
363 *p++ = cpu_to_be32((u32)attr->ia_size); in encode_sattr()
367 if (attr->ia_valid & ATTR_ATIME_SET) in encode_sattr()
368 p = xdr_encode_time(p, &attr->ia_atime); in encode_sattr()
369 else if (attr->ia_valid & ATTR_ATIME) in encode_sattr()
370 p = xdr_encode_current_server_time(p, &attr->ia_atime); in encode_sattr()
373 if (attr->ia_valid & ATTR_MTIME_SET) in encode_sattr()
374 xdr_encode_time(p, &attr->ia_mtime); in encode_sattr()
375 else if (attr->ia_valid & ATTR_MTIME) in encode_sattr()
376 xdr_encode_current_server_time(p, &attr->ia_mtime); in encode_sattr()
416 return -ENAMETOOLONG; in decode_filename_inline()
419 return -EIO; in decode_filename_inline()
447 if (unlikely(length >= xdr->buf->page_len || length > NFS_MAXPATHLEN)) in decode_path()
449 hdrlen = (u8 *)xdr->p - (u8 *)xdr->iov->iov_base; in decode_path()
450 recvd = xdr->buf->len - hdrlen; in decode_path()
455 xdr_terminate_string(xdr->buf, length); in decode_path()
459 return -ENAMETOOLONG; in decode_path()
463 return -EIO; in decode_path()
466 return -EIO; in decode_path()
528 error = decode_fhandle(xdr, result->fh); in decode_diropok()
531 error = decode_fattr(xdr, result->fattr); in decode_diropok()
580 encode_fhandle(xdr, args->fh); in nfs2_xdr_enc_sattrargs()
581 encode_sattr(xdr, args->sattr); in nfs2_xdr_enc_sattrargs()
588 encode_diropargs(xdr, args->fh, args->name, args->len); in nfs2_xdr_enc_diropargs()
595 encode_fhandle(xdr, args->fh); in nfs2_xdr_enc_readlinkargs()
596 prepare_reply_buffer(req, args->pages, args->pgbase, in nfs2_xdr_enc_readlinkargs()
597 args->pglen, NFS_readlinkres_sz); in nfs2_xdr_enc_readlinkargs()
613 u32 offset = args->offset; in encode_readargs()
614 u32 count = args->count; in encode_readargs()
617 encode_fhandle(xdr, args->fh); in encode_readargs()
630 prepare_reply_buffer(req, args->pages, args->pgbase, in nfs2_xdr_enc_readargs()
631 args->count, NFS_readres_sz); in nfs2_xdr_enc_readargs()
632 req->rq_rcv_buf.flags |= XDRBUF_READ; in nfs2_xdr_enc_readargs()
649 u32 offset = args->offset; in encode_writeargs()
650 u32 count = args->count; in encode_writeargs()
653 encode_fhandle(xdr, args->fh); in encode_writeargs()
662 xdr_write_pages(xdr, args->pages, args->pgbase, count); in encode_writeargs()
670 xdr->buf->flags |= XDRBUF_WRITE; in nfs2_xdr_enc_writeargs()
685 encode_diropargs(xdr, args->fh, args->name, args->len); in nfs2_xdr_enc_createargs()
686 encode_sattr(xdr, args->sattr); in nfs2_xdr_enc_createargs()
693 encode_diropargs(xdr, args->fh, args->name.name, args->name.len); in nfs2_xdr_enc_removeargs()
708 const struct qstr *old = args->old_name; in nfs2_xdr_enc_renameargs()
709 const struct qstr *new = args->new_name; in nfs2_xdr_enc_renameargs()
711 encode_diropargs(xdr, args->old_dir, old->name, old->len); in nfs2_xdr_enc_renameargs()
712 encode_diropargs(xdr, args->new_dir, new->name, new->len); in nfs2_xdr_enc_renameargs()
727 encode_fhandle(xdr, args->fromfh); in nfs2_xdr_enc_linkargs()
728 encode_diropargs(xdr, args->tofh, args->toname, args->tolen); in nfs2_xdr_enc_linkargs()
744 encode_diropargs(xdr, args->fromfh, args->fromname, args->fromlen); in nfs2_xdr_enc_symlinkargs()
745 encode_path(xdr, args->pages, args->pathlen); in nfs2_xdr_enc_symlinkargs()
746 encode_sattr(xdr, args->sattr); in nfs2_xdr_enc_symlinkargs()
763 encode_fhandle(xdr, args->fh); in encode_readdirargs()
766 *p++ = cpu_to_be32(args->cookie); in encode_readdirargs()
767 *p = cpu_to_be32(args->count); in encode_readdirargs()
775 prepare_reply_buffer(req, args->pages, 0, in nfs2_xdr_enc_readdirargs()
776 args->count, NFS_readdirres_sz); in nfs2_xdr_enc_readdirargs()
865 error = decode_fattr(xdr, result->fattr); in nfs2_xdr_dec_readres()
879 result->verf->committed = NFS_FILE_SYNC; in nfs2_xdr_dec_writeres()
880 return decode_attrstat(xdr, result->fattr); in nfs2_xdr_dec_writeres()
884 * nfs2_decode_dirent - Decode a single NFSv2 directory entry stored in
890 * Returns zero if successful, otherwise a negative errno value is
893 * This function is not invoked during READDIR reply decoding, but
920 return -EAGAIN; in nfs2_decode_dirent()
921 entry->eof = 1; in nfs2_decode_dirent()
922 return -EBADCOOKIE; in nfs2_decode_dirent()
928 entry->ino = be32_to_cpup(p); in nfs2_decode_dirent()
930 error = decode_filename_inline(xdr, &entry->name, &entry->len); in nfs2_decode_dirent()
938 entry->prev_cookie = entry->cookie; in nfs2_decode_dirent()
942 entry->cookie = be32_to_cpup(p); in nfs2_decode_dirent()
944 entry->d_type = DT_UNKNOWN; in nfs2_decode_dirent()
950 return -EAGAIN; in nfs2_decode_dirent()
967 * touch them. The actual decoding is done by nfs2_decode_dirent()
975 pglen = xdr->buf->page_len; in decode_readdirok()
976 hdrlen = (u8 *)xdr->p - (u8 *)xdr->iov->iov_base; in decode_readdirok()
977 recvd = xdr->buf->len - hdrlen; in decode_readdirok()
1031 result->tsize = be32_to_cpup(p++); in decode_info()
1032 result->bsize = be32_to_cpup(p++); in decode_info()
1033 result->blocks = be32_to_cpup(p++); in decode_info()
1034 result->bfree = be32_to_cpup(p++); in decode_info()
1035 result->bavail = be32_to_cpup(p); in decode_info()
1039 return -EIO; in decode_info()
1070 { NFSERR_PERM, -EPERM },
1071 { NFSERR_NOENT, -ENOENT },
1072 { NFSERR_IO, -errno_NFSERR_IO},
1073 { NFSERR_NXIO, -ENXIO },
1074 /* { NFSERR_EAGAIN, -EAGAIN }, */
1075 { NFSERR_ACCES, -EACCES },
1076 { NFSERR_EXIST, -EEXIST },
1077 { NFSERR_XDEV, -EXDEV },
1078 { NFSERR_NODEV, -ENODEV },
1079 { NFSERR_NOTDIR, -ENOTDIR },
1080 { NFSERR_ISDIR, -EISDIR },
1081 { NFSERR_INVAL, -EINVAL },
1082 { NFSERR_FBIG, -EFBIG },
1083 { NFSERR_NOSPC, -ENOSPC },
1084 { NFSERR_ROFS, -EROFS },
1085 { NFSERR_MLINK, -EMLINK },
1086 { NFSERR_NAMETOOLONG, -ENAMETOOLONG },
1087 { NFSERR_NOTEMPTY, -ENOTEMPTY },
1088 { NFSERR_DQUOT, -EDQUOT },
1089 { NFSERR_STALE, -ESTALE },
1090 { NFSERR_REMOTE, -EREMOTE },
1092 { NFSERR_WFLUSH, -EWFLUSH },
1094 { NFSERR_BADHANDLE, -EBADHANDLE },
1095 { NFSERR_NOT_SYNC, -ENOTSYNC },
1096 { NFSERR_BAD_COOKIE, -EBADCOOKIE },
1097 { NFSERR_NOTSUPP, -ENOTSUPP },
1098 { NFSERR_TOOSMALL, -ETOOSMALL },
1099 { NFSERR_SERVERFAULT, -EREMOTEIO },
1100 { NFSERR_BADTYPE, -EBADTYPE },
1101 { NFSERR_JUKEBOX, -EJUKEBOX },
1102 { -1, -EIO }
1106 * nfs_stat_to_errno - convert an NFS status code to a local errno
1109 * Returns a local errno value, or -EIO if the NFS status code is
1110 * not recognized. This function is used jointly by NFSv2 and NFSv3.
1116 for (i = 0; nfs_errtbl[i].stat != -1; i++) { in nfs_stat_to_errno()