diff options
Diffstat (limited to 'include/linux/nfs_fs_sb.h')
-rw-r--r-- | include/linux/nfs_fs_sb.h | 89 |
1 files changed, 73 insertions, 16 deletions
diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h index 6b4a13c79474..7ccfc7ef0a83 100644 --- a/include/linux/nfs_fs_sb.h +++ b/include/linux/nfs_fs_sb.h | |||
@@ -7,13 +7,79 @@ | |||
7 | struct nfs_iostats; | 7 | struct nfs_iostats; |
8 | 8 | ||
9 | /* | 9 | /* |
10 | * The nfs_client identifies our client state to the server. | ||
11 | */ | ||
12 | struct nfs_client { | ||
13 | atomic_t cl_count; | ||
14 | int cl_cons_state; /* current construction state (-ve: init error) */ | ||
15 | #define NFS_CS_READY 0 /* ready to be used */ | ||
16 | #define NFS_CS_INITING 1 /* busy initialising */ | ||
17 | int cl_nfsversion; /* NFS protocol version */ | ||
18 | unsigned long cl_res_state; /* NFS resources state */ | ||
19 | #define NFS_CS_RPCIOD 0 /* - rpciod started */ | ||
20 | #define NFS_CS_CALLBACK 1 /* - callback started */ | ||
21 | #define NFS_CS_IDMAP 2 /* - idmap started */ | ||
22 | #define NFS_CS_RENEWD 3 /* - renewd started */ | ||
23 | struct sockaddr_in cl_addr; /* server identifier */ | ||
24 | char * cl_hostname; /* hostname of server */ | ||
25 | struct list_head cl_share_link; /* link in global client list */ | ||
26 | struct list_head cl_superblocks; /* List of nfs_server structs */ | ||
27 | |||
28 | struct rpc_clnt * cl_rpcclient; | ||
29 | const struct nfs_rpc_ops *rpc_ops; /* NFS protocol vector */ | ||
30 | unsigned long retrans_timeo; /* retransmit timeout */ | ||
31 | unsigned int retrans_count; /* number of retransmit tries */ | ||
32 | |||
33 | #ifdef CONFIG_NFS_V4 | ||
34 | u64 cl_clientid; /* constant */ | ||
35 | nfs4_verifier cl_confirm; | ||
36 | unsigned long cl_state; | ||
37 | |||
38 | u32 cl_lockowner_id; | ||
39 | |||
40 | /* | ||
41 | * The following rwsem ensures exclusive access to the server | ||
42 | * while we recover the state following a lease expiration. | ||
43 | */ | ||
44 | struct rw_semaphore cl_sem; | ||
45 | |||
46 | struct list_head cl_delegations; | ||
47 | struct list_head cl_state_owners; | ||
48 | struct list_head cl_unused; | ||
49 | int cl_nunused; | ||
50 | spinlock_t cl_lock; | ||
51 | |||
52 | unsigned long cl_lease_time; | ||
53 | unsigned long cl_last_renewal; | ||
54 | struct work_struct cl_renewd; | ||
55 | |||
56 | struct rpc_wait_queue cl_rpcwaitq; | ||
57 | |||
58 | /* used for the setclientid verifier */ | ||
59 | struct timespec cl_boot_time; | ||
60 | |||
61 | /* idmapper */ | ||
62 | struct idmap * cl_idmap; | ||
63 | |||
64 | /* Our own IP address, as a null-terminated string. | ||
65 | * This is used to generate the clientid, and the callback address. | ||
66 | */ | ||
67 | char cl_ipaddr[16]; | ||
68 | unsigned char cl_id_uniquifier; | ||
69 | #endif | ||
70 | }; | ||
71 | |||
72 | /* | ||
10 | * NFS client parameters stored in the superblock. | 73 | * NFS client parameters stored in the superblock. |
11 | */ | 74 | */ |
12 | struct nfs_server { | 75 | struct nfs_server { |
76 | struct nfs_client * nfs_client; /* shared client and NFS4 state */ | ||
77 | struct list_head client_link; /* List of other nfs_server structs | ||
78 | * that share the same client | ||
79 | */ | ||
80 | struct list_head master_link; /* link in master servers list */ | ||
13 | struct rpc_clnt * client; /* RPC client handle */ | 81 | struct rpc_clnt * client; /* RPC client handle */ |
14 | struct rpc_clnt * client_sys; /* 2nd handle for FSINFO */ | ||
15 | struct rpc_clnt * client_acl; /* ACL RPC client handle */ | 82 | struct rpc_clnt * client_acl; /* ACL RPC client handle */ |
16 | struct nfs_rpc_ops * rpc_ops; /* NFS protocol vector */ | ||
17 | struct nfs_iostats * io_stats; /* I/O statistics */ | 83 | struct nfs_iostats * io_stats; /* I/O statistics */ |
18 | struct backing_dev_info backing_dev_info; | 84 | struct backing_dev_info backing_dev_info; |
19 | int flags; /* various flags */ | 85 | int flags; /* various flags */ |
@@ -29,24 +95,14 @@ struct nfs_server { | |||
29 | unsigned int acregmax; | 95 | unsigned int acregmax; |
30 | unsigned int acdirmin; | 96 | unsigned int acdirmin; |
31 | unsigned int acdirmax; | 97 | unsigned int acdirmax; |
32 | unsigned long retrans_timeo; /* retransmit timeout */ | ||
33 | unsigned int retrans_count; /* number of retransmit tries */ | ||
34 | unsigned int namelen; | 98 | unsigned int namelen; |
35 | char * hostname; /* remote hostname */ | 99 | |
36 | struct nfs_fh fh; | ||
37 | struct sockaddr_in addr; | ||
38 | struct nfs_fsid fsid; | 100 | struct nfs_fsid fsid; |
101 | __u64 maxfilesize; /* maximum file size */ | ||
39 | unsigned long mount_time; /* when this fs was mounted */ | 102 | unsigned long mount_time; /* when this fs was mounted */ |
103 | dev_t s_dev; /* superblock dev numbers */ | ||
104 | |||
40 | #ifdef CONFIG_NFS_V4 | 105 | #ifdef CONFIG_NFS_V4 |
41 | /* Our own IP address, as a null-terminated string. | ||
42 | * This is used to generate the clientid, and the callback address. | ||
43 | */ | ||
44 | char ip_addr[16]; | ||
45 | char * mnt_path; | ||
46 | struct nfs4_client * nfs4_state; /* all NFSv4 state starts here */ | ||
47 | struct list_head nfs4_siblings; /* List of other nfs_server structs | ||
48 | * that share the same clientid | ||
49 | */ | ||
50 | u32 attr_bitmask[2];/* V4 bitmask representing the set | 106 | u32 attr_bitmask[2];/* V4 bitmask representing the set |
51 | of attributes supported on this | 107 | of attributes supported on this |
52 | filesystem */ | 108 | filesystem */ |
@@ -54,6 +110,7 @@ struct nfs_server { | |||
54 | that are supported on this | 110 | that are supported on this |
55 | filesystem */ | 111 | filesystem */ |
56 | #endif | 112 | #endif |
113 | void (*destroy)(struct nfs_server *); | ||
57 | }; | 114 | }; |
58 | 115 | ||
59 | /* Server capabilities */ | 116 | /* Server capabilities */ |