| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #ifndef _NFS_FS_SB | 
|  | 2 | #define _NFS_FS_SB | 
|  | 3 |  | 
|  | 4 | #include <linux/list.h> | 
|  | 5 | #include <linux/backing-dev.h> | 
| Trond Myklebust | 9157c31 | 2012-01-17 22:04:24 -0500 | [diff] [blame] | 6 | #include <linux/idr.h> | 
| Steve Dickson | ef818a2 | 2007-11-08 04:05:04 -0500 | [diff] [blame] | 7 | #include <linux/wait.h> | 
| Andy Adamson | 557134a | 2009-04-01 09:21:53 -0400 | [diff] [blame] | 8 | #include <linux/nfs_xdr.h> | 
|  | 9 | #include <linux/sunrpc/xprt.h> | 
| Steve Dickson | ef818a2 | 2007-11-08 04:05:04 -0500 | [diff] [blame] | 10 |  | 
| Arun Sharma | 6006349 | 2011-07-26 16:09:06 -0700 | [diff] [blame] | 11 | #include <linux/atomic.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 12 |  | 
| Andy Adamson | 557134a | 2009-04-01 09:21:53 -0400 | [diff] [blame] | 13 | struct nfs4_session; | 
| Chuck Lever | d9ef5a8 | 2006-03-20 13:44:13 -0500 | [diff] [blame] | 14 | struct nfs_iostats; | 
| Chuck Lever | 9289e7f | 2008-01-11 17:09:52 -0500 | [diff] [blame] | 15 | struct nlm_host; | 
| Andy Adamson | cccef3b | 2009-04-01 09:22:03 -0400 | [diff] [blame] | 16 | struct nfs4_sequence_args; | 
|  | 17 | struct nfs4_sequence_res; | 
|  | 18 | struct nfs_server; | 
| Trond Myklebust | 97dc135 | 2010-06-16 09:52:26 -0400 | [diff] [blame] | 19 | struct nfs4_minor_version_ops; | 
| Weston Andros Adamson | 78fe0f4 | 2011-05-31 19:05:47 -0400 | [diff] [blame] | 20 | struct server_scope; | 
| Weston Andros Adamson | 7d2ed9a | 2012-02-17 15:20:26 -0500 | [diff] [blame] | 21 | struct nfs41_impl_id; | 
| Chuck Lever | d9ef5a8 | 2006-03-20 13:44:13 -0500 | [diff] [blame] | 22 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 23 | /* | 
| David Howells | 24c8dbb | 2006-08-22 20:06:10 -0400 | [diff] [blame] | 24 | * The nfs_client identifies our client state to the server. | 
|  | 25 | */ | 
|  | 26 | struct nfs_client { | 
|  | 27 | atomic_t		cl_count; | 
|  | 28 | int			cl_cons_state;	/* current construction state (-ve: init error) */ | 
|  | 29 | #define NFS_CS_READY		0		/* ready to be used */ | 
|  | 30 | #define NFS_CS_INITING		1		/* busy initialising */ | 
| Andy Adamson | 76db6d9 | 2009-04-01 09:22:38 -0400 | [diff] [blame] | 31 | #define NFS_CS_SESSION_INITING	2		/* busy initialising  session */ | 
| David Howells | 24c8dbb | 2006-08-22 20:06:10 -0400 | [diff] [blame] | 32 | unsigned long		cl_res_state;	/* NFS resources state */ | 
| David Howells | 24c8dbb | 2006-08-22 20:06:10 -0400 | [diff] [blame] | 33 | #define NFS_CS_CALLBACK		1		/* - callback started */ | 
|  | 34 | #define NFS_CS_IDMAP		2		/* - idmap started */ | 
| Trond Myklebust | 5dd3177 | 2006-08-24 01:03:05 -0400 | [diff] [blame] | 35 | #define NFS_CS_RENEWD		3		/* - renewd started */ | 
| Andy Adamson | d3b4c9d | 2011-03-01 01:34:10 +0000 | [diff] [blame] | 36 | #define NFS_CS_STOP_RENEW	4		/* no more state to renew */ | 
| Andy Adamson | d6fb79d | 2011-03-01 01:34:11 +0000 | [diff] [blame] | 37 | #define NFS_CS_CHECK_LEASE_TIME	5		/* need to check lease time */ | 
| Chuck Lever | 6e4cffd | 2007-12-10 14:58:15 -0500 | [diff] [blame] | 38 | struct sockaddr_storage	cl_addr;	/* server identifier */ | 
|  | 39 | size_t			cl_addrlen; | 
| David Howells | 24c8dbb | 2006-08-22 20:06:10 -0400 | [diff] [blame] | 40 | char *			cl_hostname;	/* hostname of server */ | 
|  | 41 | struct list_head	cl_share_link;	/* link in global client list */ | 
|  | 42 | struct list_head	cl_superblocks;	/* List of nfs_server structs */ | 
|  | 43 |  | 
|  | 44 | struct rpc_clnt *	cl_rpcclient; | 
| David Howells | 8fa5c00 | 2006-08-22 20:06:12 -0400 | [diff] [blame] | 45 | const struct nfs_rpc_ops *rpc_ops;	/* NFS protocol vector */ | 
| Trond Myklebust | 59dca3b | 2008-01-03 16:29:06 -0500 | [diff] [blame] | 46 | int			cl_proto;	/* Network transport protocol */ | 
| David Howells | 24c8dbb | 2006-08-22 20:06:10 -0400 | [diff] [blame] | 47 |  | 
| Benny Halevy | 94a417f | 2009-04-01 09:21:49 -0400 | [diff] [blame] | 48 | u32			cl_minorversion;/* NFSv4 minorversion */ | 
| Trond Myklebust | 7c67db3 | 2008-04-07 20:50:11 -0400 | [diff] [blame] | 49 | struct rpc_cred		*cl_machine_cred; | 
|  | 50 |  | 
| David Howells | 24c8dbb | 2006-08-22 20:06:10 -0400 | [diff] [blame] | 51 | #ifdef CONFIG_NFS_V4 | 
|  | 52 | u64			cl_clientid;	/* constant */ | 
| Trond Myklebust | fd954ae | 2011-04-24 14:28:18 -0400 | [diff] [blame] | 53 | nfs4_verifier		cl_confirm;	/* Clientid verifier */ | 
| David Howells | 24c8dbb | 2006-08-22 20:06:10 -0400 | [diff] [blame] | 54 | unsigned long		cl_state; | 
|  | 55 |  | 
| David Howells | 24c8dbb | 2006-08-22 20:06:10 -0400 | [diff] [blame] | 56 | spinlock_t		cl_lock; | 
|  | 57 |  | 
|  | 58 | unsigned long		cl_lease_time; | 
|  | 59 | unsigned long		cl_last_renewal; | 
| David Howells | 52bad64 | 2006-11-22 14:54:01 +0000 | [diff] [blame] | 60 | struct delayed_work	cl_renewd; | 
| David Howells | 24c8dbb | 2006-08-22 20:06:10 -0400 | [diff] [blame] | 61 |  | 
|  | 62 | struct rpc_wait_queue	cl_rpcwaitq; | 
|  | 63 |  | 
|  | 64 | /* used for the setclientid verifier */ | 
|  | 65 | struct timespec		cl_boot_time; | 
|  | 66 |  | 
|  | 67 | /* idmapper */ | 
|  | 68 | struct idmap *		cl_idmap; | 
|  | 69 |  | 
|  | 70 | /* Our own IP address, as a null-terminated string. | 
|  | 71 | * This is used to generate the clientid, and the callback address. | 
|  | 72 | */ | 
| Chuck Lever | 4392f25 | 2007-12-10 14:57:01 -0500 | [diff] [blame] | 73 | char			cl_ipaddr[48]; | 
| David Howells | 24c8dbb | 2006-08-22 20:06:10 -0400 | [diff] [blame] | 74 | unsigned char		cl_id_uniquifier; | 
| Andy Adamson | f4eecd5 | 2011-01-06 02:04:30 +0000 | [diff] [blame] | 75 | u32			cl_cb_ident;	/* v4.0 callback identifier */ | 
| Trond Myklebust | 97dc135 | 2010-06-16 09:52:26 -0400 | [diff] [blame] | 76 | const struct nfs4_minor_version_ops *cl_mvops; | 
| David Howells | 1472728 | 2009-04-03 16:42:42 +0100 | [diff] [blame] | 77 |  | 
| Benny Halevy | 99fe60d | 2009-04-01 09:22:29 -0400 | [diff] [blame] | 78 | /* The sequence id to use for the next CREATE_SESSION */ | 
|  | 79 | u32			cl_seqid; | 
|  | 80 | /* The flags used for obtaining the clientid during EXCHANGE_ID */ | 
|  | 81 | u32			cl_exchange_flags; | 
| Andy Adamson | 557134a | 2009-04-01 09:21:53 -0400 | [diff] [blame] | 82 | struct nfs4_session	*cl_session; 	/* sharred session */ | 
| Trond Myklebust | 0400a6b | 2011-03-09 16:00:53 -0500 | [diff] [blame] | 83 | #endif /* CONFIG_NFS_V4 */ | 
| Andy Adamson | 557134a | 2009-04-01 09:21:53 -0400 | [diff] [blame] | 84 |  | 
| David Howells | 1472728 | 2009-04-03 16:42:42 +0100 | [diff] [blame] | 85 | #ifdef CONFIG_NFS_FSCACHE | 
|  | 86 | struct fscache_cookie	*fscache;	/* client index cache cookie */ | 
|  | 87 | #endif | 
| Weston Andros Adamson | 78fe0f4 | 2011-05-31 19:05:47 -0400 | [diff] [blame] | 88 |  | 
|  | 89 | struct server_scope	*server_scope;	/* from exchange_id */ | 
| Weston Andros Adamson | 7d2ed9a | 2012-02-17 15:20:26 -0500 | [diff] [blame] | 90 | struct nfs41_impl_id	*impl_id;	/* from exchange_id */ | 
| Stanislav Kinsbursky | e50a7a1 | 2012-01-10 16:12:46 +0400 | [diff] [blame] | 91 | struct net		*net; | 
| David Howells | 24c8dbb | 2006-08-22 20:06:10 -0400 | [diff] [blame] | 92 | }; | 
|  | 93 |  | 
|  | 94 | /* | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 95 | * NFS client parameters stored in the superblock. | 
|  | 96 | */ | 
|  | 97 | struct nfs_server { | 
| David Howells | 27951bd | 2006-08-22 20:06:11 -0400 | [diff] [blame] | 98 | struct nfs_client *	nfs_client;	/* shared client and NFS4 state */ | 
| David Howells | 54ceac4 | 2006-08-22 20:06:13 -0400 | [diff] [blame] | 99 | struct list_head	client_link;	/* List of other nfs_server structs | 
|  | 100 | * that share the same client | 
|  | 101 | */ | 
|  | 102 | struct list_head	master_link;	/* link in master servers list */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 103 | struct rpc_clnt *	client;		/* RPC client handle */ | 
| Andreas Gruenbacher | b7fa055 | 2005-06-22 17:16:27 +0000 | [diff] [blame] | 104 | struct rpc_clnt *	client_acl;	/* ACL RPC client handle */ | 
| Chuck Lever | 9289e7f | 2008-01-11 17:09:52 -0500 | [diff] [blame] | 105 | struct nlm_host		*nlm_host;	/* NLM client handle */ | 
| Tejun Heo | 003cb60 | 2010-02-02 14:39:01 +0900 | [diff] [blame] | 106 | struct nfs_iostats __percpu *io_stats;	/* I/O statistics */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 107 | struct backing_dev_info	backing_dev_info; | 
| Peter Zijlstra | 277866a | 2007-05-08 00:35:12 -0700 | [diff] [blame] | 108 | atomic_long_t		writeback;	/* number of writeback pages */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 109 | int			flags;		/* various flags */ | 
|  | 110 | unsigned int		caps;		/* server capabilities */ | 
|  | 111 | unsigned int		rsize;		/* read size */ | 
|  | 112 | unsigned int		rpages;		/* read size (in pages) */ | 
|  | 113 | unsigned int		wsize;		/* write size */ | 
|  | 114 | unsigned int		wpages;		/* write size (in pages) */ | 
|  | 115 | unsigned int		wtmult;		/* server disk block size */ | 
|  | 116 | unsigned int		dtsize;		/* readdir size */ | 
| Chuck Lever | f22d6d7 | 2008-03-14 14:10:22 -0400 | [diff] [blame] | 117 | unsigned short		port;		/* "port=" setting */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 118 | unsigned int		bsize;		/* server block size */ | 
|  | 119 | unsigned int		acregmin;	/* attr cache timeouts */ | 
|  | 120 | unsigned int		acregmax; | 
|  | 121 | unsigned int		acdirmin; | 
|  | 122 | unsigned int		acdirmax; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 123 | unsigned int		namelen; | 
| David Howells | c6a6f19 | 2009-04-03 16:42:42 +0100 | [diff] [blame] | 124 | unsigned int		options;	/* extra options enabled by mount */ | 
|  | 125 | #define NFS_OPTION_FSCACHE	0x00000001	/* - local caching enabled */ | 
| David Howells | 54ceac4 | 2006-08-22 20:06:13 -0400 | [diff] [blame] | 126 |  | 
| Trond Myklebust | 8b4bdcf | 2006-06-09 09:34:19 -0400 | [diff] [blame] | 127 | struct nfs_fsid		fsid; | 
| David Howells | 54ceac4 | 2006-08-22 20:06:13 -0400 | [diff] [blame] | 128 | __u64			maxfilesize;	/* maximum file size */ | 
| Ricardo Labiaga | 6b96724 | 2010-10-12 16:30:05 -0700 | [diff] [blame] | 129 | struct timespec		time_delta;	/* smallest time granularity */ | 
| Chuck Lever | 67ec9f4 | 2006-03-20 13:44:15 -0500 | [diff] [blame] | 130 | unsigned long		mount_time;	/* when this fs was mounted */ | 
| David Howells | 54ceac4 | 2006-08-22 20:06:13 -0400 | [diff] [blame] | 131 | dev_t			s_dev;		/* superblock dev numbers */ | 
|  | 132 |  | 
| David Howells | 0873404 | 2009-04-03 16:42:42 +0100 | [diff] [blame] | 133 | #ifdef CONFIG_NFS_FSCACHE | 
|  | 134 | struct nfs_fscache_key	*fscache_key;	/* unique key for superblock */ | 
|  | 135 | struct fscache_cookie	*fscache;	/* superblock cookie */ | 
|  | 136 | #endif | 
|  | 137 |  | 
| Trond Myklebust | a00ed25 | 2011-07-31 16:39:04 -0400 | [diff] [blame] | 138 | u32			pnfs_blksize;	/* layout_blksize attr */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 139 | #ifdef CONFIG_NFS_V4 | 
| Fred Isaman | dae100c | 2011-07-30 20:52:37 -0400 | [diff] [blame] | 140 | u32			attr_bitmask[3];/* V4 bitmask representing the set | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 141 | of attributes supported on this | 
|  | 142 | filesystem */ | 
| Trond Myklebust | a65318b | 2009-03-11 14:10:28 -0400 | [diff] [blame] | 143 | u32			cache_consistency_bitmask[2]; | 
|  | 144 | /* V4 bitmask representing the subset | 
|  | 145 | of change attribute, size, ctime | 
|  | 146 | and mtime attributes supported by | 
|  | 147 | the server */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 148 | u32			acl_bitmask;	/* V4 bitmask representing the ACEs | 
|  | 149 | that are supported on this | 
|  | 150 | filesystem */ | 
| Chuck Lever | 264e635 | 2012-03-01 17:02:05 -0500 | [diff] [blame] | 151 | u32			fh_expire_type;	/* V4 bitmask representing file | 
|  | 152 | handle volatility type for | 
|  | 153 | this filesystem */ | 
| Ricardo Labiaga | 85e174b | 2010-10-20 00:17:58 -0400 | [diff] [blame] | 154 | struct pnfs_layoutdriver_type  *pnfs_curr_ld; /* Active layout driver */ | 
| Fred Isaman | f7e8917 | 2011-01-06 11:36:32 +0000 | [diff] [blame] | 155 | struct rpc_wait_queue	roc_rpcwaitq; | 
| Fred Isaman | 2f9fd18 | 2011-07-30 20:52:46 -0400 | [diff] [blame] | 156 | void			*pnfs_ld_data;	/* per mount point data */ | 
| Chuck Lever | 24d292b | 2010-12-24 01:32:43 +0000 | [diff] [blame] | 157 |  | 
|  | 158 | /* the following fields are protected by nfs_client->cl_lock */ | 
|  | 159 | struct rb_root		state_owners; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 160 | #endif | 
| Trond Myklebust | 9157c31 | 2012-01-17 22:04:24 -0500 | [diff] [blame] | 161 | struct ida		openowner_id; | 
| Trond Myklebust | d2d7ce2 | 2012-01-17 22:04:25 -0500 | [diff] [blame] | 162 | struct ida		lockowner_id; | 
| Chuck Lever | 0aaaf5c | 2011-12-06 16:13:48 -0500 | [diff] [blame] | 163 | struct list_head	state_owners_lru; | 
| Weston Andros Adamson | 6382a44 | 2011-06-01 16:44:44 -0400 | [diff] [blame] | 164 | struct list_head	layouts; | 
| Chuck Lever | d3978bb | 2010-12-24 01:33:04 +0000 | [diff] [blame] | 165 | struct list_head	delegations; | 
| David Howells | 54ceac4 | 2006-08-22 20:06:13 -0400 | [diff] [blame] | 166 | void (*destroy)(struct nfs_server *); | 
| Steve Dickson | ef818a2 | 2007-11-08 04:05:04 -0500 | [diff] [blame] | 167 |  | 
|  | 168 | atomic_t active; /* Keep trace of any activity to this server */ | 
| Chuck Lever | 3f8400d | 2008-03-14 14:10:30 -0400 | [diff] [blame] | 169 |  | 
|  | 170 | /* mountd-related mount options */ | 
|  | 171 | struct sockaddr_storage	mountd_address; | 
|  | 172 | size_t			mountd_addrlen; | 
|  | 173 | u32			mountd_version; | 
|  | 174 | unsigned short		mountd_port; | 
|  | 175 | unsigned short		mountd_protocol; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 176 | }; | 
|  | 177 |  | 
|  | 178 | /* Server capabilities */ | 
|  | 179 | #define NFS_CAP_READDIRPLUS	(1U << 0) | 
|  | 180 | #define NFS_CAP_HARDLINKS	(1U << 1) | 
|  | 181 | #define NFS_CAP_SYMLINKS	(1U << 2) | 
|  | 182 | #define NFS_CAP_ACLS		(1U << 3) | 
|  | 183 | #define NFS_CAP_ATOMIC_OPEN	(1U << 4) | 
| Trond Myklebust | 62ab460 | 2009-08-09 15:06:19 -0400 | [diff] [blame] | 184 | #define NFS_CAP_CHANGE_ATTR	(1U << 5) | 
|  | 185 | #define NFS_CAP_FILEID		(1U << 6) | 
|  | 186 | #define NFS_CAP_MODE		(1U << 7) | 
|  | 187 | #define NFS_CAP_NLINK		(1U << 8) | 
|  | 188 | #define NFS_CAP_OWNER		(1U << 9) | 
|  | 189 | #define NFS_CAP_OWNER_GROUP	(1U << 10) | 
|  | 190 | #define NFS_CAP_ATIME		(1U << 11) | 
|  | 191 | #define NFS_CAP_CTIME		(1U << 12) | 
|  | 192 | #define NFS_CAP_MTIME		(1U << 13) | 
| Trond Myklebust | 0df5dd4 | 2010-04-11 16:48:44 -0400 | [diff] [blame] | 193 | #define NFS_CAP_POSIX_LOCK	(1U << 14) | 
| Trond Myklebust | b064eca2 | 2011-02-22 15:44:32 -0800 | [diff] [blame] | 194 | #define NFS_CAP_UIDGID_NOMAP	(1U << 15) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 195 |  | 
| Andy Adamson | 557134a | 2009-04-01 09:21:53 -0400 | [diff] [blame] | 196 |  | 
|  | 197 | /* maximum number of slots to use */ | 
| Trond Myklebust | ef159e9 | 2012-02-06 19:50:40 -0500 | [diff] [blame] | 198 | #define NFS4_DEF_SLOT_TABLE_SIZE (16U) | 
|  | 199 | #define NFS4_MAX_SLOT_TABLE (256U) | 
| Trond Myklebust | 45d43c2 | 2012-02-06 19:38:51 -0500 | [diff] [blame] | 200 | #define NFS4_NO_SLOT ((u32)-1) | 
| Andy Adamson | 557134a | 2009-04-01 09:21:53 -0400 | [diff] [blame] | 201 |  | 
| Trond Myklebust | 0400a6b | 2011-03-09 16:00:53 -0500 | [diff] [blame] | 202 | #if defined(CONFIG_NFS_V4) | 
| Andy Adamson | 557134a | 2009-04-01 09:21:53 -0400 | [diff] [blame] | 203 |  | 
|  | 204 | /* Sessions */ | 
| Trond Myklebust | ef159e9 | 2012-02-06 19:50:40 -0500 | [diff] [blame] | 205 | #define SLOT_TABLE_SZ DIV_ROUND_UP(NFS4_MAX_SLOT_TABLE, 8*sizeof(long)) | 
| Andy Adamson | 557134a | 2009-04-01 09:21:53 -0400 | [diff] [blame] | 206 | struct nfs4_slot_table { | 
|  | 207 | struct nfs4_slot *slots;		/* seqid per slot */ | 
|  | 208 | unsigned long   used_slots[SLOT_TABLE_SZ]; /* used/unused bitmap */ | 
|  | 209 | spinlock_t	slot_tbl_lock; | 
|  | 210 | struct rpc_wait_queue	slot_tbl_waitq;	/* allocators may wait here */ | 
| Trond Myklebust | 45d43c2 | 2012-02-06 19:38:51 -0500 | [diff] [blame] | 211 | u32		max_slots;		/* # slots in table */ | 
|  | 212 | u32		highest_used_slotid;	/* sent to server on each SEQ. | 
| Andy Adamson | 557134a | 2009-04-01 09:21:53 -0400 | [diff] [blame] | 213 | * op for dynamic resizing */ | 
| Trond Myklebust | 45d43c2 | 2012-02-06 19:38:51 -0500 | [diff] [blame] | 214 | u32		target_max_slots;	/* Set by CB_RECALL_SLOT as | 
| Andy Adamson | b9efa1b | 2010-01-20 16:06:27 -0500 | [diff] [blame] | 215 | * the new max_slots */ | 
| Andy Adamson | 42acd02 | 2011-01-06 02:04:34 +0000 | [diff] [blame] | 216 | struct completion complete; | 
| Andy Adamson | 557134a | 2009-04-01 09:21:53 -0400 | [diff] [blame] | 217 | }; | 
|  | 218 |  | 
|  | 219 | static inline int slot_idx(struct nfs4_slot_table *tbl, struct nfs4_slot *sp) | 
|  | 220 | { | 
|  | 221 | return sp - tbl->slots; | 
|  | 222 | } | 
|  | 223 |  | 
|  | 224 | /* | 
|  | 225 | * Session related parameters | 
|  | 226 | */ | 
|  | 227 | struct nfs4_session { | 
|  | 228 | struct nfs4_sessionid		sess_id; | 
|  | 229 | u32				flags; | 
|  | 230 | unsigned long			session_state; | 
|  | 231 | u32				hash_alg; | 
|  | 232 | u32				ssv_len; | 
|  | 233 |  | 
|  | 234 | /* The fore and back channel */ | 
|  | 235 | struct nfs4_channel_attrs	fc_attrs; | 
|  | 236 | struct nfs4_slot_table		fc_slot_table; | 
|  | 237 | struct nfs4_channel_attrs	bc_attrs; | 
| Ricardo Labiaga | f8625a6 | 2009-04-01 09:23:33 -0400 | [diff] [blame] | 238 | struct nfs4_slot_table		bc_slot_table; | 
| Andy Adamson | 557134a | 2009-04-01 09:21:53 -0400 | [diff] [blame] | 239 | struct nfs_client		*clp; | 
|  | 240 | }; | 
|  | 241 |  | 
| Trond Myklebust | 0400a6b | 2011-03-09 16:00:53 -0500 | [diff] [blame] | 242 | #endif /* CONFIG_NFS_V4 */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 243 | #endif |