static void nfs3_xdr_enc_setacl3args(struct rpc_rqst *req, struct xdr_stream *xdr, const struct nfs3_setaclargs *args) { unsigned int base; int error; encode_nfs_fh3(xdr, NFS_FH(args->inode)); encode_uint32(xdr, args->mask); base = req->rq_slen; if (args->npages != 0) xdr_write_pages(xdr, args->pages, 0, args->len); else xdr_reserve_space(xdr, NFS_ACL_INLINE_BUFSIZE); error = nfsacl_encode(xdr->buf, base, args->inode, (args->mask & NFS_ACL) ? args->acl_access : NULL, 1, 0); BUG_ON(error < 0); error = nfsacl_encode(xdr->buf, base + error, args->inode, (args->mask & NFS_DFACL) ? args->acl_default : NULL, 1, NFS_ACL_DEFAULT); BUG_ON(error < 0); }
static void encode_nfspath3(struct xdr_stream *xdr, struct page **pages, const u32 length) { BUG_ON(length > NFS3_MAXPATHLEN); encode_uint32(xdr, length); xdr_write_pages(xdr, pages, 0, length); }
/* * 2.3.8. path * * typedef string path<MAXPATHLEN>; */ static void encode_path(struct xdr_stream *xdr, struct page **pages, u32 length) { __be32 *p; p = xdr_reserve_space(xdr, 4); *p = cpu_to_be32(length); xdr_write_pages(xdr, pages, 0, length); }
static void encode_write3args(struct xdr_stream *xdr, const struct nfs_writeargs *args) { __be32 *p; encode_nfs_fh3(xdr, args->fh); p = xdr_reserve_space(xdr, 8 + 4 + 4 + 4); p = xdr_encode_hyper(p, args->offset); *p++ = cpu_to_be32(args->count); *p++ = cpu_to_be32(args->stable); *p = cpu_to_be32(args->count); xdr_write_pages(xdr, args->pages, args->pgbase, args->count); }
static int gssx_enc_in_token(struct xdr_stream *xdr, const struct gssp_in_token *in) { __be32 *p; p = xdr_reserve_space(xdr, 4); if (!p) return -ENOSPC; *p = cpu_to_be32(in->page_len); /* all we need to do is to write pages */ xdr_write_pages(xdr, in->pages, in->page_base, in->page_len); return 0; }
/* * 2.2.9. writeargs * * struct writeargs { * fhandle file; * unsigned beginoffset; * unsigned offset; * unsigned totalcount; * nfsdata data; * }; */ static void encode_writeargs(struct xdr_stream *xdr, const struct nfs_writeargs *args) { u32 offset = args->offset; u32 count = args->count; __be32 *p; encode_fhandle(xdr, args->fh); p = xdr_reserve_space(xdr, 4 + 4 + 4 + 4); *p++ = cpu_to_be32(offset); *p++ = cpu_to_be32(offset); *p++ = cpu_to_be32(count); /* nfsdata */ *p = cpu_to_be32(count); xdr_write_pages(xdr, args->pages, args->pgbase, count); }