aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs')
-rw-r--r--fs/nfs/nfs4_fs.h1
-rw-r--r--fs/nfs/nfs4proc.c2
-rw-r--r--fs/nfs/nfs4state.c4
3 files changed, 6 insertions, 1 deletions
diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
index ae25cc21fe70..095bf4690e84 100644
--- a/fs/nfs/nfs4_fs.h
+++ b/fs/nfs/nfs4_fs.h
@@ -182,6 +182,7 @@ struct nfs4_state_recovery_ops {
182 182
183struct nfs4_state_maintenance_ops { 183struct nfs4_state_maintenance_ops {
184 int (*sched_state_renewal)(struct nfs_client *, struct rpc_cred *); 184 int (*sched_state_renewal)(struct nfs_client *, struct rpc_cred *);
185 int (*renew_lease)(struct nfs_client *, struct rpc_cred *);
185}; 186};
186 187
187extern const struct dentry_operations nfs4_dentry_operations; 188extern const struct dentry_operations nfs4_dentry_operations;
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 101ba6aed101..da481bda44f7 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -4795,11 +4795,13 @@ struct nfs4_state_recovery_ops nfs4_nograce_recovery_ops = {
4795 4795
4796struct nfs4_state_maintenance_ops nfs40_state_renewal_ops = { 4796struct nfs4_state_maintenance_ops nfs40_state_renewal_ops = {
4797 .sched_state_renewal = nfs4_proc_async_renew, 4797 .sched_state_renewal = nfs4_proc_async_renew,
4798 .renew_lease = nfs4_proc_renew,
4798}; 4799};
4799 4800
4800#if defined(CONFIG_NFS_V4_1) 4801#if defined(CONFIG_NFS_V4_1)
4801struct nfs4_state_maintenance_ops nfs41_state_renewal_ops = { 4802struct nfs4_state_maintenance_ops nfs41_state_renewal_ops = {
4802 .sched_state_renewal = nfs41_proc_async_sequence, 4803 .sched_state_renewal = nfs41_proc_async_sequence,
4804 .renew_lease = nfs4_proc_sequence,
4803}; 4805};
4804#endif 4806#endif
4805 4807
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index 8b7f007adc42..dc5599c7f4d9 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -1083,6 +1083,8 @@ restart:
1083static int nfs4_check_lease(struct nfs_client *clp) 1083static int nfs4_check_lease(struct nfs_client *clp)
1084{ 1084{
1085 struct rpc_cred *cred; 1085 struct rpc_cred *cred;
1086 struct nfs4_state_maintenance_ops *ops =
1087 nfs4_state_renewal_ops[clp->cl_minorversion];
1086 int status = -NFS4ERR_EXPIRED; 1088 int status = -NFS4ERR_EXPIRED;
1087 1089
1088 /* Is the client already known to have an expired lease? */ 1090 /* Is the client already known to have an expired lease? */
@@ -1094,7 +1096,7 @@ static int nfs4_check_lease(struct nfs_client *clp)
1094 if (cred == NULL) 1096 if (cred == NULL)
1095 goto out; 1097 goto out;
1096 } 1098 }
1097 status = nfs4_proc_renew(clp, cred); 1099 status = ops->renew_lease(clp, cred);
1098 put_rpccred(cred); 1100 put_rpccred(cred);
1099out: 1101out:
1100 nfs4_recovery_handle_error(clp, status); 1102 nfs4_recovery_handle_error(clp, status);