Blame view
include/linux/nfs_fs_sb.h
6.72 KB
1da177e4c
|
1 2 3 4 5 |
#ifndef _NFS_FS_SB #define _NFS_FS_SB #include <linux/list.h> #include <linux/backing-dev.h> |
ef818a28f
|
6 |
#include <linux/wait.h> |
557134a39
|
7 8 |
#include <linux/nfs_xdr.h> #include <linux/sunrpc/xprt.h> |
ef818a28f
|
9 10 |
#include <asm/atomic.h> |
1da177e4c
|
11 |
|
557134a39
|
12 |
struct nfs4_session; |
d9ef5a8c2
|
13 |
struct nfs_iostats; |
9289e7f91
|
14 |
struct nlm_host; |
cccef3b96
|
15 16 17 |
struct nfs4_sequence_args; struct nfs4_sequence_res; struct nfs_server; |
97dc13594
|
18 |
struct nfs4_minor_version_ops; |
d9ef5a8c2
|
19 |
|
1da177e4c
|
20 |
/* |
24c8dbbb5
|
21 22 23 24 25 26 27 |
* The nfs_client identifies our client state to the server. */ struct nfs_client { atomic_t cl_count; int cl_cons_state; /* current construction state (-ve: init error) */ #define NFS_CS_READY 0 /* ready to be used */ #define NFS_CS_INITING 1 /* busy initialising */ |
76db6d950
|
28 |
#define NFS_CS_SESSION_INITING 2 /* busy initialising session */ |
24c8dbbb5
|
29 |
unsigned long cl_res_state; /* NFS resources state */ |
24c8dbbb5
|
30 31 |
#define NFS_CS_CALLBACK 1 /* - callback started */ #define NFS_CS_IDMAP 2 /* - idmap started */ |
5dd3177ae
|
32 |
#define NFS_CS_RENEWD 3 /* - renewd started */ |
6e4cffd7b
|
33 34 |
struct sockaddr_storage cl_addr; /* server identifier */ size_t cl_addrlen; |
24c8dbbb5
|
35 36 37 38 39 |
char * cl_hostname; /* hostname of server */ struct list_head cl_share_link; /* link in global client list */ struct list_head cl_superblocks; /* List of nfs_server structs */ struct rpc_clnt * cl_rpcclient; |
8fa5c000d
|
40 |
const struct nfs_rpc_ops *rpc_ops; /* NFS protocol vector */ |
59dca3b28
|
41 |
int cl_proto; /* Network transport protocol */ |
24c8dbbb5
|
42 |
|
94a417f3d
|
43 |
u32 cl_minorversion;/* NFSv4 minorversion */ |
7c67db3a8
|
44 |
struct rpc_cred *cl_machine_cred; |
24c8dbbb5
|
45 46 |
#ifdef CONFIG_NFS_V4 u64 cl_clientid; /* constant */ |
24c8dbbb5
|
47 |
unsigned long cl_state; |
9f958ab88
|
48 49 |
struct rb_root cl_openowner_id; struct rb_root cl_lockowner_id; |
24c8dbbb5
|
50 |
|
24c8dbbb5
|
51 |
struct list_head cl_delegations; |
9f958ab88
|
52 |
struct rb_root cl_state_owners; |
24c8dbbb5
|
53 54 55 56 |
spinlock_t cl_lock; unsigned long cl_lease_time; unsigned long cl_last_renewal; |
52bad64d9
|
57 |
struct delayed_work cl_renewd; |
24c8dbbb5
|
58 59 60 61 62 63 64 65 66 67 68 69 |
struct rpc_wait_queue cl_rpcwaitq; /* used for the setclientid verifier */ struct timespec cl_boot_time; /* idmapper */ struct idmap * cl_idmap; /* Our own IP address, as a null-terminated string. * This is used to generate the clientid, and the callback address. */ |
4392f2592
|
70 |
char cl_ipaddr[48]; |
24c8dbbb5
|
71 |
unsigned char cl_id_uniquifier; |
97dc13594
|
72 |
const struct nfs4_minor_version_ops *cl_mvops; |
94a417f3d
|
73 |
#endif /* CONFIG_NFS_V4 */ |
147272813
|
74 |
|
557134a39
|
75 |
#ifdef CONFIG_NFS_V4_1 |
99fe60d06
|
76 77 78 79 80 81 |
/* clientid returned from EXCHANGE_ID, used by session operations */ u64 cl_ex_clid; /* The sequence id to use for the next CREATE_SESSION */ u32 cl_seqid; /* The flags used for obtaining the clientid during EXCHANGE_ID */ u32 cl_exchange_flags; |
557134a39
|
82 83 |
struct nfs4_session *cl_session; /* sharred session */ #endif /* CONFIG_NFS_V4_1 */ |
147272813
|
84 85 86 |
#ifdef CONFIG_NFS_FSCACHE struct fscache_cookie *fscache; /* client index cache cookie */ #endif |
24c8dbbb5
|
87 88 89 |
}; /* |
1da177e4c
|
90 91 92 |
* NFS client parameters stored in the superblock. */ struct nfs_server { |
27951bd26
|
93 |
struct nfs_client * nfs_client; /* shared client and NFS4 state */ |
54ceac451
|
94 95 96 97 |
struct list_head client_link; /* List of other nfs_server structs * that share the same client */ struct list_head master_link; /* link in master servers list */ |
1da177e4c
|
98 |
struct rpc_clnt * client; /* RPC client handle */ |
b7fa0554c
|
99 |
struct rpc_clnt * client_acl; /* ACL RPC client handle */ |
9289e7f91
|
100 |
struct nlm_host *nlm_host; /* NLM client handle */ |
003cb608a
|
101 |
struct nfs_iostats __percpu *io_stats; /* I/O statistics */ |
1da177e4c
|
102 |
struct backing_dev_info backing_dev_info; |
277866a0e
|
103 |
atomic_long_t writeback; /* number of writeback pages */ |
1da177e4c
|
104 105 106 107 108 109 110 111 |
int flags; /* various flags */ unsigned int caps; /* server capabilities */ unsigned int rsize; /* read size */ unsigned int rpages; /* read size (in pages) */ unsigned int wsize; /* write size */ unsigned int wpages; /* write size (in pages) */ unsigned int wtmult; /* server disk block size */ unsigned int dtsize; /* readdir size */ |
f22d6d79f
|
112 |
unsigned short port; /* "port=" setting */ |
1da177e4c
|
113 114 115 116 117 118 |
unsigned int bsize; /* server block size */ unsigned int acregmin; /* attr cache timeouts */ unsigned int acregmax; unsigned int acdirmin; unsigned int acdirmax; unsigned int namelen; |
c6a6f19e2
|
119 120 |
unsigned int options; /* extra options enabled by mount */ #define NFS_OPTION_FSCACHE 0x00000001 /* - local caching enabled */ |
54ceac451
|
121 |
|
8b4bdcf89
|
122 |
struct nfs_fsid fsid; |
54ceac451
|
123 |
__u64 maxfilesize; /* maximum file size */ |
67ec9f46b
|
124 |
unsigned long mount_time; /* when this fs was mounted */ |
54ceac451
|
125 |
dev_t s_dev; /* superblock dev numbers */ |
08734048b
|
126 127 128 129 |
#ifdef CONFIG_NFS_FSCACHE struct nfs_fscache_key *fscache_key; /* unique key for superblock */ struct fscache_cookie *fscache; /* superblock cookie */ #endif |
1da177e4c
|
130 |
#ifdef CONFIG_NFS_V4 |
1da177e4c
|
131 132 133 |
u32 attr_bitmask[2];/* V4 bitmask representing the set of attributes supported on this filesystem */ |
a65318bf3
|
134 135 136 137 138 |
u32 cache_consistency_bitmask[2]; /* V4 bitmask representing the subset of change attribute, size, ctime and mtime attributes supported by the server */ |
1da177e4c
|
139 140 141 142 |
u32 acl_bitmask; /* V4 bitmask representing the ACEs that are supported on this filesystem */ #endif |
54ceac451
|
143 |
void (*destroy)(struct nfs_server *); |
ef818a28f
|
144 145 |
atomic_t active; /* Keep trace of any activity to this server */ |
3f8400d1f
|
146 147 148 149 150 151 152 |
/* mountd-related mount options */ struct sockaddr_storage mountd_address; size_t mountd_addrlen; u32 mountd_version; unsigned short mountd_port; unsigned short mountd_protocol; |
1da177e4c
|
153 154 155 156 157 158 159 160 |
}; /* Server capabilities */ #define NFS_CAP_READDIRPLUS (1U << 0) #define NFS_CAP_HARDLINKS (1U << 1) #define NFS_CAP_SYMLINKS (1U << 2) #define NFS_CAP_ACLS (1U << 3) #define NFS_CAP_ATOMIC_OPEN (1U << 4) |
62ab460cf
|
161 162 163 164 165 166 167 168 169 |
#define NFS_CAP_CHANGE_ATTR (1U << 5) #define NFS_CAP_FILEID (1U << 6) #define NFS_CAP_MODE (1U << 7) #define NFS_CAP_NLINK (1U << 8) #define NFS_CAP_OWNER (1U << 9) #define NFS_CAP_OWNER_GROUP (1U << 10) #define NFS_CAP_ATIME (1U << 11) #define NFS_CAP_CTIME (1U << 12) #define NFS_CAP_MTIME (1U << 13) |
0df5dd4aa
|
170 |
#define NFS_CAP_POSIX_LOCK (1U << 14) |
1da177e4c
|
171 |
|
557134a39
|
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
/* maximum number of slots to use */ #define NFS4_MAX_SLOT_TABLE RPC_MAX_SLOT_TABLE #if defined(CONFIG_NFS_V4_1) /* Sessions */ #define SLOT_TABLE_SZ (NFS4_MAX_SLOT_TABLE/(8*sizeof(long))) struct nfs4_slot_table { struct nfs4_slot *slots; /* seqid per slot */ unsigned long used_slots[SLOT_TABLE_SZ]; /* used/unused bitmap */ spinlock_t slot_tbl_lock; struct rpc_wait_queue slot_tbl_waitq; /* allocators may wait here */ int max_slots; /* # slots in table */ int highest_used_slotid; /* sent to server on each SEQ. * op for dynamic resizing */ |
b9efa1b27
|
188 189 |
int target_max_slots; /* Set by CB_RECALL_SLOT as * the new max_slots */ |
557134a39
|
190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 |
}; static inline int slot_idx(struct nfs4_slot_table *tbl, struct nfs4_slot *sp) { return sp - tbl->slots; } /* * Session related parameters */ struct nfs4_session { struct nfs4_sessionid sess_id; u32 flags; unsigned long session_state; u32 hash_alg; u32 ssv_len; |
ea028ac92
|
206 |
struct completion complete; |
557134a39
|
207 208 209 210 211 |
/* The fore and back channel */ struct nfs4_channel_attrs fc_attrs; struct nfs4_slot_table fc_slot_table; struct nfs4_channel_attrs bc_attrs; |
f8625a6a4
|
212 |
struct nfs4_slot_table bc_slot_table; |
557134a39
|
213 214 215 216 |
struct nfs_client *clp; }; #endif /* CONFIG_NFS_V4_1 */ |
1da177e4c
|
217 |
#endif |