Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v5.0 321 lines 7.3 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * XDR types for NFSv3 in nfsd. 4 * 5 * Copyright (C) 1996-1998, Olaf Kirch <okir@monad.swb.de> 6 */ 7 8#ifndef _LINUX_NFSD_XDR3_H 9#define _LINUX_NFSD_XDR3_H 10 11#include "xdr.h" 12 13struct nfsd3_sattrargs { 14 struct svc_fh fh; 15 struct iattr attrs; 16 int check_guard; 17 time_t guardtime; 18}; 19 20struct nfsd3_diropargs { 21 struct svc_fh fh; 22 char * name; 23 unsigned int len; 24}; 25 26struct nfsd3_accessargs { 27 struct svc_fh fh; 28 unsigned int access; 29}; 30 31struct nfsd3_readargs { 32 struct svc_fh fh; 33 __u64 offset; 34 __u32 count; 35 int vlen; 36}; 37 38struct nfsd3_writeargs { 39 svc_fh fh; 40 __u64 offset; 41 __u32 count; 42 int stable; 43 __u32 len; 44 struct kvec first; 45}; 46 47struct nfsd3_createargs { 48 struct svc_fh fh; 49 char * name; 50 unsigned int len; 51 int createmode; 52 struct iattr attrs; 53 __be32 * verf; 54}; 55 56struct nfsd3_mknodargs { 57 struct svc_fh fh; 58 char * name; 59 unsigned int len; 60 __u32 ftype; 61 __u32 major, minor; 62 struct iattr attrs; 63}; 64 65struct nfsd3_renameargs { 66 struct svc_fh ffh; 67 char * fname; 68 unsigned int flen; 69 struct svc_fh tfh; 70 char * tname; 71 unsigned int tlen; 72}; 73 74struct nfsd3_readlinkargs { 75 struct svc_fh fh; 76 char * buffer; 77}; 78 79struct nfsd3_linkargs { 80 struct svc_fh ffh; 81 struct svc_fh tfh; 82 char * tname; 83 unsigned int tlen; 84}; 85 86struct nfsd3_symlinkargs { 87 struct svc_fh ffh; 88 char * fname; 89 unsigned int flen; 90 char * tname; 91 unsigned int tlen; 92 struct iattr attrs; 93 struct kvec first; 94}; 95 96struct nfsd3_readdirargs { 97 struct svc_fh fh; 98 __u64 cookie; 99 __u32 dircount; 100 __u32 count; 101 __be32 * verf; 102 __be32 * buffer; 103}; 104 105struct nfsd3_commitargs { 106 struct svc_fh fh; 107 __u64 offset; 108 __u32 count; 109}; 110 111struct nfsd3_getaclargs { 112 struct svc_fh fh; 113 int mask; 114}; 115 116struct posix_acl; 117struct nfsd3_setaclargs { 118 struct svc_fh fh; 119 int mask; 120 struct posix_acl *acl_access; 121 struct posix_acl *acl_default; 122}; 123 124struct nfsd3_attrstat { 125 __be32 status; 126 struct svc_fh fh; 127 struct kstat stat; 128}; 129 130/* LOOKUP, CREATE, MKDIR, SYMLINK, MKNOD */ 131struct nfsd3_diropres { 132 __be32 status; 133 struct svc_fh dirfh; 134 struct svc_fh fh; 135}; 136 137struct nfsd3_accessres { 138 __be32 status; 139 struct svc_fh fh; 140 __u32 access; 141 struct kstat stat; 142}; 143 144struct nfsd3_readlinkres { 145 __be32 status; 146 struct svc_fh fh; 147 __u32 len; 148}; 149 150struct nfsd3_readres { 151 __be32 status; 152 struct svc_fh fh; 153 unsigned long count; 154 int eof; 155}; 156 157struct nfsd3_writeres { 158 __be32 status; 159 struct svc_fh fh; 160 unsigned long count; 161 int committed; 162}; 163 164struct nfsd3_renameres { 165 __be32 status; 166 struct svc_fh ffh; 167 struct svc_fh tfh; 168}; 169 170struct nfsd3_linkres { 171 __be32 status; 172 struct svc_fh tfh; 173 struct svc_fh fh; 174}; 175 176struct nfsd3_readdirres { 177 __be32 status; 178 struct svc_fh fh; 179 /* Just to save kmalloc on every readdirplus entry (svc_fh is a 180 * little large for the stack): */ 181 struct svc_fh scratch; 182 int count; 183 __be32 verf[2]; 184 185 struct readdir_cd common; 186 __be32 * buffer; 187 int buflen; 188 __be32 * offset; 189 __be32 * offset1; 190 struct svc_rqst * rqstp; 191 192}; 193 194struct nfsd3_fsstatres { 195 __be32 status; 196 struct kstatfs stats; 197 __u32 invarsec; 198}; 199 200struct nfsd3_fsinfores { 201 __be32 status; 202 __u32 f_rtmax; 203 __u32 f_rtpref; 204 __u32 f_rtmult; 205 __u32 f_wtmax; 206 __u32 f_wtpref; 207 __u32 f_wtmult; 208 __u32 f_dtpref; 209 __u64 f_maxfilesize; 210 __u32 f_properties; 211}; 212 213struct nfsd3_pathconfres { 214 __be32 status; 215 __u32 p_link_max; 216 __u32 p_name_max; 217 __u32 p_no_trunc; 218 __u32 p_chown_restricted; 219 __u32 p_case_insensitive; 220 __u32 p_case_preserving; 221}; 222 223struct nfsd3_commitres { 224 __be32 status; 225 struct svc_fh fh; 226}; 227 228struct nfsd3_getaclres { 229 __be32 status; 230 struct svc_fh fh; 231 int mask; 232 struct posix_acl *acl_access; 233 struct posix_acl *acl_default; 234 struct kstat stat; 235}; 236 237/* dummy type for release */ 238struct nfsd3_fhandle_pair { 239 __u32 dummy; 240 struct svc_fh fh1; 241 struct svc_fh fh2; 242}; 243 244/* 245 * Storage requirements for XDR arguments and results. 246 */ 247union nfsd3_xdrstore { 248 struct nfsd3_sattrargs sattrargs; 249 struct nfsd3_diropargs diropargs; 250 struct nfsd3_readargs readargs; 251 struct nfsd3_writeargs writeargs; 252 struct nfsd3_createargs createargs; 253 struct nfsd3_renameargs renameargs; 254 struct nfsd3_linkargs linkargs; 255 struct nfsd3_symlinkargs symlinkargs; 256 struct nfsd3_readdirargs readdirargs; 257 struct nfsd3_diropres diropres; 258 struct nfsd3_accessres accessres; 259 struct nfsd3_readlinkres readlinkres; 260 struct nfsd3_readres readres; 261 struct nfsd3_writeres writeres; 262 struct nfsd3_renameres renameres; 263 struct nfsd3_linkres linkres; 264 struct nfsd3_readdirres readdirres; 265 struct nfsd3_fsstatres fsstatres; 266 struct nfsd3_fsinfores fsinfores; 267 struct nfsd3_pathconfres pathconfres; 268 struct nfsd3_commitres commitres; 269 struct nfsd3_getaclres getaclres; 270}; 271 272#define NFS3_SVC_XDRSIZE sizeof(union nfsd3_xdrstore) 273 274int nfs3svc_decode_fhandle(struct svc_rqst *, __be32 *); 275int nfs3svc_decode_sattrargs(struct svc_rqst *, __be32 *); 276int nfs3svc_decode_diropargs(struct svc_rqst *, __be32 *); 277int nfs3svc_decode_accessargs(struct svc_rqst *, __be32 *); 278int nfs3svc_decode_readargs(struct svc_rqst *, __be32 *); 279int nfs3svc_decode_writeargs(struct svc_rqst *, __be32 *); 280int nfs3svc_decode_createargs(struct svc_rqst *, __be32 *); 281int nfs3svc_decode_mkdirargs(struct svc_rqst *, __be32 *); 282int nfs3svc_decode_mknodargs(struct svc_rqst *, __be32 *); 283int nfs3svc_decode_renameargs(struct svc_rqst *, __be32 *); 284int nfs3svc_decode_readlinkargs(struct svc_rqst *, __be32 *); 285int nfs3svc_decode_linkargs(struct svc_rqst *, __be32 *); 286int nfs3svc_decode_symlinkargs(struct svc_rqst *, __be32 *); 287int nfs3svc_decode_readdirargs(struct svc_rqst *, __be32 *); 288int nfs3svc_decode_readdirplusargs(struct svc_rqst *, __be32 *); 289int nfs3svc_decode_commitargs(struct svc_rqst *, __be32 *); 290int nfs3svc_encode_voidres(struct svc_rqst *, __be32 *); 291int nfs3svc_encode_attrstat(struct svc_rqst *, __be32 *); 292int nfs3svc_encode_wccstat(struct svc_rqst *, __be32 *); 293int nfs3svc_encode_diropres(struct svc_rqst *, __be32 *); 294int nfs3svc_encode_accessres(struct svc_rqst *, __be32 *); 295int nfs3svc_encode_readlinkres(struct svc_rqst *, __be32 *); 296int nfs3svc_encode_readres(struct svc_rqst *, __be32 *); 297int nfs3svc_encode_writeres(struct svc_rqst *, __be32 *); 298int nfs3svc_encode_createres(struct svc_rqst *, __be32 *); 299int nfs3svc_encode_renameres(struct svc_rqst *, __be32 *); 300int nfs3svc_encode_linkres(struct svc_rqst *, __be32 *); 301int nfs3svc_encode_readdirres(struct svc_rqst *, __be32 *); 302int nfs3svc_encode_fsstatres(struct svc_rqst *, __be32 *); 303int nfs3svc_encode_fsinfores(struct svc_rqst *, __be32 *); 304int nfs3svc_encode_pathconfres(struct svc_rqst *, __be32 *); 305int nfs3svc_encode_commitres(struct svc_rqst *, __be32 *); 306 307void nfs3svc_release_fhandle(struct svc_rqst *); 308void nfs3svc_release_fhandle2(struct svc_rqst *); 309int nfs3svc_encode_entry(void *, const char *name, 310 int namlen, loff_t offset, u64 ino, 311 unsigned int); 312int nfs3svc_encode_entry_plus(void *, const char *name, 313 int namlen, loff_t offset, u64 ino, 314 unsigned int); 315/* Helper functions for NFSv3 ACL code */ 316__be32 *nfs3svc_encode_post_op_attr(struct svc_rqst *rqstp, __be32 *p, 317 struct svc_fh *fhp); 318__be32 *nfs3svc_decode_fh(__be32 *p, struct svc_fh *fhp); 319 320 321#endif /* _LINUX_NFSD_XDR3_H */