aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/pnfs.h
diff options
context:
space:
mode:
authorAndy Adamson <andros@netapp.com>2011-06-15 17:52:40 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2011-07-12 13:40:29 -0400
commitc47abcf8ff4d0c56d20ce541e80d3e1c975f54b5 (patch)
tree9fc0bfddd899e415f9943a403b647ed7b05da71b /fs/nfs/pnfs.h
parenta56aaa02b1f723e28b41d339ddff02e958d32d43 (diff)
NFSv4.1: do not use deviceids after MDS clientid invalidation
Mark all deviceids established under an expired MDS clientid as invalid. Stop all new i/o through DS and send through the MDS. Don't use any new LAYOUTGETs that use the invalid deviceid. Purge all layouts established under the expired MDS clientid. Remove the MDS clientid deviceid and data servers reference Signed-off-by: Andy Adamson <andros@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/pnfs.h')
-rw-r--r--fs/nfs/pnfs.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h
index 678c4c7b14d..a59736eae6e 100644
--- a/fs/nfs/pnfs.h
+++ b/fs/nfs/pnfs.h
@@ -192,12 +192,20 @@ struct pnfs_layout_segment *pnfs_update_layout(struct inode *ino,
192 enum pnfs_iomode iomode, 192 enum pnfs_iomode iomode,
193 gfp_t gfp_flags); 193 gfp_t gfp_flags);
194 194
195void nfs4_deviceid_mark_client_invalid(struct nfs_client *clp);
196
197/* nfs4_deviceid_flags */
198enum {
199 NFS_DEVICEID_INVALID = 0, /* set when MDS clientid recalled */
200};
201
195/* pnfs_dev.c */ 202/* pnfs_dev.c */
196struct nfs4_deviceid_node { 203struct nfs4_deviceid_node {
197 struct hlist_node node; 204 struct hlist_node node;
198 struct hlist_node tmpnode; 205 struct hlist_node tmpnode;
199 const struct pnfs_layoutdriver_type *ld; 206 const struct pnfs_layoutdriver_type *ld;
200 const struct nfs_client *nfs_client; 207 const struct nfs_client *nfs_client;
208 unsigned long flags;
201 struct nfs4_deviceid deviceid; 209 struct nfs4_deviceid deviceid;
202 atomic_t ref; 210 atomic_t ref;
203}; 211};