netns.h 2.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
/*
 * 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>

27 28 29 30 31
/* 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)

32 33 34
#define LOCKOWNER_INO_HASH_BITS		8
#define LOCKOWNER_INO_HASH_SIZE		(1 << LOCKOWNER_INO_HASH_BITS)

35 36
#define SESSION_HASH_SIZE	512

37 38 39 40
struct cld_net;

struct nfsd_net {
	struct cld_net *cld_net;
41

42
	struct cache_detail *svc_expkey_cache;
43
	struct cache_detail *svc_export_cache;
44 45

	struct cache_detail *idtoname_cache;
46
	struct cache_detail *nametoid_cache;
47 48

	struct lock_manager nfsd4_manager;
49
	bool grace_ended;
50
	time_t boot_time;
51 52 53 54

	/*
	 * reclaim_str_hashtbl[] holds known client info from previous reset/reboot
	 * used in reboot/reset lease grace period processing
55 56 57
	 *
	 * conf_id_hashtbl[], and conf_name_tree hold confirmed
	 * setclientid_confirmed info.
58 59 60
	 *
	 * unconf_str_hastbl[] and unconf_name_tree hold unconfirmed
	 * setclientid info.
61 62 63
	 */
	struct list_head *reclaim_str_hashtbl;
	int reclaim_str_hashtbl_size;
64
	struct list_head *conf_id_hashtbl;
65
	struct rb_root conf_name_tree;
66
	struct list_head *unconf_id_hashtbl;
67
	struct rb_root unconf_name_tree;
68
	struct list_head *ownerstr_hashtbl;
69
	struct list_head *lockowner_ino_hashtbl;
70
	struct list_head *sessionid_hashtbl;
71 72 73 74 75
	/*
	 * client_lru holds client queue ordered by nfs4_client.cl_time
	 * for lease renewal.
	 */
	struct list_head client_lru;
76 77 78 79
};

extern int nfsd_net_id;
#endif /* __NFSD_NETNS_H__ */