4
4
#include <linux/list.h>
5
5
#include <linux/backing-dev.h>
6
6
#include <linux/wait.h>
7
#include <linux/nfs_xdr.h>
8
#include <linux/sunrpc/xprt.h>
8
10
#include <asm/atomic.h>
10
13
struct nfs_iostats;
15
struct nfs4_sequence_args;
16
struct nfs4_sequence_res;
14
20
* The nfs_client identifies our client state to the server.
18
24
int cl_cons_state; /* current construction state (-ve: init error) */
19
25
#define NFS_CS_READY 0 /* ready to be used */
20
26
#define NFS_CS_INITING 1 /* busy initialising */
27
#define NFS_CS_SESSION_INITING 2 /* busy initialising session */
21
28
unsigned long cl_res_state; /* NFS resources state */
22
29
#define NFS_CS_CALLBACK 1 /* - callback started */
23
30
#define NFS_CS_IDMAP 2 /* - idmap started */
64
72
char cl_ipaddr[48];
65
73
unsigned char cl_id_uniquifier;
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,
79
#endif /* CONFIG_NFS_V4 */
81
#ifdef CONFIG_NFS_V4_1
82
/* clientid returned from EXCHANGE_ID, used by session operations */
84
/* The sequence id to use for the next CREATE_SESSION */
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 */
91
#ifdef CONFIG_NFS_FSCACHE
92
struct fscache_cookie *fscache; /* client index cache cookie */
96
123
unsigned int acdirmin;
97
124
unsigned int acdirmax;
98
125
unsigned int namelen;
126
unsigned int options; /* extra options enabled by mount */
127
#define NFS_OPTION_FSCACHE 0x00000001 /* - local caching enabled */
100
129
struct nfs_fsid fsid;
101
130
__u64 maxfilesize; /* maximum file size */
102
131
unsigned long mount_time; /* when this fs was mounted */
103
132
dev_t s_dev; /* superblock dev numbers */
134
#ifdef CONFIG_NFS_FSCACHE
135
struct nfs_fscache_key *fscache_key; /* unique key for superblock */
136
struct fscache_cookie *fscache; /* superblock cookie */
105
139
#ifdef CONFIG_NFS_V4
106
140
u32 attr_bitmask[2];/* V4 bitmask representing the set
107
141
of attributes supported on this
143
u32 cache_consistency_bitmask[2];
144
/* V4 bitmask representing the subset
145
of change attribute, size, ctime
146
and mtime attributes supported by
109
148
u32 acl_bitmask; /* V4 bitmask representing the ACEs
110
149
that are supported on this
129
168
#define NFS_CAP_ACLS (1U << 3)
130
169
#define NFS_CAP_ATOMIC_OPEN (1U << 4)
172
/* maximum number of slots to use */
173
#define NFS4_MAX_SLOT_TABLE RPC_MAX_SLOT_TABLE
175
#if defined(CONFIG_NFS_V4_1)
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 */
189
static inline int slot_idx(struct nfs4_slot_table *tbl, struct nfs4_slot *sp)
191
return sp - tbl->slots;
195
* Session related parameters
197
struct nfs4_session {
198
struct nfs4_sessionid sess_id;
200
unsigned long session_state;
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;
212
#endif /* CONFIG_NFS_V4_1 */