Blame view
fs/nfsd/nfsd.h
14.8 KB
1da177e4c Linux-2.6.12-rc2 |
1 |
/* |
1da177e4c Linux-2.6.12-rc2 |
2 3 4 5 6 7 8 9 |
* Hodge-podge collection of knfsd-related stuff. * I will sort this out later. * * Copyright (C) 1995-1997 Olaf Kirch <okir@monad.swb.de> */ #ifndef LINUX_NFSD_NFSD_H #define LINUX_NFSD_NFSD_H |
1da177e4c Linux-2.6.12-rc2 |
10 |
#include <linux/types.h> |
1da177e4c Linux-2.6.12-rc2 |
11 |
#include <linux/mount.h> |
c10bd39d8 Remove include/li... |
12 13 14 15 16 |
#include <linux/nfs.h> #include <linux/nfs2.h> #include <linux/nfs3.h> #include <linux/nfs4.h> #include <linux/sunrpc/msg_prot.h> |
1da177e4c Linux-2.6.12-rc2 |
17 |
#include <linux/nfsd/debug.h> |
1da177e4c Linux-2.6.12-rc2 |
18 |
#include <linux/nfsd/export.h> |
1da177e4c Linux-2.6.12-rc2 |
19 |
#include <linux/nfsd/stats.h> |
c10bd39d8 Remove include/li... |
20 |
|
1da177e4c Linux-2.6.12-rc2 |
21 22 23 |
/* * nfsd version */ |
f3ec22b5b nfsd41: provide s... |
24 |
#define NFSD_SUPPORTED_MINOR_VERSION 1 |
c10bd39d8 Remove include/li... |
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
/* * Maximum blocksizes supported by daemon under various circumstances. */ #define NFSSVC_MAXBLKSIZE RPCSVC_MAXPAYLOAD /* NFSv2 is limited by the protocol specification, see RFC 1094 */ #define NFSSVC_MAXBLKSIZE_V2 (8*1024) /* * Largest number of bytes we need to allocate for an NFS * call or reply. Used to control buffer sizes. We use * the length of v3 WRITE, READDIR and READDIR replies * which are an RPC header, up to 26 XDR units of reply * data, and some page data. * * Note that accuracy here doesn't matter too much as the * size is rounded up to a page size when allocating space. */ #define NFSD_BUFSIZE ((RPC_MAX_HEADER_WITH_AUTH+26)*XDR_UNIT + NFSSVC_MAXBLKSIZE) |
1da177e4c Linux-2.6.12-rc2 |
44 |
|
1da177e4c Linux-2.6.12-rc2 |
45 |
struct readdir_cd { |
131a21c21 [PATCH] xdr annot... |
46 |
__be32 err; /* 0, nfserr, or nfserr_eof */ |
1da177e4c Linux-2.6.12-rc2 |
47 |
}; |
0a3adadee nfsd: make fs/nfs... |
48 |
|
1da177e4c Linux-2.6.12-rc2 |
49 50 51 52 |
extern struct svc_program nfsd_program; extern struct svc_version nfsd_version2, nfsd_version3, nfsd_version4; |
8daf220a6 nfsd41: control n... |
53 |
extern u32 nfsd_supported_minorversion; |
bedbdd8ba knfsd: Replace lo... |
54 |
extern struct mutex nfsd_mutex; |
70c3b76c2 [PATCH] knfsd: Al... |
55 |
extern struct svc_serv *nfsd_serv; |
4bd9b0f4a nfsd41: use globa... |
56 |
extern spinlock_t nfsd_drc_lock; |
0c193054a nfsd41: hange fro... |
57 58 |
extern unsigned int nfsd_drc_max_mem; extern unsigned int nfsd_drc_mem_used; |
a254b246e nfsd: fix sparse ... |
59 |
|
88e9d34c7 seq_file: constif... |
60 |
extern const struct seq_operations nfs_exports_op; |
a254b246e nfsd: fix sparse ... |
61 |
|
1da177e4c Linux-2.6.12-rc2 |
62 63 64 65 |
/* * Function prototypes. */ int nfsd_svc(unsigned short port, int nrservs); |
c7afef1f9 [PATCH] nfsd: mis... |
66 |
int nfsd_dispatch(struct svc_rqst *rqstp, __be32 *statp); |
1da177e4c Linux-2.6.12-rc2 |
67 |
|
a254b246e nfsd: fix sparse ... |
68 69 70 71 |
int nfsd_nrthreads(void); int nfsd_nrpools(void); int nfsd_get_nrthreads(int n, int *); int nfsd_set_nrthreads(int n, int *); |
a257cdd0e [PATCH] NFSD: Add... |
72 73 74 75 76 77 78 79 80 81 82 |
#if defined(CONFIG_NFSD_V2_ACL) || defined(CONFIG_NFSD_V3_ACL) #ifdef CONFIG_NFSD_V2_ACL extern struct svc_version nfsd_acl_version2; #else #define nfsd_acl_version2 NULL #endif #ifdef CONFIG_NFSD_V3_ACL extern struct svc_version nfsd_acl_version3; #else #define nfsd_acl_version3 NULL #endif |
a257cdd0e [PATCH] NFSD: Add... |
83 |
#endif |
6658d3a7b [PATCH] knfsd: re... |
84 85 |
enum vers_op {NFSD_SET, NFSD_CLEAR, NFSD_TEST, NFSD_AVAIL }; int nfsd_vers(int vers, enum vers_op change); |
8daf220a6 nfsd41: control n... |
86 |
int nfsd_minorversion(u32 minorversion, enum vers_op change); |
6658d3a7b [PATCH] knfsd: re... |
87 |
void nfsd_reset_versions(void); |
b41b66d63 [PATCH] knfsd: al... |
88 |
int nfsd_create_serv(void); |
6658d3a7b [PATCH] knfsd: re... |
89 |
|
596bbe53e [PATCH] knfsd: Al... |
90 |
extern int nfsd_max_blksize; |
1da177e4c Linux-2.6.12-rc2 |
91 |
|
03a816b46 nfsd: restrict fi... |
92 93 94 95 |
static inline int nfsd_v4client(struct svc_rqst *rq) { return rq->rq_prog == NFS_PROGRAM && rq->rq_vers == 4; } |
1da177e4c Linux-2.6.12-rc2 |
96 97 98 99 |
/* * NFSv4 State */ #ifdef CONFIG_NFSD_V4 |
c2f1a551d knfsd: nfsd4: var... |
100 |
extern unsigned int max_delegations; |
720833960 NFSD: Call nfsd4_... |
101 102 |
void nfs4_state_init(void); int nfsd4_init_slabs(void); |
e8ff2a845 knfsd: move nfsv4... |
103 |
void nfsd4_free_slabs(void); |
29ab23cc5 nfsd4: allow nfs4... |
104 |
int nfs4_state_start(void); |
1da177e4c Linux-2.6.12-rc2 |
105 |
void nfs4_state_shutdown(void); |
1da177e4c Linux-2.6.12-rc2 |
106 |
void nfs4_reset_lease(time_t leasetime); |
0964a3d3f [PATCH] knfsd: nf... |
107 |
int nfs4_reset_recoverydir(char *recdir); |
1da177e4c Linux-2.6.12-rc2 |
108 |
#else |
720833960 NFSD: Call nfsd4_... |
109 110 |
static inline void nfs4_state_init(void) { } static inline int nfsd4_init_slabs(void) { return 0; } |
e8ff2a845 knfsd: move nfsv4... |
111 |
static inline void nfsd4_free_slabs(void) { } |
c0826574d nfsd: return succ... |
112 |
static inline int nfs4_state_start(void) { return 0; } |
e8ff2a845 knfsd: move nfsv4... |
113 |
static inline void nfs4_state_shutdown(void) { } |
e8ff2a845 knfsd: move nfsv4... |
114 115 |
static inline void nfs4_reset_lease(time_t leasetime) { } static inline int nfs4_reset_recoverydir(char *recdir) { return 0; } |
1da177e4c Linux-2.6.12-rc2 |
116 117 118 119 120 121 122 123 124 125 126 127 |
#endif /* * lockd binding */ void nfsd_lockd_init(void); void nfsd_lockd_shutdown(void); /* * These macros provide pre-xdr'ed values for faster operation. */ |
77f18f5e4 nfs: replace uses... |
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
#define nfs_ok cpu_to_be32(NFS_OK) #define nfserr_perm cpu_to_be32(NFSERR_PERM) #define nfserr_noent cpu_to_be32(NFSERR_NOENT) #define nfserr_io cpu_to_be32(NFSERR_IO) #define nfserr_nxio cpu_to_be32(NFSERR_NXIO) #define nfserr_eagain cpu_to_be32(NFSERR_EAGAIN) #define nfserr_acces cpu_to_be32(NFSERR_ACCES) #define nfserr_exist cpu_to_be32(NFSERR_EXIST) #define nfserr_xdev cpu_to_be32(NFSERR_XDEV) #define nfserr_nodev cpu_to_be32(NFSERR_NODEV) #define nfserr_notdir cpu_to_be32(NFSERR_NOTDIR) #define nfserr_isdir cpu_to_be32(NFSERR_ISDIR) #define nfserr_inval cpu_to_be32(NFSERR_INVAL) #define nfserr_fbig cpu_to_be32(NFSERR_FBIG) #define nfserr_nospc cpu_to_be32(NFSERR_NOSPC) #define nfserr_rofs cpu_to_be32(NFSERR_ROFS) #define nfserr_mlink cpu_to_be32(NFSERR_MLINK) #define nfserr_opnotsupp cpu_to_be32(NFSERR_OPNOTSUPP) #define nfserr_nametoolong cpu_to_be32(NFSERR_NAMETOOLONG) #define nfserr_notempty cpu_to_be32(NFSERR_NOTEMPTY) #define nfserr_dquot cpu_to_be32(NFSERR_DQUOT) #define nfserr_stale cpu_to_be32(NFSERR_STALE) #define nfserr_remote cpu_to_be32(NFSERR_REMOTE) #define nfserr_wflush cpu_to_be32(NFSERR_WFLUSH) #define nfserr_badhandle cpu_to_be32(NFSERR_BADHANDLE) #define nfserr_notsync cpu_to_be32(NFSERR_NOT_SYNC) #define nfserr_badcookie cpu_to_be32(NFSERR_BAD_COOKIE) #define nfserr_notsupp cpu_to_be32(NFSERR_NOTSUPP) #define nfserr_toosmall cpu_to_be32(NFSERR_TOOSMALL) #define nfserr_serverfault cpu_to_be32(NFSERR_SERVERFAULT) #define nfserr_badtype cpu_to_be32(NFSERR_BADTYPE) #define nfserr_jukebox cpu_to_be32(NFSERR_JUKEBOX) #define nfserr_denied cpu_to_be32(NFSERR_DENIED) #define nfserr_deadlock cpu_to_be32(NFSERR_DEADLOCK) #define nfserr_expired cpu_to_be32(NFSERR_EXPIRED) #define nfserr_bad_cookie cpu_to_be32(NFSERR_BAD_COOKIE) #define nfserr_same cpu_to_be32(NFSERR_SAME) #define nfserr_clid_inuse cpu_to_be32(NFSERR_CLID_INUSE) #define nfserr_stale_clientid cpu_to_be32(NFSERR_STALE_CLIENTID) #define nfserr_resource cpu_to_be32(NFSERR_RESOURCE) #define nfserr_moved cpu_to_be32(NFSERR_MOVED) #define nfserr_nofilehandle cpu_to_be32(NFSERR_NOFILEHANDLE) #define nfserr_minor_vers_mismatch cpu_to_be32(NFSERR_MINOR_VERS_MISMATCH) #define nfserr_share_denied cpu_to_be32(NFSERR_SHARE_DENIED) #define nfserr_stale_stateid cpu_to_be32(NFSERR_STALE_STATEID) #define nfserr_old_stateid cpu_to_be32(NFSERR_OLD_STATEID) #define nfserr_bad_stateid cpu_to_be32(NFSERR_BAD_STATEID) #define nfserr_bad_seqid cpu_to_be32(NFSERR_BAD_SEQID) #define nfserr_symlink cpu_to_be32(NFSERR_SYMLINK) #define nfserr_not_same cpu_to_be32(NFSERR_NOT_SAME) |
f9d7562fd nfsd4: share file... |
178 |
#define nfserr_lock_range cpu_to_be32(NFSERR_LOCK_RANGE) |
77f18f5e4 nfs: replace uses... |
179 180 181 182 |
#define nfserr_restorefh cpu_to_be32(NFSERR_RESTOREFH) #define nfserr_attrnotsupp cpu_to_be32(NFSERR_ATTRNOTSUPP) #define nfserr_bad_xdr cpu_to_be32(NFSERR_BAD_XDR) #define nfserr_openmode cpu_to_be32(NFSERR_OPENMODE) |
f6af99ec1 nfsd4: name->id m... |
183 |
#define nfserr_badowner cpu_to_be32(NFSERR_BADOWNER) |
77f18f5e4 nfs: replace uses... |
184 185 186 187 188 189 190 191 192 |
#define nfserr_locks_held cpu_to_be32(NFSERR_LOCKS_HELD) #define nfserr_op_illegal cpu_to_be32(NFSERR_OP_ILLEGAL) #define nfserr_grace cpu_to_be32(NFSERR_GRACE) #define nfserr_no_grace cpu_to_be32(NFSERR_NO_GRACE) #define nfserr_reclaim_bad cpu_to_be32(NFSERR_RECLAIM_BAD) #define nfserr_badname cpu_to_be32(NFSERR_BADNAME) #define nfserr_cb_path_down cpu_to_be32(NFSERR_CB_PATH_DOWN) #define nfserr_locked cpu_to_be32(NFSERR_LOCKED) #define nfserr_wrongsec cpu_to_be32(NFSERR_WRONGSEC) |
10add806c nfsd41: define nf... |
193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 |
#define nfserr_badiomode cpu_to_be32(NFS4ERR_BADIOMODE) #define nfserr_badlayout cpu_to_be32(NFS4ERR_BADLAYOUT) #define nfserr_bad_session_digest cpu_to_be32(NFS4ERR_BAD_SESSION_DIGEST) #define nfserr_badsession cpu_to_be32(NFS4ERR_BADSESSION) #define nfserr_badslot cpu_to_be32(NFS4ERR_BADSLOT) #define nfserr_complete_already cpu_to_be32(NFS4ERR_COMPLETE_ALREADY) #define nfserr_conn_not_bound_to_session cpu_to_be32(NFS4ERR_CONN_NOT_BOUND_TO_SESSION) #define nfserr_deleg_already_wanted cpu_to_be32(NFS4ERR_DELEG_ALREADY_WANTED) #define nfserr_back_chan_busy cpu_to_be32(NFS4ERR_BACK_CHAN_BUSY) #define nfserr_layouttrylater cpu_to_be32(NFS4ERR_LAYOUTTRYLATER) #define nfserr_layoutunavailable cpu_to_be32(NFS4ERR_LAYOUTUNAVAILABLE) #define nfserr_nomatching_layout cpu_to_be32(NFS4ERR_NOMATCHING_LAYOUT) #define nfserr_recallconflict cpu_to_be32(NFS4ERR_RECALLCONFLICT) #define nfserr_unknown_layouttype cpu_to_be32(NFS4ERR_UNKNOWN_LAYOUTTYPE) #define nfserr_seq_misordered cpu_to_be32(NFS4ERR_SEQ_MISORDERED) #define nfserr_sequence_pos cpu_to_be32(NFS4ERR_SEQUENCE_POS) #define nfserr_req_too_big cpu_to_be32(NFS4ERR_REQ_TOO_BIG) #define nfserr_rep_too_big cpu_to_be32(NFS4ERR_REP_TOO_BIG) #define nfserr_rep_too_big_to_cache cpu_to_be32(NFS4ERR_REP_TOO_BIG_TO_CACHE) #define nfserr_retry_uncached_rep cpu_to_be32(NFS4ERR_RETRY_UNCACHED_REP) #define nfserr_unsafe_compound cpu_to_be32(NFS4ERR_UNSAFE_COMPOUND) #define nfserr_too_many_ops cpu_to_be32(NFS4ERR_TOO_MANY_OPS) #define nfserr_op_not_in_session cpu_to_be32(NFS4ERR_OP_NOT_IN_SESSION) #define nfserr_hash_alg_unsupp cpu_to_be32(NFS4ERR_HASH_ALG_UNSUPP) #define nfserr_clientid_busy cpu_to_be32(NFS4ERR_CLIENTID_BUSY) #define nfserr_pnfs_io_hole cpu_to_be32(NFS4ERR_PNFS_IO_HOLE) #define nfserr_seq_false_retry cpu_to_be32(NFS4ERR_SEQ_FALSE_RETRY) #define nfserr_bad_high_slot cpu_to_be32(NFS4ERR_BAD_HIGH_SLOT) #define nfserr_deadsession cpu_to_be32(NFS4ERR_DEADSESSION) #define nfserr_encr_alg_unsupp cpu_to_be32(NFS4ERR_ENCR_ALG_UNSUPP) #define nfserr_pnfs_no_layout cpu_to_be32(NFS4ERR_PNFS_NO_LAYOUT) #define nfserr_not_only_op cpu_to_be32(NFS4ERR_NOT_ONLY_OP) #define nfserr_wrong_cred cpu_to_be32(NFS4ERR_WRONG_CRED) #define nfserr_wrong_type cpu_to_be32(NFS4ERR_WRONG_TYPE) #define nfserr_dirdeleg_unavail cpu_to_be32(NFS4ERR_DIRDELEG_UNAVAIL) #define nfserr_reject_deleg cpu_to_be32(NFS4ERR_REJECT_DELEG) #define nfserr_returnconflict cpu_to_be32(NFS4ERR_RETURNCONFLICT) #define nfserr_deleg_revoked cpu_to_be32(NFS4ERR_DELEG_REVOKED) |
1da177e4c Linux-2.6.12-rc2 |
231 232 233 234 235 |
/* error codes for internal use */ /* if a request fails due to kmalloc failure, it gets dropped. * Client should resend eventually */ |
77f18f5e4 nfs: replace uses... |
236 |
#define nfserr_dropit cpu_to_be32(30000) |
1da177e4c Linux-2.6.12-rc2 |
237 |
/* end-of-file indicator in readdir */ |
77f18f5e4 nfs: replace uses... |
238 |
#define nfserr_eof cpu_to_be32(30001) |
10add806c nfsd41: define nf... |
239 240 241 242 |
/* replay detected */ #define nfserr_replay_me cpu_to_be32(11001) /* nfs41 replay detected */ #define nfserr_replay_cache cpu_to_be32(11002) |
1da177e4c Linux-2.6.12-rc2 |
243 244 245 246 247 248 249 250 |
/* Check for dir entries '.' and '..' */ #define isdotent(n, l) (l < 3 && n[0] == '.' && (l == 1 || n[1] == '.')) /* * Time of server startup */ extern struct timeval nfssvc_boot; |
1da177e4c Linux-2.6.12-rc2 |
251 |
#ifdef CONFIG_NFSD_V4 |
cf07d2ea4 nfsd4: simplify r... |
252 |
extern time_t nfsd4_lease; |
efc4bb4fd nfsd4: allow sett... |
253 |
extern time_t nfsd4_grace; |
cf07d2ea4 nfsd4: simplify r... |
254 |
|
1da177e4c Linux-2.6.12-rc2 |
255 256 257 258 259 |
/* before processing a COMPOUND operation, we have to check that there * is enough space in the buffer for XDR encode to succeed. otherwise, * we might process an operation with side effects, and be unable to * tell the client that the operation succeeded. * |
e57101991 [PATCH] knfsd: nf... |
260 |
* COMPOUND_SLACK_SPACE - this is the minimum bytes of buffer space |
1da177e4c Linux-2.6.12-rc2 |
261 262 263 264 |
* needed to encode an "ordinary" _successful_ operation. (GETATTR, * READ, READDIR, and READLINK have their own buffer checks.) if we * fall below this level, we fail the next operation with NFS4ERR_RESOURCE. * |
e57101991 [PATCH] knfsd: nf... |
265 |
* COMPOUND_ERR_SLACK_SPACE - this is the minimum bytes of buffer space |
1da177e4c Linux-2.6.12-rc2 |
266 267 268 269 270 271 |
* needed to encode an operation which has failed with NFS4ERR_RESOURCE. * care is taken to ensure that we never fall below this level for any * reason. */ #define COMPOUND_SLACK_SPACE 140 /* OP_GETFH */ #define COMPOUND_ERR_SLACK_SPACE 12 /* OP_SETATTR */ |
ecec6e34e nfsd4: expire cli... |
272 |
#define NFSD_LAUNDROMAT_MINTIMEOUT 1 /* seconds */ |
1da177e4c Linux-2.6.12-rc2 |
273 274 275 276 |
/* * The following attributes are currently not supported by the NFSv4 server: * ARCHIVE (deprecated anyway) |
1da177e4c Linux-2.6.12-rc2 |
277 278 279 280 281 282 283 |
* HIDDEN (unlikely to be supported any time soon) * MIMETYPE (unlikely to be supported any time soon) * QUOTA_* (will be supported in a forthcoming patch) * SYSTEM (unlikely to be supported any time soon) * TIME_BACKUP (unlikely to be supported any time soon) * TIME_CREATE (unlikely to be supported any time soon) */ |
7e7057064 nfsd41: support f... |
284 |
#define NFSD4_SUPPORTED_ATTRS_WORD0 \ |
1da177e4c Linux-2.6.12-rc2 |
285 286 287 288 289 290 291 |
(FATTR4_WORD0_SUPPORTED_ATTRS | FATTR4_WORD0_TYPE | FATTR4_WORD0_FH_EXPIRE_TYPE \ | FATTR4_WORD0_CHANGE | FATTR4_WORD0_SIZE | FATTR4_WORD0_LINK_SUPPORT \ | FATTR4_WORD0_SYMLINK_SUPPORT | FATTR4_WORD0_NAMED_ATTR | FATTR4_WORD0_FSID \ | FATTR4_WORD0_UNIQUE_HANDLES | FATTR4_WORD0_LEASE_TIME | FATTR4_WORD0_RDATTR_ERROR \ | FATTR4_WORD0_ACLSUPPORT | FATTR4_WORD0_CANSETTIME | FATTR4_WORD0_CASE_INSENSITIVE \ | FATTR4_WORD0_CASE_PRESERVING | FATTR4_WORD0_CHOWN_RESTRICTED \ | FATTR4_WORD0_FILEHANDLE | FATTR4_WORD0_FILEID | FATTR4_WORD0_FILES_AVAIL \ |
81c3f4130 [PATCH] knfsd: nf... |
292 |
| FATTR4_WORD0_FILES_FREE | FATTR4_WORD0_FILES_TOTAL | FATTR4_WORD0_FS_LOCATIONS | FATTR4_WORD0_HOMOGENEOUS \ |
1da177e4c Linux-2.6.12-rc2 |
293 294 |
| FATTR4_WORD0_MAXFILESIZE | FATTR4_WORD0_MAXLINK | FATTR4_WORD0_MAXNAME \ | FATTR4_WORD0_MAXREAD | FATTR4_WORD0_MAXWRITE | FATTR4_WORD0_ACL) |
7e7057064 nfsd41: support f... |
295 |
#define NFSD4_SUPPORTED_ATTRS_WORD1 \ |
1da177e4c Linux-2.6.12-rc2 |
296 297 298 299 300 301 |
(FATTR4_WORD1_MODE | FATTR4_WORD1_NO_TRUNC | FATTR4_WORD1_NUMLINKS \ | FATTR4_WORD1_OWNER | FATTR4_WORD1_OWNER_GROUP | FATTR4_WORD1_RAWDEV \ | FATTR4_WORD1_SPACE_AVAIL | FATTR4_WORD1_SPACE_FREE | FATTR4_WORD1_SPACE_TOTAL \ | FATTR4_WORD1_SPACE_USED | FATTR4_WORD1_TIME_ACCESS | FATTR4_WORD1_TIME_ACCESS_SET \ | FATTR4_WORD1_TIME_DELTA | FATTR4_WORD1_TIME_METADATA \ | FATTR4_WORD1_TIME_MODIFY | FATTR4_WORD1_TIME_MODIFY_SET | FATTR4_WORD1_MOUNTED_ON_FILEID) |
7e7057064 nfsd41: support f... |
302 303 304 305 306 307 308 309 310 |
#define NFSD4_SUPPORTED_ATTRS_WORD2 0 #define NFSD4_1_SUPPORTED_ATTRS_WORD0 \ NFSD4_SUPPORTED_ATTRS_WORD0 #define NFSD4_1_SUPPORTED_ATTRS_WORD1 \ NFSD4_SUPPORTED_ATTRS_WORD1 #define NFSD4_1_SUPPORTED_ATTRS_WORD2 \ |
8c18f2052 nfsd41: SUPPATTR_... |
311 |
(NFSD4_SUPPORTED_ATTRS_WORD2 | FATTR4_WORD2_SUPPATTR_EXCLCREAT) |
7e7057064 nfsd41: support f... |
312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 |
static inline u32 nfsd_suppattrs0(u32 minorversion) { return minorversion ? NFSD4_1_SUPPORTED_ATTRS_WORD0 : NFSD4_SUPPORTED_ATTRS_WORD0; } static inline u32 nfsd_suppattrs1(u32 minorversion) { return minorversion ? NFSD4_1_SUPPORTED_ATTRS_WORD1 : NFSD4_SUPPORTED_ATTRS_WORD1; } static inline u32 nfsd_suppattrs2(u32 minorversion) { return minorversion ? NFSD4_1_SUPPORTED_ATTRS_WORD2 : NFSD4_SUPPORTED_ATTRS_WORD2; } |
1da177e4c Linux-2.6.12-rc2 |
330 |
/* These will return ERR_INVAL if specified in GETATTR or READDIR. */ |
c7e8472cf NFSD: Remove unne... |
331 332 |
#define NFSD_WRITEONLY_ATTRS_WORD1 \ (FATTR4_WORD1_TIME_ACCESS_SET | FATTR4_WORD1_TIME_MODIFY_SET) |
1da177e4c Linux-2.6.12-rc2 |
333 334 |
/* These are the only attrs allowed in CREATE/OPEN/SETATTR. */ |
c7e8472cf NFSD: Remove unne... |
335 336 337 338 339 |
#define NFSD_WRITEABLE_ATTRS_WORD0 \ (FATTR4_WORD0_SIZE | FATTR4_WORD0_ACL) #define NFSD_WRITEABLE_ATTRS_WORD1 \ (FATTR4_WORD1_MODE | FATTR4_WORD1_OWNER | FATTR4_WORD1_OWNER_GROUP \ | FATTR4_WORD1_TIME_ACCESS_SET | FATTR4_WORD1_TIME_MODIFY_SET) |
7e7057064 nfsd41: support f... |
340 |
#define NFSD_WRITEABLE_ATTRS_WORD2 0 |
1da177e4c Linux-2.6.12-rc2 |
341 |
|
8c18f2052 nfsd41: SUPPATTR_... |
342 343 344 345 346 347 348 349 350 351 352 |
#define NFSD_SUPPATTR_EXCLCREAT_WORD0 \ NFSD_WRITEABLE_ATTRS_WORD0 /* * we currently store the exclusive create verifier in the v_{a,m}time * attributes so the client can't set these at create time using EXCLUSIVE4_1 */ #define NFSD_SUPPATTR_EXCLCREAT_WORD1 \ (NFSD_WRITEABLE_ATTRS_WORD1 & \ ~(FATTR4_WORD1_TIME_ACCESS_SET | FATTR4_WORD1_TIME_MODIFY_SET)) #define NFSD_SUPPATTR_EXCLCREAT_WORD2 \ NFSD_WRITEABLE_ATTRS_WORD2 |
11fcee029 NFSD: Add a cache... |
353 354 355 356 357 358 |
extern int nfsd4_is_junction(struct dentry *dentry); #else static inline int nfsd4_is_junction(struct dentry *dentry) { return 0; } |
1da177e4c Linux-2.6.12-rc2 |
359 |
#endif /* CONFIG_NFSD_V4 */ |
1da177e4c Linux-2.6.12-rc2 |
360 |
#endif /* LINUX_NFSD_NFSD_H */ |