| 
									
										
										
										
											2012-03-21 09:52:05 -04:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * per net namespace data structures for nfsd | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Copyright (C) 2012, Jeff Layton <jlayton@redhat.com> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software; you can redistribute it and/or modify it | 
					
						
							|  |  |  |  * under the terms of the GNU General Public License as published by the Free | 
					
						
							|  |  |  |  * Software Foundation; either version 2 of the License, or (at your option) | 
					
						
							|  |  |  |  * any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, but WITHOUT | 
					
						
							|  |  |  |  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | 
					
						
							|  |  |  |  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for | 
					
						
							|  |  |  |  * more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU General Public License along with | 
					
						
							|  |  |  |  * this program; if not, write to the Free Software Foundation, Inc., 51 | 
					
						
							|  |  |  |  * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef __NFSD_NETNS_H__
 | 
					
						
							|  |  |  | #define __NFSD_NETNS_H__
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <net/net_namespace.h>
 | 
					
						
							|  |  |  | #include <net/netns/generic.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-11-14 18:21:16 +03:00
										 |  |  | /* Hash tables for nfs4_clientid state */ | 
					
						
							|  |  |  | #define CLIENT_HASH_BITS                 4
 | 
					
						
							|  |  |  | #define CLIENT_HASH_SIZE                (1 << CLIENT_HASH_BITS)
 | 
					
						
							|  |  |  | #define CLIENT_HASH_MASK                (CLIENT_HASH_SIZE - 1)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-11-14 18:21:46 +03:00
										 |  |  | #define LOCKOWNER_INO_HASH_BITS		8
 | 
					
						
							|  |  |  | #define LOCKOWNER_INO_HASH_SIZE		(1 << LOCKOWNER_INO_HASH_BITS)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-11-14 18:21:51 +03:00
										 |  |  | #define SESSION_HASH_SIZE	512
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-21 09:52:05 -04:00
										 |  |  | struct cld_net; | 
					
						
							| 
									
										
										
										
											2012-12-04 14:29:27 +03:00
										 |  |  | struct nfsd4_client_tracking_ops; | 
					
						
							| 
									
										
										
										
											2012-03-21 09:52:05 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | struct nfsd_net { | 
					
						
							|  |  |  | 	struct cld_net *cld_net; | 
					
						
							| 
									
										
										
										
											2012-04-11 15:13:21 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-11 15:13:28 +04:00
										 |  |  | 	struct cache_detail *svc_expkey_cache; | 
					
						
							| 
									
										
										
										
											2012-04-11 15:13:21 +04:00
										 |  |  | 	struct cache_detail *svc_export_cache; | 
					
						
							| 
									
										
										
										
											2012-04-11 17:32:51 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	struct cache_detail *idtoname_cache; | 
					
						
							| 
									
										
										
										
											2012-04-11 17:32:58 +04:00
										 |  |  | 	struct cache_detail *nametoid_cache; | 
					
						
							| 
									
										
										
										
											2012-07-25 16:56:58 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	struct lock_manager nfsd4_manager; | 
					
						
							| 
									
										
										
										
											2012-07-25 16:57:37 +04:00
										 |  |  | 	bool grace_ended; | 
					
						
							| 
									
										
										
										
											2012-07-25 16:57:45 +04:00
										 |  |  | 	time_t boot_time; | 
					
						
							| 
									
										
										
										
											2012-11-14 18:21:16 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * reclaim_str_hashtbl[] holds known client info from previous reset/reboot | 
					
						
							|  |  |  | 	 * used in reboot/reset lease grace period processing | 
					
						
							| 
									
										
										
										
											2012-11-14 18:21:26 +03:00
										 |  |  | 	 * | 
					
						
							|  |  |  | 	 * conf_id_hashtbl[], and conf_name_tree hold confirmed | 
					
						
							|  |  |  | 	 * setclientid_confirmed info. | 
					
						
							| 
									
										
										
										
											2012-11-14 18:21:36 +03:00
										 |  |  | 	 * | 
					
						
							|  |  |  | 	 * unconf_str_hastbl[] and unconf_name_tree hold unconfirmed | 
					
						
							|  |  |  | 	 * setclientid info. | 
					
						
							| 
									
										
										
										
											2012-11-14 18:21:16 +03:00
										 |  |  | 	 */ | 
					
						
							|  |  |  | 	struct list_head *reclaim_str_hashtbl; | 
					
						
							|  |  |  | 	int reclaim_str_hashtbl_size; | 
					
						
							| 
									
										
										
										
											2012-11-14 18:21:21 +03:00
										 |  |  | 	struct list_head *conf_id_hashtbl; | 
					
						
							| 
									
										
										
										
											2012-11-14 18:21:26 +03:00
										 |  |  | 	struct rb_root conf_name_tree; | 
					
						
							| 
									
										
										
										
											2012-11-14 18:21:31 +03:00
										 |  |  | 	struct list_head *unconf_id_hashtbl; | 
					
						
							| 
									
										
										
										
											2012-11-14 18:21:36 +03:00
										 |  |  | 	struct rb_root unconf_name_tree; | 
					
						
							| 
									
										
										
										
											2012-11-14 18:21:41 +03:00
										 |  |  | 	struct list_head *ownerstr_hashtbl; | 
					
						
							| 
									
										
										
										
											2012-11-14 18:21:46 +03:00
										 |  |  | 	struct list_head *lockowner_ino_hashtbl; | 
					
						
							| 
									
										
										
										
											2012-11-14 18:21:51 +03:00
										 |  |  | 	struct list_head *sessionid_hashtbl; | 
					
						
							| 
									
										
										
										
											2012-11-14 18:21:56 +03:00
										 |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * client_lru holds client queue ordered by nfs4_client.cl_time | 
					
						
							|  |  |  | 	 * for lease renewal. | 
					
						
							| 
									
										
										
										
											2012-11-14 18:22:01 +03:00
										 |  |  | 	 * | 
					
						
							|  |  |  | 	 * close_lru holds (open) stateowner queue ordered by nfs4_stateowner.so_time | 
					
						
							|  |  |  | 	 * for last close replay. | 
					
						
							|  |  |  | 	 * | 
					
						
							|  |  |  | 	 * All of the above fields are protected by the client_mutex. | 
					
						
							| 
									
										
										
										
											2012-11-14 18:21:56 +03:00
										 |  |  | 	 */ | 
					
						
							|  |  |  | 	struct list_head client_lru; | 
					
						
							| 
									
										
										
										
											2012-11-14 18:22:01 +03:00
										 |  |  | 	struct list_head close_lru; | 
					
						
							| 
									
										
										
										
											2012-11-14 18:22:17 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	struct delayed_work laundromat_work; | 
					
						
							| 
									
										
										
										
											2012-11-26 15:21:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* client_lock protects the client lru list and session hash table */ | 
					
						
							|  |  |  | 	spinlock_t client_lock; | 
					
						
							| 
									
										
										
										
											2012-11-26 16:16:25 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	struct file *rec_file; | 
					
						
							| 
									
										
										
										
											2012-11-26 16:16:30 +03:00
										 |  |  | 	bool in_grace; | 
					
						
							| 
									
										
										
										
											2012-12-04 14:29:27 +03:00
										 |  |  | 	struct nfsd4_client_tracking_ops *client_tracking_ops; | 
					
						
							| 
									
										
										
										
											2012-11-27 14:11:44 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	time_t nfsd4_lease; | 
					
						
							| 
									
										
										
										
											2012-11-27 14:11:49 +03:00
										 |  |  | 	time_t nfsd4_grace; | 
					
						
							| 
									
										
										
										
											2012-12-06 14:23:14 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	bool nfsd_net_up; | 
					
						
							| 
									
										
										
										
											2012-12-06 14:23:19 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * Time of server startup | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	struct timeval nfssvc_boot; | 
					
						
							| 
									
										
										
										
											2012-12-06 14:23:24 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	struct svc_serv *nfsd_serv; | 
					
						
							| 
									
										
										
										
											2012-03-21 09:52:05 -04:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-11-29 11:40:39 -05:00
										 |  |  | /* Simple check to find out if a given net was properly initialized */ | 
					
						
							|  |  |  | #define nfsd_netns_ready(nn) ((nn)->sessionid_hashtbl)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-21 09:52:05 -04:00
										 |  |  | extern int nfsd_net_id; | 
					
						
							|  |  |  | #endif /* __NFSD_NETNS_H__ */
 |