aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/nfs4_fs.h
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2008-12-23 15:21:41 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2008-12-23 15:21:41 -0500
commitb79a4a1b45b2543e38026303a1956bdc0aababa0 (patch)
tree73c7dba187dbe05f5527f47ccb42523f4655f77b /fs/nfs/nfs4_fs.h
parent6dc9d57af9917f5c7faa13c17b770dce17c3972b (diff)
NFSv4: Fix state recovery when the client runs over the grace period
If the client for some reason is not able to recover all its state within the time allotted for the grace period, and the server reboots again, the client is not allowed to recover the state that was 'lost' using reboot recovery. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4_fs.h')
-rw-r--r--fs/nfs/nfs4_fs.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
index 0ac6bbb8eaa4..1c6fbd1cda97 100644
--- a/fs/nfs/nfs4_fs.h
+++ b/fs/nfs/nfs4_fs.h
@@ -40,6 +40,9 @@ struct idmap;
40enum nfs4_client_state { 40enum nfs4_client_state {
41 NFS4CLNT_STATE_RECOVER = 0, 41 NFS4CLNT_STATE_RECOVER = 0,
42 NFS4CLNT_LEASE_EXPIRED, 42 NFS4CLNT_LEASE_EXPIRED,
43 NFS4CLNT_RECLAIM_REBOOT,
44 NFS4CLNT_RECLAIM_NOGRACE,
45 NFS4CLNT_CB_PATH_DOWN,
43}; 46};
44 47
45/* 48/*
@@ -128,6 +131,8 @@ enum {
128 NFS_O_RDONLY_STATE, /* OPEN stateid has read-only state */ 131 NFS_O_RDONLY_STATE, /* OPEN stateid has read-only state */
129 NFS_O_WRONLY_STATE, /* OPEN stateid has write-only state */ 132 NFS_O_WRONLY_STATE, /* OPEN stateid has write-only state */
130 NFS_O_RDWR_STATE, /* OPEN stateid has read/write state */ 133 NFS_O_RDWR_STATE, /* OPEN stateid has read/write state */
134 NFS_STATE_RECLAIM_REBOOT, /* OPEN stateid server rebooted */
135 NFS_STATE_RECLAIM_NOGRACE, /* OPEN stateid needs to recover state */
131}; 136};
132 137
133struct nfs4_state { 138struct nfs4_state {
@@ -160,6 +165,7 @@ struct nfs4_exception {
160}; 165};
161 166
162struct nfs4_state_recovery_ops { 167struct nfs4_state_recovery_ops {
168 int state_flag_bit;
163 int (*recover_open)(struct nfs4_state_owner *, struct nfs4_state *); 169 int (*recover_open)(struct nfs4_state_owner *, struct nfs4_state *);
164 int (*recover_lock)(struct nfs4_state *, struct file_lock *); 170 int (*recover_lock)(struct nfs4_state *, struct file_lock *);
165}; 171};
@@ -187,7 +193,7 @@ extern int nfs4_proc_fs_locations(struct inode *dir, const struct qstr *name,
187 struct nfs4_fs_locations *fs_locations, struct page *page); 193 struct nfs4_fs_locations *fs_locations, struct page *page);
188 194
189extern struct nfs4_state_recovery_ops nfs4_reboot_recovery_ops; 195extern struct nfs4_state_recovery_ops nfs4_reboot_recovery_ops;
190extern struct nfs4_state_recovery_ops nfs4_network_partition_recovery_ops; 196extern struct nfs4_state_recovery_ops nfs4_nograce_recovery_ops;
191 197
192extern const u32 nfs4_fattr_bitmap[2]; 198extern const u32 nfs4_fattr_bitmap[2];
193extern const u32 nfs4_statfs_bitmap[2]; 199extern const u32 nfs4_statfs_bitmap[2];