Lines Matching refs:xdr

135 static void encode_uint32(struct xdr_stream *xdr, u32 value)
137 __be32 *p = xdr_reserve_space(xdr, 4);
141 static int decode_uint32(struct xdr_stream *xdr, u32 *value)
145 p = xdr_inline_decode(xdr, 4);
152 static int decode_uint64(struct xdr_stream *xdr, u64 *value)
156 p = xdr_inline_decode(xdr, 8);
173 static int decode_fileid3(struct xdr_stream *xdr, u64 *fileid)
175 return decode_uint64(xdr, fileid);
183 static void encode_filename3(struct xdr_stream *xdr,
189 p = xdr_reserve_space(xdr, 4 + length);
193 static int decode_inline_filename3(struct xdr_stream *xdr,
199 p = xdr_inline_decode(xdr, 4);
205 p = xdr_inline_decode(xdr, count);
222 static void encode_nfspath3(struct xdr_stream *xdr, struct page **pages,
225 encode_uint32(xdr, length);
226 xdr_write_pages(xdr, pages, 0, length);
229 static int decode_nfspath3(struct xdr_stream *xdr)
234 p = xdr_inline_decode(xdr, 4);
238 if (unlikely(count >= xdr->buf->page_len || count > NFS3_MAXPATHLEN))
240 recvd = xdr_read_pages(xdr, count);
243 xdr_terminate_string(xdr->buf, count);
265 static int decode_cookie3(struct xdr_stream *xdr, u64 *cookie)
267 return decode_uint64(xdr, cookie);
281 static int decode_cookieverf3(struct xdr_stream *xdr, __be32 *verifier)
285 p = xdr_inline_decode(xdr, NFS3_COOKIEVERFSIZE);
297 static void encode_createverf3(struct xdr_stream *xdr, const __be32 *verifier)
301 p = xdr_reserve_space(xdr, NFS3_CREATEVERFSIZE);
305 static int decode_writeverf3(struct xdr_stream *xdr, struct nfs_write_verifier *verifier)
309 p = xdr_inline_decode(xdr, NFS3_WRITEVERFSIZE);
336 static int decode_nfsstat3(struct xdr_stream *xdr, enum nfs_stat *status)
340 p = xdr_inline_decode(xdr, 4);
349 trace_nfs_xdr_status(xdr, (int)*status);
366 static void encode_ftype3(struct xdr_stream *xdr, const u32 type)
368 encode_uint32(xdr, type);
390 static void encode_specdata3(struct xdr_stream *xdr, const dev_t rdev)
394 p = xdr_reserve_space(xdr, 8);
418 static void encode_nfs_fh3(struct xdr_stream *xdr, const struct nfs_fh *fh)
423 p = xdr_reserve_space(xdr, 4 + fh->size);
427 static int decode_nfs_fh3(struct xdr_stream *xdr, struct nfs_fh *fh)
432 p = xdr_inline_decode(xdr, 4);
438 p = xdr_inline_decode(xdr, length);
445 trace_nfs_xdr_bad_filehandle(xdr, NFSERR_BADHANDLE);
536 static void encode_sattr3(struct xdr_stream *xdr, const struct iattr *attr,
561 p = xdr_reserve_space(xdr, nbytes);
623 static int decode_fattr3(struct xdr_stream *xdr, struct nfs_fattr *fattr,
629 p = xdr_inline_decode(xdr, NFS3_fattr_sz << 2);
677 static int decode_post_op_attr(struct xdr_stream *xdr, struct nfs_fattr *fattr,
682 p = xdr_inline_decode(xdr, 4);
686 return decode_fattr3(xdr, fattr, userns);
698 static int decode_wcc_attr(struct xdr_stream *xdr, struct nfs_fattr *fattr)
702 p = xdr_inline_decode(xdr, NFS3_wcc_attr_sz << 2);
735 static int decode_pre_op_attr(struct xdr_stream *xdr, struct nfs_fattr *fattr)
739 p = xdr_inline_decode(xdr, 4);
743 return decode_wcc_attr(xdr, fattr);
747 static int decode_wcc_data(struct xdr_stream *xdr, struct nfs_fattr *fattr,
752 error = decode_pre_op_attr(xdr, fattr);
755 error = decode_post_op_attr(xdr, fattr, userns);
770 static int decode_post_op_fh3(struct xdr_stream *xdr, struct nfs_fh *fh)
772 __be32 *p = xdr_inline_decode(xdr, 4);
776 return decode_nfs_fh3(xdr, fh);
789 static void encode_diropargs3(struct xdr_stream *xdr, const struct nfs_fh *fh,
792 encode_nfs_fh3(xdr, fh);
793 encode_filename3(xdr, name, length);
812 struct xdr_stream *xdr,
817 encode_nfs_fh3(xdr, fh);
836 static void encode_sattrguard3(struct xdr_stream *xdr,
842 p = xdr_reserve_space(xdr, 4 + 8);
846 p = xdr_reserve_space(xdr, 4);
852 struct xdr_stream *xdr,
856 encode_nfs_fh3(xdr, args->fh);
857 encode_sattr3(xdr, args->sattr, rpc_rqst_userns(req));
858 encode_sattrguard3(xdr, args);
869 struct xdr_stream *xdr,
874 encode_diropargs3(xdr, args->fh, args->name, args->len);
885 static void encode_access3args(struct xdr_stream *xdr,
888 encode_nfs_fh3(xdr, args->fh);
889 encode_uint32(xdr, args->access);
893 struct xdr_stream *xdr,
898 encode_access3args(xdr, args);
909 struct xdr_stream *xdr,
914 encode_nfs_fh3(xdr, args->fh);
928 static void encode_read3args(struct xdr_stream *xdr,
933 encode_nfs_fh3(xdr, args->fh);
935 p = xdr_reserve_space(xdr, 8 + 4);
941 struct xdr_stream *xdr,
948 encode_read3args(xdr, args);
971 static void encode_write3args(struct xdr_stream *xdr,
976 encode_nfs_fh3(xdr, args->fh);
978 p = xdr_reserve_space(xdr, 8 + 4 + 4 + 4);
983 xdr_write_pages(xdr, args->pages, args->pgbase, args->count);
987 struct xdr_stream *xdr,
992 encode_write3args(xdr, args);
993 xdr->buf->flags |= XDRBUF_WRITE;
1018 static void encode_createhow3(struct xdr_stream *xdr,
1022 encode_uint32(xdr, args->createmode);
1026 encode_sattr3(xdr, args->sattr, userns);
1029 encode_createverf3(xdr, args->verifier);
1037 struct xdr_stream *xdr,
1042 encode_diropargs3(xdr, args->fh, args->name, args->len);
1043 encode_createhow3(xdr, args, rpc_rqst_userns(req));
1055 struct xdr_stream *xdr,
1060 encode_diropargs3(xdr, args->fh, args->name, args->len);
1061 encode_sattr3(xdr, args->sattr, rpc_rqst_userns(req));
1077 static void encode_symlinkdata3(struct xdr_stream *xdr,
1083 encode_sattr3(xdr, args->sattr, userns);
1084 encode_nfspath3(xdr, args->pages, args->pathlen);
1088 struct xdr_stream *xdr,
1093 encode_diropargs3(xdr, args->fromfh, args->fromname, args->fromlen);
1094 encode_symlinkdata3(xdr, args, rpc_rqst_userns(req));
1095 xdr->buf->flags |= XDRBUF_WRITE;
1122 static void encode_devicedata3(struct xdr_stream *xdr,
1126 encode_sattr3(xdr, args->sattr, userns);
1127 encode_specdata3(xdr, args->rdev);
1130 static void encode_mknoddata3(struct xdr_stream *xdr,
1134 encode_ftype3(xdr, args->type);
1138 encode_devicedata3(xdr, args, userns);
1142 encode_sattr3(xdr, args->sattr, userns);
1153 struct xdr_stream *xdr,
1158 encode_diropargs3(xdr, args->fh, args->name, args->len);
1159 encode_mknoddata3(xdr, args, rpc_rqst_userns(req));
1170 struct xdr_stream *xdr,
1175 encode_diropargs3(xdr, args->fh, args->name.name, args->name.len);
1187 struct xdr_stream *xdr,
1194 encode_diropargs3(xdr, args->old_dir, old->name, old->len);
1195 encode_diropargs3(xdr, args->new_dir, new->name, new->len);
1207 struct xdr_stream *xdr,
1212 encode_nfs_fh3(xdr, args->fromfh);
1213 encode_diropargs3(xdr, args->tofh, args->toname, args->tolen);
1226 static void encode_readdir3args(struct xdr_stream *xdr,
1231 encode_nfs_fh3(xdr, args->fh);
1233 p = xdr_reserve_space(xdr, 8 + NFS3_COOKIEVERFSIZE + 4);
1240 struct xdr_stream *xdr,
1245 encode_readdir3args(xdr, args);
1261 static void encode_readdirplus3args(struct xdr_stream *xdr,
1268 encode_nfs_fh3(xdr, args->fh);
1270 p = xdr_reserve_space(xdr, 8 + NFS3_COOKIEVERFSIZE + 4 + 4);
1283 struct xdr_stream *xdr,
1288 encode_readdirplus3args(xdr, args);
1302 static void encode_commit3args(struct xdr_stream *xdr,
1307 encode_nfs_fh3(xdr, args->fh);
1309 p = xdr_reserve_space(xdr, 8 + 4);
1315 struct xdr_stream *xdr,
1320 encode_commit3args(xdr, args);
1326 struct xdr_stream *xdr,
1331 encode_nfs_fh3(xdr, args->fh);
1332 encode_uint32(xdr, args->mask);
1342 struct xdr_stream *xdr,
1349 encode_nfs_fh3(xdr, NFS_FH(args->inode));
1350 encode_uint32(xdr, args->mask);
1354 xdr_write_pages(xdr, args->pages, 0, args->len);
1356 xdr_reserve_space(xdr, args->len);
1358 error = nfsacl_encode(xdr->buf, base, args->inode,
1363 error = nfsacl_encode(xdr->buf, base + error, args->inode,
1394 struct xdr_stream *xdr,
1400 error = decode_nfsstat3(xdr, &status);
1405 error = decode_fattr3(xdr, result, rpc_rqst_userns(req));
1431 struct xdr_stream *xdr,
1437 error = decode_nfsstat3(xdr, &status);
1440 error = decode_wcc_data(xdr, result, rpc_rqst_userns(req));
1472 struct xdr_stream *xdr,
1480 error = decode_nfsstat3(xdr, &status);
1485 error = decode_nfs_fh3(xdr, result->fh);
1488 error = decode_post_op_attr(xdr, result->fattr, userns);
1491 error = decode_post_op_attr(xdr, result->dir_attr, userns);
1495 error = decode_post_op_attr(xdr, result->dir_attr, userns);
1521 struct xdr_stream *xdr,
1528 error = decode_nfsstat3(xdr, &status);
1531 error = decode_post_op_attr(xdr, result->fattr, rpc_rqst_userns(req));
1536 error = decode_uint32(xdr, &result->access);
1563 struct xdr_stream *xdr,
1569 error = decode_nfsstat3(xdr, &status);
1572 error = decode_post_op_attr(xdr, result, rpc_rqst_userns(req));
1577 error = decode_nfspath3(xdr);
1605 static int decode_read3resok(struct xdr_stream *xdr,
1611 p = xdr_inline_decode(xdr, 4 + 4 + 4);
1619 recvd = xdr_read_pages(xdr, count);
1638 static int nfs3_xdr_dec_read3res(struct rpc_rqst *req, struct xdr_stream *xdr,
1646 pos = xdr_stream_pos(xdr);
1647 error = decode_nfsstat3(xdr, &status);
1650 error = decode_post_op_attr(xdr, result->fattr, rpc_rqst_userns(req));
1656 result->replen = 3 + ((xdr_stream_pos(xdr) - pos) >> 2);
1657 error = decode_read3resok(xdr, result);
1691 static int decode_write3resok(struct xdr_stream *xdr,
1696 p = xdr_inline_decode(xdr, 4 + 4);
1703 if (decode_writeverf3(xdr, &result->verf->verifier))
1711 static int nfs3_xdr_dec_write3res(struct rpc_rqst *req, struct xdr_stream *xdr,
1718 error = decode_nfsstat3(xdr, &status);
1721 error = decode_wcc_data(xdr, result->fattr, rpc_rqst_userns(req));
1727 error = decode_write3resok(xdr, result);
1754 static int decode_create3resok(struct xdr_stream *xdr,
1760 error = decode_post_op_fh3(xdr, result->fh);
1763 error = decode_post_op_attr(xdr, result->fattr, userns);
1772 error = decode_wcc_data(xdr, result->dir_attr, userns);
1778 struct xdr_stream *xdr,
1786 error = decode_nfsstat3(xdr, &status);
1791 error = decode_create3resok(xdr, result, userns);
1795 error = decode_wcc_data(xdr, result->dir_attr, userns);
1820 struct xdr_stream *xdr,
1827 error = decode_nfsstat3(xdr, &status);
1830 error = decode_wcc_data(xdr, result->dir_attr, rpc_rqst_userns(req));
1862 struct xdr_stream *xdr,
1870 error = decode_nfsstat3(xdr, &status);
1873 error = decode_wcc_data(xdr, result->old_fattr, userns);
1876 error = decode_wcc_data(xdr, result->new_fattr, userns);
1907 static int nfs3_xdr_dec_link3res(struct rpc_rqst *req, struct xdr_stream *xdr,
1915 error = decode_nfsstat3(xdr, &status);
1918 error = decode_post_op_attr(xdr, result->fattr, userns);
1921 error = decode_wcc_data(xdr, result->dir_attr, userns);
1935 * @xdr: XDR stream where entry resides
1967 int nfs3_decode_dirent(struct xdr_stream *xdr, struct nfs_entry *entry,
1975 p = xdr_inline_decode(xdr, 4);
1979 p = xdr_inline_decode(xdr, 4);
1988 error = decode_fileid3(xdr, &entry->ino);
1992 error = decode_inline_filename3(xdr, &entry->name, &entry->len);
1996 error = decode_cookie3(xdr, &new_cookie);
2004 error = decode_post_op_attr(xdr, entry->fattr, userns);
2016 p = xdr_inline_decode(xdr, 4);
2020 error = decode_nfs_fh3(xdr, entry->fh);
2061 static int decode_dirlist3(struct xdr_stream *xdr)
2063 return xdr_read_pages(xdr, xdr->buf->page_len);
2066 static int decode_readdir3resok(struct xdr_stream *xdr,
2072 error = decode_post_op_attr(xdr, result->dir_attr, userns);
2076 error = decode_cookieverf3(xdr, result->verf);
2079 error = decode_dirlist3(xdr);
2085 struct xdr_stream *xdr,
2092 error = decode_nfsstat3(xdr, &status);
2097 error = decode_readdir3resok(xdr, result, rpc_rqst_userns(req));
2101 error = decode_post_op_attr(xdr, result->dir_attr, rpc_rqst_userns(req));
2132 static int decode_fsstat3resok(struct xdr_stream *xdr,
2137 p = xdr_inline_decode(xdr, 8 * 6 + 4);
2151 struct xdr_stream *xdr,
2158 error = decode_nfsstat3(xdr, &status);
2161 error = decode_post_op_attr(xdr, result->fattr, rpc_rqst_userns(req));
2166 error = decode_fsstat3resok(xdr, result);
2201 static int decode_fsinfo3resok(struct xdr_stream *xdr,
2206 p = xdr_inline_decode(xdr, 4 * 7 + 8 + 8 + 4);
2227 struct xdr_stream *xdr,
2234 error = decode_nfsstat3(xdr, &status);
2237 error = decode_post_op_attr(xdr, result->fattr, rpc_rqst_userns(req));
2242 error = decode_fsinfo3resok(xdr, result);
2273 static int decode_pathconf3resok(struct xdr_stream *xdr,
2278 p = xdr_inline_decode(xdr, 4 * 6);
2288 struct xdr_stream *xdr,
2295 error = decode_nfsstat3(xdr, &status);
2298 error = decode_post_op_attr(xdr, result->fattr, rpc_rqst_userns(req));
2303 error = decode_pathconf3resok(xdr, result);
2330 struct xdr_stream *xdr,
2338 error = decode_nfsstat3(xdr, &status);
2341 error = decode_wcc_data(xdr, result->fattr, rpc_rqst_userns(req));
2347 error = decode_writeverf3(xdr, &verf->verifier);
2358 static inline int decode_getacl3resok(struct xdr_stream *xdr,
2367 error = decode_post_op_attr(xdr, result->fattr, userns);
2370 error = decode_uint32(xdr, &result->mask);
2377 hdrlen = xdr_stream_pos(xdr);
2385 error = nfsacl_decode(xdr->buf, hdrlen, aclcnt, acl);
2395 error = nfsacl_decode(xdr->buf, hdrlen + error, aclcnt, acl);
2404 struct xdr_stream *xdr,
2410 error = decode_nfsstat3(xdr, &status);
2415 error = decode_getacl3resok(xdr, result, rpc_rqst_userns(req));
2423 struct xdr_stream *xdr,
2429 error = decode_nfsstat3(xdr, &status);
2434 error = decode_post_op_attr(xdr, result, rpc_rqst_userns(req));