~ubuntu-branches/ubuntu/lucid/linux-rt/lucid

« back to all changes in this revision

Viewing changes to include/linux/nfs_fs_sb.h

  • Committer: Bazaar Package Importer
  • Author(s): Luke Yelavich
  • Date: 2009-08-05 23:00:52 UTC
  • Revision ID: james.westby@ubuntu.com-20090805230052-7xedvqcyk9dnnxb2
Tags: 2.6.31-1.1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
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>
7
9
 
8
10
#include <asm/atomic.h>
9
11
 
 
12
struct nfs4_session;
10
13
struct nfs_iostats;
11
14
struct nlm_host;
 
15
struct nfs4_sequence_args;
 
16
struct nfs4_sequence_res;
 
17
struct nfs_server;
12
18
 
13
19
/*
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 */
32
39
        const struct nfs_rpc_ops *rpc_ops;      /* NFS protocol vector */
33
40
        int                     cl_proto;       /* Network transport protocol */
34
41
 
 
42
        u32                     cl_minorversion;/* NFSv4 minorversion */
35
43
        struct rpc_cred         *cl_machine_cred;
36
44
 
37
45
#ifdef CONFIG_NFS_V4
63
71
         */
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,
 
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 */
 
90
 
 
91
#ifdef CONFIG_NFS_FSCACHE
 
92
        struct fscache_cookie   *fscache;       /* client index cache cookie */
66
93
#endif
67
94
};
68
95
 
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 */
99
128
 
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 */
104
133
 
 
134
#ifdef CONFIG_NFS_FSCACHE
 
135
        struct nfs_fscache_key  *fscache_key;   /* unique key for superblock */
 
136
        struct fscache_cookie   *fscache;       /* superblock cookie */
 
137
#endif
 
138
 
105
139
#ifdef CONFIG_NFS_V4
106
140
        u32                     attr_bitmask[2];/* V4 bitmask representing the set
107
141
                                                   of attributes supported on this
108
142
                                                   filesystem */
 
143
        u32                     cache_consistency_bitmask[2];
 
144
                                                /* V4 bitmask representing the subset
 
145
                                                   of change attribute, size, ctime
 
146
                                                   and mtime attributes supported by
 
147
                                                   the server */
109
148
        u32                     acl_bitmask;    /* V4 bitmask representing the ACEs
110
149
                                                   that are supported on this
111
150
                                                   filesystem */
129
168
#define NFS_CAP_ACLS            (1U << 3)
130
169
#define NFS_CAP_ATOMIC_OPEN     (1U << 4)
131
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 */
132
213
#endif