diff options
Diffstat (limited to 'include/linux/nfs_fs_sb.h')
| -rw-r--r-- | include/linux/nfs_fs_sb.h | 67 |
1 files changed, 66 insertions, 1 deletions
diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h index 6ad75948cbf7..19fe15d12042 100644 --- a/include/linux/nfs_fs_sb.h +++ b/include/linux/nfs_fs_sb.h | |||
| @@ -4,11 +4,17 @@ | |||
| 4 | #include <linux/list.h> | 4 | #include <linux/list.h> |
| 5 | #include <linux/backing-dev.h> | 5 | #include <linux/backing-dev.h> |
| 6 | #include <linux/wait.h> | 6 | #include <linux/wait.h> |
| 7 | #include <linux/nfs_xdr.h> | ||
| 8 | #include <linux/sunrpc/xprt.h> | ||
| 7 | 9 | ||
| 8 | #include <asm/atomic.h> | 10 | #include <asm/atomic.h> |
| 9 | 11 | ||
| 12 | struct nfs4_session; | ||
| 10 | struct nfs_iostats; | 13 | struct nfs_iostats; |
| 11 | struct nlm_host; | 14 | struct nlm_host; |
| 15 | struct nfs4_sequence_args; | ||
| 16 | struct nfs4_sequence_res; | ||
| 17 | struct nfs_server; | ||
| 12 | 18 | ||
| 13 | /* | 19 | /* |
| 14 | * The nfs_client identifies our client state to the server. | 20 | * The nfs_client identifies our client state to the server. |
| @@ -18,6 +24,7 @@ struct nfs_client { | |||
| 18 | int cl_cons_state; /* current construction state (-ve: init error) */ | 24 | int cl_cons_state; /* current construction state (-ve: init error) */ |
| 19 | #define NFS_CS_READY 0 /* ready to be used */ | 25 | #define NFS_CS_READY 0 /* ready to be used */ |
| 20 | #define NFS_CS_INITING 1 /* busy initialising */ | 26 | #define NFS_CS_INITING 1 /* busy initialising */ |
| 27 | #define NFS_CS_SESSION_INITING 2 /* busy initialising session */ | ||
| 21 | unsigned long cl_res_state; /* NFS resources state */ | 28 | unsigned long cl_res_state; /* NFS resources state */ |
| 22 | #define NFS_CS_CALLBACK 1 /* - callback started */ | 29 | #define NFS_CS_CALLBACK 1 /* - callback started */ |
| 23 | #define NFS_CS_IDMAP 2 /* - idmap started */ | 30 | #define NFS_CS_IDMAP 2 /* - idmap started */ |
| @@ -32,6 +39,7 @@ struct nfs_client { | |||
| 32 | const struct nfs_rpc_ops *rpc_ops; /* NFS protocol vector */ | 39 | const struct nfs_rpc_ops *rpc_ops; /* NFS protocol vector */ |
| 33 | int cl_proto; /* Network transport protocol */ | 40 | int cl_proto; /* Network transport protocol */ |
| 34 | 41 | ||
| 42 | u32 cl_minorversion;/* NFSv4 minorversion */ | ||
| 35 | struct rpc_cred *cl_machine_cred; | 43 | struct rpc_cred *cl_machine_cred; |
| 36 | 44 | ||
| 37 | #ifdef CONFIG_NFS_V4 | 45 | #ifdef CONFIG_NFS_V4 |
| @@ -63,7 +71,22 @@ struct nfs_client { | |||
| 63 | */ | 71 | */ |
| 64 | char cl_ipaddr[48]; | 72 | char cl_ipaddr[48]; |
| 65 | unsigned char cl_id_uniquifier; | 73 | unsigned char cl_id_uniquifier; |
| 66 | #endif | 74 | int (* cl_call_sync)(struct nfs_server *server, |
| 75 | struct rpc_message *msg, | ||
| 76 | struct nfs4_sequence_args *args, | ||
| 77 | struct nfs4_sequence_res *res, | ||
| 78 | int cache_reply); | ||
| 79 | #endif /* CONFIG_NFS_V4 */ | ||
| 80 | |||
| 81 | #ifdef CONFIG_NFS_V4_1 | ||
| 82 | /* clientid returned from EXCHANGE_ID, used by session operations */ | ||
| 83 | u64 cl_ex_clid; | ||
| 84 | /* The sequence id to use for the next CREATE_SESSION */ | ||
| 85 | u32 cl_seqid; | ||
| 86 | /* The flags used for obtaining the clientid during EXCHANGE_ID */ | ||
| 87 | u32 cl_exchange_flags; | ||
| 88 | struct nfs4_session *cl_session; /* sharred session */ | ||
| 89 | #endif /* CONFIG_NFS_V4_1 */ | ||
| 67 | 90 | ||
| 68 | #ifdef CONFIG_NFS_FSCACHE | 91 | #ifdef CONFIG_NFS_FSCACHE |
| 69 | struct fscache_cookie *fscache; /* client index cache cookie */ | 92 | struct fscache_cookie *fscache; /* client index cache cookie */ |
| @@ -145,4 +168,46 @@ struct nfs_server { | |||
| 145 | #define NFS_CAP_ACLS (1U << 3) | 168 | #define NFS_CAP_ACLS (1U << 3) |
| 146 | #define NFS_CAP_ATOMIC_OPEN (1U << 4) | 169 | #define NFS_CAP_ATOMIC_OPEN (1U << 4) |
| 147 | 170 | ||
| 171 | |||
| 172 | /* maximum number of slots to use */ | ||
| 173 | #define NFS4_MAX_SLOT_TABLE RPC_MAX_SLOT_TABLE | ||
| 174 | |||
| 175 | #if defined(CONFIG_NFS_V4_1) | ||
| 176 | |||
| 177 | /* Sessions */ | ||
| 178 | #define SLOT_TABLE_SZ (NFS4_MAX_SLOT_TABLE/(8*sizeof(long))) | ||
| 179 | struct nfs4_slot_table { | ||
| 180 | struct nfs4_slot *slots; /* seqid per slot */ | ||
| 181 | unsigned long used_slots[SLOT_TABLE_SZ]; /* used/unused bitmap */ | ||
| 182 | spinlock_t slot_tbl_lock; | ||
| 183 | struct rpc_wait_queue slot_tbl_waitq; /* allocators may wait here */ | ||
| 184 | int max_slots; /* # slots in table */ | ||
| 185 | int highest_used_slotid; /* sent to server on each SEQ. | ||
| 186 | * op for dynamic resizing */ | ||
| 187 | }; | ||
| 188 | |||
| 189 | static inline int slot_idx(struct nfs4_slot_table *tbl, struct nfs4_slot *sp) | ||
| 190 | { | ||
| 191 | return sp - tbl->slots; | ||
| 192 | } | ||
| 193 | |||
| 194 | /* | ||
| 195 | * Session related parameters | ||
| 196 | */ | ||
| 197 | struct nfs4_session { | ||
| 198 | struct nfs4_sessionid sess_id; | ||
| 199 | u32 flags; | ||
| 200 | unsigned long session_state; | ||
| 201 | u32 hash_alg; | ||
| 202 | u32 ssv_len; | ||
| 203 | |||
| 204 | /* The fore and back channel */ | ||
| 205 | struct nfs4_channel_attrs fc_attrs; | ||
| 206 | struct nfs4_slot_table fc_slot_table; | ||
| 207 | struct nfs4_channel_attrs bc_attrs; | ||
| 208 | struct nfs4_slot_table bc_slot_table; | ||
| 209 | struct nfs_client *clp; | ||
| 210 | }; | ||
| 211 | |||
| 212 | #endif /* CONFIG_NFS_V4_1 */ | ||
| 148 | #endif | 213 | #endif |
