1
2
3
4
5
6
7
8 #ifndef __NFSD_NETNS_H__
9 #define __NFSD_NETNS_H__
10
11 #include <net/net_namespace.h>
12 #include <net/netns/generic.h>
13
14
15 #define CLIENT_HASH_BITS 4
16 #define CLIENT_HASH_SIZE (1 << CLIENT_HASH_BITS)
17 #define CLIENT_HASH_MASK (CLIENT_HASH_SIZE - 1)
18
19 #define SESSION_HASH_SIZE 512
20
21 struct cld_net;
22 struct nfsd4_client_tracking_ops;
23
24
25
26
27
28
29
30
31
32 struct nfsd_net {
33 struct cld_net *cld_net;
34
35 struct cache_detail *svc_expkey_cache;
36 struct cache_detail *svc_export_cache;
37
38 struct cache_detail *idtoname_cache;
39 struct cache_detail *nametoid_cache;
40
41 struct lock_manager nfsd4_manager;
42 bool grace_ended;
43 time_t boot_time;
44
45
46 struct vfsmount *nfsd_mnt;
47
48 struct dentry *nfsd_client_dir;
49
50
51
52
53
54
55
56
57
58
59
60 struct list_head *reclaim_str_hashtbl;
61 int reclaim_str_hashtbl_size;
62 struct list_head *conf_id_hashtbl;
63 struct rb_root conf_name_tree;
64 struct list_head *unconf_id_hashtbl;
65 struct rb_root unconf_name_tree;
66 struct list_head *sessionid_hashtbl;
67
68
69
70
71
72
73
74
75
76 struct list_head client_lru;
77 struct list_head close_lru;
78 struct list_head del_recall_lru;
79
80
81 struct list_head blocked_locks_lru;
82
83 struct delayed_work laundromat_work;
84
85
86 spinlock_t client_lock;
87
88
89 spinlock_t blocked_locks_lock;
90
91 struct file *rec_file;
92 bool in_grace;
93 const struct nfsd4_client_tracking_ops *client_tracking_ops;
94
95 time_t nfsd4_lease;
96 time_t nfsd4_grace;
97 bool somebody_reclaimed;
98
99 bool track_reclaim_completes;
100 atomic_t nr_reclaim_complete;
101
102 bool nfsd_net_up;
103 bool lockd_up;
104
105
106 struct timespec64 nfssvc_boot;
107 seqlock_t boot_lock;
108
109
110
111
112
113 unsigned int max_connections;
114
115 u32 clientid_base;
116 u32 clientid_counter;
117 u32 clverifier_counter;
118
119 struct svc_serv *nfsd_serv;
120
121 wait_queue_head_t ntf_wq;
122 atomic_t ntf_refcnt;
123
124
125
126
127
128 u32 s2s_cp_cl_id;
129 struct idr s2s_cp_stateids;
130 spinlock_t s2s_cp_lock;
131
132
133
134
135 bool *nfsd_versions;
136 bool *nfsd4_minorversions;
137
138
139
140
141 struct nfsd_drc_bucket *drc_hashtbl;
142 struct kmem_cache *drc_slab;
143
144
145 unsigned int max_drc_entries;
146
147
148 unsigned int maskbits;
149 unsigned int drc_hashsize;
150
151
152
153
154
155
156
157
158
159
160 atomic_t num_drc_entries;
161
162
163 unsigned int payload_misses;
164
165
166 unsigned int drc_mem_usage;
167
168
169 unsigned int longest_chain;
170
171
172 unsigned int longest_chain_cachesize;
173
174 struct shrinker nfsd_reply_cache_shrinker;
175 };
176
177
178 #define nfsd_netns_ready(nn) ((nn)->sessionid_hashtbl)
179
180 extern void nfsd_netns_free_versions(struct nfsd_net *nn);
181
182 extern unsigned int nfsd_net_id;
183
184 void nfsd_copy_boot_verifier(__be32 verf[2], struct nfsd_net *nn);
185 void nfsd_reset_boot_verifier(struct nfsd_net *nn);
186 #endif