diff options
author | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-01-17 16:15:55 -0500 |
---|---|---|
committer | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-01-17 16:15:55 -0500 |
commit | 8dea78da5cee153b8af9c07a2745f6c55057fe12 (patch) | |
tree | a8f4d49d63b1ecc92f2fddceba0655b2472c5bd9 /include/linux/nfs4.h | |
parent | 406089d01562f1e2bf9f089fd7637009ebaad589 (diff) |
Patched in Tegra support.
Diffstat (limited to 'include/linux/nfs4.h')
-rw-r--r-- | include/linux/nfs4.h | 214 |
1 files changed, 168 insertions, 46 deletions
diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h index e111fa419a4..76f99e8714f 100644 --- a/include/linux/nfs4.h +++ b/include/linux/nfs4.h | |||
@@ -9,11 +9,164 @@ | |||
9 | * Kendrick Smith <kmsmith@umich.edu> | 9 | * Kendrick Smith <kmsmith@umich.edu> |
10 | * Andy Adamson <andros@umich.edu> | 10 | * Andy Adamson <andros@umich.edu> |
11 | */ | 11 | */ |
12 | |||
12 | #ifndef _LINUX_NFS4_H | 13 | #ifndef _LINUX_NFS4_H |
13 | #define _LINUX_NFS4_H | 14 | #define _LINUX_NFS4_H |
14 | 15 | ||
16 | #include <linux/types.h> | ||
17 | |||
18 | #define NFS4_BITMAP_SIZE 2 | ||
19 | #define NFS4_VERIFIER_SIZE 8 | ||
20 | #define NFS4_STATEID_SEQID_SIZE 4 | ||
21 | #define NFS4_STATEID_OTHER_SIZE 12 | ||
22 | #define NFS4_STATEID_SIZE (NFS4_STATEID_SEQID_SIZE + NFS4_STATEID_OTHER_SIZE) | ||
23 | #define NFS4_FHSIZE 128 | ||
24 | #define NFS4_MAXPATHLEN PATH_MAX | ||
25 | #define NFS4_MAXNAMLEN NAME_MAX | ||
26 | #define NFS4_OPAQUE_LIMIT 1024 | ||
27 | #define NFS4_MAX_SESSIONID_LEN 16 | ||
28 | |||
29 | #define NFS4_ACCESS_READ 0x0001 | ||
30 | #define NFS4_ACCESS_LOOKUP 0x0002 | ||
31 | #define NFS4_ACCESS_MODIFY 0x0004 | ||
32 | #define NFS4_ACCESS_EXTEND 0x0008 | ||
33 | #define NFS4_ACCESS_DELETE 0x0010 | ||
34 | #define NFS4_ACCESS_EXECUTE 0x0020 | ||
35 | |||
36 | #define NFS4_FH_PERSISTENT 0x0000 | ||
37 | #define NFS4_FH_NOEXPIRE_WITH_OPEN 0x0001 | ||
38 | #define NFS4_FH_VOLATILE_ANY 0x0002 | ||
39 | #define NFS4_FH_VOL_MIGRATION 0x0004 | ||
40 | #define NFS4_FH_VOL_RENAME 0x0008 | ||
41 | |||
42 | #define NFS4_OPEN_RESULT_CONFIRM 0x0002 | ||
43 | #define NFS4_OPEN_RESULT_LOCKTYPE_POSIX 0x0004 | ||
44 | |||
45 | #define NFS4_SHARE_ACCESS_MASK 0x000F | ||
46 | #define NFS4_SHARE_ACCESS_READ 0x0001 | ||
47 | #define NFS4_SHARE_ACCESS_WRITE 0x0002 | ||
48 | #define NFS4_SHARE_ACCESS_BOTH 0x0003 | ||
49 | #define NFS4_SHARE_DENY_READ 0x0001 | ||
50 | #define NFS4_SHARE_DENY_WRITE 0x0002 | ||
51 | #define NFS4_SHARE_DENY_BOTH 0x0003 | ||
52 | |||
53 | /* nfs41 */ | ||
54 | #define NFS4_SHARE_WANT_MASK 0xFF00 | ||
55 | #define NFS4_SHARE_WANT_NO_PREFERENCE 0x0000 | ||
56 | #define NFS4_SHARE_WANT_READ_DELEG 0x0100 | ||
57 | #define NFS4_SHARE_WANT_WRITE_DELEG 0x0200 | ||
58 | #define NFS4_SHARE_WANT_ANY_DELEG 0x0300 | ||
59 | #define NFS4_SHARE_WANT_NO_DELEG 0x0400 | ||
60 | #define NFS4_SHARE_WANT_CANCEL 0x0500 | ||
61 | |||
62 | #define NFS4_SHARE_WHEN_MASK 0xF0000 | ||
63 | #define NFS4_SHARE_SIGNAL_DELEG_WHEN_RESRC_AVAIL 0x10000 | ||
64 | #define NFS4_SHARE_PUSH_DELEG_WHEN_UNCONTENDED 0x20000 | ||
65 | |||
66 | #define NFS4_CDFC4_FORE 0x1 | ||
67 | #define NFS4_CDFC4_BACK 0x2 | ||
68 | #define NFS4_CDFC4_BOTH 0x3 | ||
69 | #define NFS4_CDFC4_FORE_OR_BOTH 0x3 | ||
70 | #define NFS4_CDFC4_BACK_OR_BOTH 0x7 | ||
71 | |||
72 | #define NFS4_SET_TO_SERVER_TIME 0 | ||
73 | #define NFS4_SET_TO_CLIENT_TIME 1 | ||
74 | |||
75 | #define NFS4_ACE_ACCESS_ALLOWED_ACE_TYPE 0 | ||
76 | #define NFS4_ACE_ACCESS_DENIED_ACE_TYPE 1 | ||
77 | #define NFS4_ACE_SYSTEM_AUDIT_ACE_TYPE 2 | ||
78 | #define NFS4_ACE_SYSTEM_ALARM_ACE_TYPE 3 | ||
79 | |||
80 | #define ACL4_SUPPORT_ALLOW_ACL 0x01 | ||
81 | #define ACL4_SUPPORT_DENY_ACL 0x02 | ||
82 | #define ACL4_SUPPORT_AUDIT_ACL 0x04 | ||
83 | #define ACL4_SUPPORT_ALARM_ACL 0x08 | ||
84 | |||
85 | #define NFS4_ACE_FILE_INHERIT_ACE 0x00000001 | ||
86 | #define NFS4_ACE_DIRECTORY_INHERIT_ACE 0x00000002 | ||
87 | #define NFS4_ACE_NO_PROPAGATE_INHERIT_ACE 0x00000004 | ||
88 | #define NFS4_ACE_INHERIT_ONLY_ACE 0x00000008 | ||
89 | #define NFS4_ACE_SUCCESSFUL_ACCESS_ACE_FLAG 0x00000010 | ||
90 | #define NFS4_ACE_FAILED_ACCESS_ACE_FLAG 0x00000020 | ||
91 | #define NFS4_ACE_IDENTIFIER_GROUP 0x00000040 | ||
92 | |||
93 | #define NFS4_ACE_READ_DATA 0x00000001 | ||
94 | #define NFS4_ACE_LIST_DIRECTORY 0x00000001 | ||
95 | #define NFS4_ACE_WRITE_DATA 0x00000002 | ||
96 | #define NFS4_ACE_ADD_FILE 0x00000002 | ||
97 | #define NFS4_ACE_APPEND_DATA 0x00000004 | ||
98 | #define NFS4_ACE_ADD_SUBDIRECTORY 0x00000004 | ||
99 | #define NFS4_ACE_READ_NAMED_ATTRS 0x00000008 | ||
100 | #define NFS4_ACE_WRITE_NAMED_ATTRS 0x00000010 | ||
101 | #define NFS4_ACE_EXECUTE 0x00000020 | ||
102 | #define NFS4_ACE_DELETE_CHILD 0x00000040 | ||
103 | #define NFS4_ACE_READ_ATTRIBUTES 0x00000080 | ||
104 | #define NFS4_ACE_WRITE_ATTRIBUTES 0x00000100 | ||
105 | #define NFS4_ACE_DELETE 0x00010000 | ||
106 | #define NFS4_ACE_READ_ACL 0x00020000 | ||
107 | #define NFS4_ACE_WRITE_ACL 0x00040000 | ||
108 | #define NFS4_ACE_WRITE_OWNER 0x00080000 | ||
109 | #define NFS4_ACE_SYNCHRONIZE 0x00100000 | ||
110 | #define NFS4_ACE_GENERIC_READ 0x00120081 | ||
111 | #define NFS4_ACE_GENERIC_WRITE 0x00160106 | ||
112 | #define NFS4_ACE_GENERIC_EXECUTE 0x001200A0 | ||
113 | #define NFS4_ACE_MASK_ALL 0x001F01FF | ||
114 | |||
115 | #define EXCHGID4_FLAG_SUPP_MOVED_REFER 0x00000001 | ||
116 | #define EXCHGID4_FLAG_SUPP_MOVED_MIGR 0x00000002 | ||
117 | #define EXCHGID4_FLAG_BIND_PRINC_STATEID 0x00000100 | ||
118 | |||
119 | #define EXCHGID4_FLAG_USE_NON_PNFS 0x00010000 | ||
120 | #define EXCHGID4_FLAG_USE_PNFS_MDS 0x00020000 | ||
121 | #define EXCHGID4_FLAG_USE_PNFS_DS 0x00040000 | ||
122 | #define EXCHGID4_FLAG_MASK_PNFS 0x00070000 | ||
123 | |||
124 | #define EXCHGID4_FLAG_UPD_CONFIRMED_REC_A 0x40000000 | ||
125 | #define EXCHGID4_FLAG_CONFIRMED_R 0x80000000 | ||
126 | /* | ||
127 | * Since the validity of these bits depends on whether | ||
128 | * they're set in the argument or response, have separate | ||
129 | * invalid flag masks for arg (_A) and resp (_R). | ||
130 | */ | ||
131 | #define EXCHGID4_FLAG_MASK_A 0x40070103 | ||
132 | #define EXCHGID4_FLAG_MASK_R 0x80070103 | ||
133 | |||
134 | #define SEQ4_STATUS_CB_PATH_DOWN 0x00000001 | ||
135 | #define SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRING 0x00000002 | ||
136 | #define SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRED 0x00000004 | ||
137 | #define SEQ4_STATUS_EXPIRED_ALL_STATE_REVOKED 0x00000008 | ||
138 | #define SEQ4_STATUS_EXPIRED_SOME_STATE_REVOKED 0x00000010 | ||
139 | #define SEQ4_STATUS_ADMIN_STATE_REVOKED 0x00000020 | ||
140 | #define SEQ4_STATUS_RECALLABLE_STATE_REVOKED 0x00000040 | ||
141 | #define SEQ4_STATUS_LEASE_MOVED 0x00000080 | ||
142 | #define SEQ4_STATUS_RESTART_RECLAIM_NEEDED 0x00000100 | ||
143 | #define SEQ4_STATUS_CB_PATH_DOWN_SESSION 0x00000200 | ||
144 | #define SEQ4_STATUS_BACKCHANNEL_FAULT 0x00000400 | ||
145 | |||
146 | #define NFS4_SECINFO_STYLE4_CURRENT_FH 0 | ||
147 | #define NFS4_SECINFO_STYLE4_PARENT 1 | ||
148 | |||
149 | #define NFS4_MAX_UINT64 (~(u64)0) | ||
150 | |||
151 | /* An NFS4 sessions server must support at least NFS4_MAX_OPS operations. | ||
152 | * If a compound requires more operations, adjust NFS4_MAX_OPS accordingly. | ||
153 | */ | ||
154 | #define NFS4_MAX_OPS 8 | ||
155 | |||
156 | /* Our NFS4 client back channel server only wants the cb_sequene and the | ||
157 | * actual operation per compound | ||
158 | */ | ||
159 | #define NFS4_MAX_BACK_CHANNEL_OPS 2 | ||
160 | |||
161 | enum nfs4_acl_whotype { | ||
162 | NFS4_ACL_WHO_NAMED = 0, | ||
163 | NFS4_ACL_WHO_OWNER, | ||
164 | NFS4_ACL_WHO_GROUP, | ||
165 | NFS4_ACL_WHO_EVERYONE, | ||
166 | }; | ||
167 | |||
168 | #ifdef __KERNEL__ | ||
15 | #include <linux/list.h> | 169 | #include <linux/list.h> |
16 | #include <uapi/linux/nfs4.h> | ||
17 | 170 | ||
18 | struct nfs4_ace { | 171 | struct nfs4_ace { |
19 | uint32_t type; | 172 | uint32_t type; |
@@ -30,12 +183,15 @@ struct nfs4_acl { | |||
30 | 183 | ||
31 | typedef struct { char data[NFS4_VERIFIER_SIZE]; } nfs4_verifier; | 184 | typedef struct { char data[NFS4_VERIFIER_SIZE]; } nfs4_verifier; |
32 | 185 | ||
33 | struct nfs_stateid4 { | 186 | struct nfs41_stateid { |
34 | __be32 seqid; | 187 | __be32 seqid; |
35 | char other[NFS4_STATEID_OTHER_SIZE]; | 188 | char other[NFS4_STATEID_OTHER_SIZE]; |
36 | } __attribute__ ((packed)); | 189 | } __attribute__ ((packed)); |
37 | 190 | ||
38 | typedef struct nfs_stateid4 nfs4_stateid; | 191 | typedef union { |
192 | char data[NFS4_STATEID_SIZE]; | ||
193 | struct nfs41_stateid stateid; | ||
194 | } nfs4_stateid; | ||
39 | 195 | ||
40 | enum nfs_opnum4 { | 196 | enum nfs_opnum4 { |
41 | OP_ACCESS = 3, | 197 | OP_ACCESS = 3, |
@@ -217,22 +373,6 @@ enum nfsstat4 { | |||
217 | NFS4ERR_DELEG_REVOKED = 10087, /* deleg./layout revoked */ | 373 | NFS4ERR_DELEG_REVOKED = 10087, /* deleg./layout revoked */ |
218 | }; | 374 | }; |
219 | 375 | ||
220 | static inline bool seqid_mutating_err(u32 err) | ||
221 | { | ||
222 | /* rfc 3530 section 8.1.5: */ | ||
223 | switch (err) { | ||
224 | case NFS4ERR_STALE_CLIENTID: | ||
225 | case NFS4ERR_STALE_STATEID: | ||
226 | case NFS4ERR_BAD_STATEID: | ||
227 | case NFS4ERR_BAD_SEQID: | ||
228 | case NFS4ERR_BADXDR: | ||
229 | case NFS4ERR_RESOURCE: | ||
230 | case NFS4ERR_NOFILEHANDLE: | ||
231 | return false; | ||
232 | }; | ||
233 | return true; | ||
234 | } | ||
235 | |||
236 | /* | 376 | /* |
237 | * Note: NF4BAD is not actually part of the protocol; it is just used | 377 | * Note: NF4BAD is not actually part of the protocol; it is just used |
238 | * internally by nfsd. | 378 | * internally by nfsd. |
@@ -254,10 +394,7 @@ enum open_claim_type4 { | |||
254 | NFS4_OPEN_CLAIM_NULL = 0, | 394 | NFS4_OPEN_CLAIM_NULL = 0, |
255 | NFS4_OPEN_CLAIM_PREVIOUS = 1, | 395 | NFS4_OPEN_CLAIM_PREVIOUS = 1, |
256 | NFS4_OPEN_CLAIM_DELEGATE_CUR = 2, | 396 | NFS4_OPEN_CLAIM_DELEGATE_CUR = 2, |
257 | NFS4_OPEN_CLAIM_DELEGATE_PREV = 3, | 397 | NFS4_OPEN_CLAIM_DELEGATE_PREV = 3 |
258 | NFS4_OPEN_CLAIM_FH = 4, /* 4.1 */ | ||
259 | NFS4_OPEN_CLAIM_DELEG_CUR_FH = 5, /* 4.1 */ | ||
260 | NFS4_OPEN_CLAIM_DELEG_PREV_FH = 6, /* 4.1 */ | ||
261 | }; | 398 | }; |
262 | 399 | ||
263 | enum opentype4 { | 400 | enum opentype4 { |
@@ -285,20 +422,7 @@ enum limit_by4 { | |||
285 | enum open_delegation_type4 { | 422 | enum open_delegation_type4 { |
286 | NFS4_OPEN_DELEGATE_NONE = 0, | 423 | NFS4_OPEN_DELEGATE_NONE = 0, |
287 | NFS4_OPEN_DELEGATE_READ = 1, | 424 | NFS4_OPEN_DELEGATE_READ = 1, |
288 | NFS4_OPEN_DELEGATE_WRITE = 2, | 425 | NFS4_OPEN_DELEGATE_WRITE = 2 |
289 | NFS4_OPEN_DELEGATE_NONE_EXT = 3, /* 4.1 */ | ||
290 | }; | ||
291 | |||
292 | enum why_no_delegation4 { /* new to v4.1 */ | ||
293 | WND4_NOT_WANTED = 0, | ||
294 | WND4_CONTENTION = 1, | ||
295 | WND4_RESOURCE = 2, | ||
296 | WND4_NOT_SUPP_FTYPE = 3, | ||
297 | WND4_WRITE_DELEG_NOT_SUPP_FTYPE = 4, | ||
298 | WND4_NOT_SUPP_UPGRADE = 5, | ||
299 | WND4_NOT_SUPP_DOWNGRADE = 6, | ||
300 | WND4_CANCELLED = 7, | ||
301 | WND4_IS_DIR = 8, | ||
302 | }; | 426 | }; |
303 | 427 | ||
304 | enum lock_type4 { | 428 | enum lock_type4 { |
@@ -373,13 +497,6 @@ enum lock_type4 { | |||
373 | #define FATTR4_WORD1_MOUNTED_ON_FILEID (1UL << 23) | 497 | #define FATTR4_WORD1_MOUNTED_ON_FILEID (1UL << 23) |
374 | #define FATTR4_WORD1_FS_LAYOUT_TYPES (1UL << 30) | 498 | #define FATTR4_WORD1_FS_LAYOUT_TYPES (1UL << 30) |
375 | #define FATTR4_WORD2_LAYOUT_BLKSIZE (1UL << 1) | 499 | #define FATTR4_WORD2_LAYOUT_BLKSIZE (1UL << 1) |
376 | #define FATTR4_WORD2_MDSTHRESHOLD (1UL << 4) | ||
377 | |||
378 | /* MDS threshold bitmap bits */ | ||
379 | #define THRESHOLD_RD (1UL << 0) | ||
380 | #define THRESHOLD_WR (1UL << 1) | ||
381 | #define THRESHOLD_RD_IO (1UL << 2) | ||
382 | #define THRESHOLD_WR_IO (1UL << 3) | ||
383 | 500 | ||
384 | #define NFSPROC4_NULL 0 | 501 | #define NFSPROC4_NULL 0 |
385 | #define NFSPROC4_COMPOUND 1 | 502 | #define NFSPROC4_COMPOUND 1 |
@@ -450,8 +567,6 @@ enum { | |||
450 | NFSPROC4_CLNT_TEST_STATEID, | 567 | NFSPROC4_CLNT_TEST_STATEID, |
451 | NFSPROC4_CLNT_FREE_STATEID, | 568 | NFSPROC4_CLNT_FREE_STATEID, |
452 | NFSPROC4_CLNT_GETDEVICELIST, | 569 | NFSPROC4_CLNT_GETDEVICELIST, |
453 | NFSPROC4_CLNT_BIND_CONN_TO_SESSION, | ||
454 | NFSPROC4_CLNT_DESTROY_CLIENTID, | ||
455 | }; | 570 | }; |
456 | 571 | ||
457 | /* nfs41 types */ | 572 | /* nfs41 types */ |
@@ -516,3 +631,10 @@ struct nfs4_deviceid { | |||
516 | }; | 631 | }; |
517 | 632 | ||
518 | #endif | 633 | #endif |
634 | #endif | ||
635 | |||
636 | /* | ||
637 | * Local variables: | ||
638 | * c-basic-offset: 8 | ||
639 | * End: | ||
640 | */ | ||