aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/nfs4.h
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
committerGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
commitc71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch)
treeecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /include/linux/nfs4.h
parentea53c912f8a86a8567697115b6a0d8152beee5c8 (diff)
parent6a00f206debf8a5c8899055726ad127dbeeed098 (diff)
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts: litmus/sched_cedf.c
Diffstat (limited to 'include/linux/nfs4.h')
-rw-r--r--include/linux/nfs4.h92
1 files changed, 84 insertions, 8 deletions
diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h
index 07e40c625972..504b289ba680 100644
--- a/include/linux/nfs4.h
+++ b/include/linux/nfs4.h
@@ -17,7 +17,9 @@
17 17
18#define NFS4_BITMAP_SIZE 2 18#define NFS4_BITMAP_SIZE 2
19#define NFS4_VERIFIER_SIZE 8 19#define NFS4_VERIFIER_SIZE 8
20#define NFS4_STATEID_SIZE 16 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)
21#define NFS4_FHSIZE 128 23#define NFS4_FHSIZE 128
22#define NFS4_MAXPATHLEN PATH_MAX 24#define NFS4_MAXPATHLEN PATH_MAX
23#define NFS4_MAXNAMLEN NAME_MAX 25#define NFS4_MAXNAMLEN NAME_MAX
@@ -61,6 +63,12 @@
61#define NFS4_SHARE_SIGNAL_DELEG_WHEN_RESRC_AVAIL 0x10000 63#define NFS4_SHARE_SIGNAL_DELEG_WHEN_RESRC_AVAIL 0x10000
62#define NFS4_SHARE_PUSH_DELEG_WHEN_UNCONTENDED 0x20000 64#define NFS4_SHARE_PUSH_DELEG_WHEN_UNCONTENDED 0x20000
63 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
64#define NFS4_SET_TO_SERVER_TIME 0 72#define NFS4_SET_TO_SERVER_TIME 0
65#define NFS4_SET_TO_CLIENT_TIME 1 73#define NFS4_SET_TO_CLIENT_TIME 1
66 74
@@ -106,9 +114,13 @@
106 114
107#define EXCHGID4_FLAG_SUPP_MOVED_REFER 0x00000001 115#define EXCHGID4_FLAG_SUPP_MOVED_REFER 0x00000001
108#define EXCHGID4_FLAG_SUPP_MOVED_MIGR 0x00000002 116#define EXCHGID4_FLAG_SUPP_MOVED_MIGR 0x00000002
117#define EXCHGID4_FLAG_BIND_PRINC_STATEID 0x00000100
118
109#define EXCHGID4_FLAG_USE_NON_PNFS 0x00010000 119#define EXCHGID4_FLAG_USE_NON_PNFS 0x00010000
110#define EXCHGID4_FLAG_USE_PNFS_MDS 0x00020000 120#define EXCHGID4_FLAG_USE_PNFS_MDS 0x00020000
111#define EXCHGID4_FLAG_USE_PNFS_DS 0x00040000 121#define EXCHGID4_FLAG_USE_PNFS_DS 0x00040000
122#define EXCHGID4_FLAG_MASK_PNFS 0x00070000
123
112#define EXCHGID4_FLAG_UPD_CONFIRMED_REC_A 0x40000000 124#define EXCHGID4_FLAG_UPD_CONFIRMED_REC_A 0x40000000
113#define EXCHGID4_FLAG_CONFIRMED_R 0x80000000 125#define EXCHGID4_FLAG_CONFIRMED_R 0x80000000
114/* 126/*
@@ -116,8 +128,8 @@
116 * they're set in the argument or response, have separate 128 * they're set in the argument or response, have separate
117 * invalid flag masks for arg (_A) and resp (_R). 129 * invalid flag masks for arg (_A) and resp (_R).
118 */ 130 */
119#define EXCHGID4_FLAG_MASK_A 0x40070003 131#define EXCHGID4_FLAG_MASK_A 0x40070103
120#define EXCHGID4_FLAG_MASK_R 0x80070003 132#define EXCHGID4_FLAG_MASK_R 0x80070103
121 133
122#define SEQ4_STATUS_CB_PATH_DOWN 0x00000001 134#define SEQ4_STATUS_CB_PATH_DOWN 0x00000001
123#define SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRING 0x00000002 135#define SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRING 0x00000002
@@ -131,6 +143,9 @@
131#define SEQ4_STATUS_CB_PATH_DOWN_SESSION 0x00000200 143#define SEQ4_STATUS_CB_PATH_DOWN_SESSION 0x00000200
132#define SEQ4_STATUS_BACKCHANNEL_FAULT 0x00000400 144#define SEQ4_STATUS_BACKCHANNEL_FAULT 0x00000400
133 145
146#define NFS4_SECINFO_STYLE4_CURRENT_FH 0
147#define NFS4_SECINFO_STYLE4_PARENT 1
148
134#define NFS4_MAX_UINT64 (~(u64)0) 149#define NFS4_MAX_UINT64 (~(u64)0)
135 150
136/* An NFS4 sessions server must support at least NFS4_MAX_OPS operations. 151/* An NFS4 sessions server must support at least NFS4_MAX_OPS operations.
@@ -167,7 +182,16 @@ struct nfs4_acl {
167}; 182};
168 183
169typedef struct { char data[NFS4_VERIFIER_SIZE]; } nfs4_verifier; 184typedef struct { char data[NFS4_VERIFIER_SIZE]; } nfs4_verifier;
170typedef struct { char data[NFS4_STATEID_SIZE]; } nfs4_stateid; 185
186struct nfs41_stateid {
187 __be32 seqid;
188 char other[NFS4_STATEID_OTHER_SIZE];
189} __attribute__ ((packed));
190
191typedef union {
192 char data[NFS4_STATEID_SIZE];
193 struct nfs41_stateid stateid;
194} nfs4_stateid;
171 195
172enum nfs_opnum4 { 196enum nfs_opnum4 {
173 OP_ACCESS = 3, 197 OP_ACCESS = 3,
@@ -335,7 +359,7 @@ enum nfsstat4 {
335 /* Error 10073 is unused. */ 359 /* Error 10073 is unused. */
336 NFS4ERR_CLIENTID_BUSY = 10074, /* clientid has state */ 360 NFS4ERR_CLIENTID_BUSY = 10074, /* clientid has state */
337 NFS4ERR_PNFS_IO_HOLE = 10075, /* IO to _SPARSE file hole */ 361 NFS4ERR_PNFS_IO_HOLE = 10075, /* IO to _SPARSE file hole */
338 NFS4ERR_SEQ_FALSE_RETRY = 10076, /* retry not origional */ 362 NFS4ERR_SEQ_FALSE_RETRY = 10076, /* retry not original */
339 NFS4ERR_BAD_HIGH_SLOT = 10077, /* sequence arg bad */ 363 NFS4ERR_BAD_HIGH_SLOT = 10077, /* sequence arg bad */
340 NFS4ERR_DEADSESSION = 10078, /* persistent session dead */ 364 NFS4ERR_DEADSESSION = 10078, /* persistent session dead */
341 NFS4ERR_ENCR_ALG_UNSUPP = 10079, /* SSV alg mismatch */ 365 NFS4ERR_ENCR_ALG_UNSUPP = 10079, /* SSV alg mismatch */
@@ -471,6 +495,8 @@ enum lock_type4 {
471#define FATTR4_WORD1_TIME_MODIFY (1UL << 21) 495#define FATTR4_WORD1_TIME_MODIFY (1UL << 21)
472#define FATTR4_WORD1_TIME_MODIFY_SET (1UL << 22) 496#define FATTR4_WORD1_TIME_MODIFY_SET (1UL << 22)
473#define FATTR4_WORD1_MOUNTED_ON_FILEID (1UL << 23) 497#define FATTR4_WORD1_MOUNTED_ON_FILEID (1UL << 23)
498#define FATTR4_WORD1_FS_LAYOUT_TYPES (1UL << 30)
499#define FATTR4_WORD2_LAYOUT_BLKSIZE (1UL << 1)
474 500
475#define NFSPROC4_NULL 0 501#define NFSPROC4_NULL 0
476#define NFSPROC4_COMPOUND 1 502#define NFSPROC4_COMPOUND 1
@@ -524,6 +550,7 @@ enum {
524 NFSPROC4_CLNT_SETACL, 550 NFSPROC4_CLNT_SETACL,
525 NFSPROC4_CLNT_FS_LOCATIONS, 551 NFSPROC4_CLNT_FS_LOCATIONS,
526 NFSPROC4_CLNT_RELEASE_LOCKOWNER, 552 NFSPROC4_CLNT_RELEASE_LOCKOWNER,
553 NFSPROC4_CLNT_SECINFO,
527 554
528 /* nfs41 */ 555 /* nfs41 */
529 NFSPROC4_CLNT_EXCHANGE_ID, 556 NFSPROC4_CLNT_EXCHANGE_ID,
@@ -532,6 +559,10 @@ enum {
532 NFSPROC4_CLNT_SEQUENCE, 559 NFSPROC4_CLNT_SEQUENCE,
533 NFSPROC4_CLNT_GET_LEASE_TIME, 560 NFSPROC4_CLNT_GET_LEASE_TIME,
534 NFSPROC4_CLNT_RECLAIM_COMPLETE, 561 NFSPROC4_CLNT_RECLAIM_COMPLETE,
562 NFSPROC4_CLNT_LAYOUTGET,
563 NFSPROC4_CLNT_GETDEVICEINFO,
564 NFSPROC4_CLNT_LAYOUTCOMMIT,
565 NFSPROC4_CLNT_LAYOUTRETURN,
535}; 566};
536 567
537/* nfs41 types */ 568/* nfs41 types */
@@ -540,9 +571,11 @@ struct nfs4_sessionid {
540}; 571};
541 572
542/* Create Session Flags */ 573/* Create Session Flags */
543#define SESSION4_PERSIST 0x001 574#define SESSION4_PERSIST 0x001
544#define SESSION4_BACK_CHAN 0x002 575#define SESSION4_BACK_CHAN 0x002
545#define SESSION4_RDMA 0x004 576#define SESSION4_RDMA 0x004
577
578#define SESSION4_FLAG_MASK_A 0x007
546 579
547enum state_protect_how4 { 580enum state_protect_how4 {
548 SP4_NONE = 0, 581 SP4_NONE = 0,
@@ -550,6 +583,49 @@ enum state_protect_how4 {
550 SP4_SSV = 2 583 SP4_SSV = 2
551}; 584};
552 585
586enum pnfs_layouttype {
587 LAYOUT_NFSV4_1_FILES = 1,
588 LAYOUT_OSD2_OBJECTS = 2,
589 LAYOUT_BLOCK_VOLUME = 3,
590};
591
592/* used for both layout return and recall */
593enum pnfs_layoutreturn_type {
594 RETURN_FILE = 1,
595 RETURN_FSID = 2,
596 RETURN_ALL = 3
597};
598
599enum pnfs_iomode {
600 IOMODE_READ = 1,
601 IOMODE_RW = 2,
602 IOMODE_ANY = 3,
603};
604
605enum pnfs_notify_deviceid_type4 {
606 NOTIFY_DEVICEID4_CHANGE = 1 << 1,
607 NOTIFY_DEVICEID4_DELETE = 1 << 2,
608};
609
610#define NFL4_UFLG_MASK 0x0000003F
611#define NFL4_UFLG_DENSE 0x00000001
612#define NFL4_UFLG_COMMIT_THRU_MDS 0x00000002
613#define NFL4_UFLG_STRIPE_UNIT_SIZE_MASK 0xFFFFFFC0
614
615/* Encoded in the loh_body field of type layouthint4 */
616enum filelayout_hint_care4 {
617 NFLH4_CARE_DENSE = NFL4_UFLG_DENSE,
618 NFLH4_CARE_COMMIT_THRU_MDS = NFL4_UFLG_COMMIT_THRU_MDS,
619 NFLH4_CARE_STRIPE_UNIT_SIZE = 0x00000040,
620 NFLH4_CARE_STRIPE_COUNT = 0x00000080
621};
622
623#define NFS4_DEVICEID4_SIZE 16
624
625struct nfs4_deviceid {
626 char data[NFS4_DEVICEID4_SIZE];
627};
628
553#endif 629#endif
554#endif 630#endif
555 631