aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/nfs/callback_proc.c1
-rw-r--r--fs/nfs/nfs4_fs.h1
-rw-r--r--fs/nfs/nfs4state.c12
3 files changed, 14 insertions, 0 deletions
diff --git a/fs/nfs/callback_proc.c b/fs/nfs/callback_proc.c
index 8610bd1d136d..f99faad78c72 100644
--- a/fs/nfs/callback_proc.c
+++ b/fs/nfs/callback_proc.c
@@ -570,6 +570,7 @@ __be32 nfs4_callback_recallslot(struct cb_recallslotargs *args, void *dummy,
570 status = htonl(NFS4_OK); 570 status = htonl(NFS4_OK);
571 571
572 nfs41_set_target_slotid(fc_tbl, args->crsa_target_highest_slotid); 572 nfs41_set_target_slotid(fc_tbl, args->crsa_target_highest_slotid);
573 nfs41_server_notify_target_slotid_update(cps->clp);
573out: 574out:
574 dprintk("%s: exit with status = %d\n", __func__, ntohl(status)); 575 dprintk("%s: exit with status = %d\n", __func__, ntohl(status));
575 return status; 576 return status;
diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
index fa1a055a8fe9..0a109ec75e69 100644
--- a/fs/nfs/nfs4_fs.h
+++ b/fs/nfs/nfs4_fs.h
@@ -334,6 +334,7 @@ struct rpc_cred *nfs4_get_exchange_id_cred(struct nfs_client *clp);
334int nfs41_discover_server_trunking(struct nfs_client *clp, 334int nfs41_discover_server_trunking(struct nfs_client *clp,
335 struct nfs_client **, struct rpc_cred *); 335 struct nfs_client **, struct rpc_cred *);
336extern void nfs4_schedule_session_recovery(struct nfs4_session *, int); 336extern void nfs4_schedule_session_recovery(struct nfs4_session *, int);
337extern void nfs41_server_notify_target_slotid_update(struct nfs_client *clp);
337#else 338#else
338static inline void nfs4_schedule_session_recovery(struct nfs4_session *session, int err) 339static inline void nfs4_schedule_session_recovery(struct nfs4_session *session, int err)
339{ 340{
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index 3940cd43fa98..896be2126f7e 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -1904,6 +1904,18 @@ void nfs4_schedule_session_recovery(struct nfs4_session *session, int err)
1904} 1904}
1905EXPORT_SYMBOL_GPL(nfs4_schedule_session_recovery); 1905EXPORT_SYMBOL_GPL(nfs4_schedule_session_recovery);
1906 1906
1907static void nfs41_ping_server(struct nfs_client *clp)
1908{
1909 /* Use CHECK_LEASE to ping the server with a SEQUENCE */
1910 set_bit(NFS4CLNT_CHECK_LEASE, &clp->cl_state);
1911 nfs4_schedule_state_manager(clp);
1912}
1913
1914void nfs41_server_notify_target_slotid_update(struct nfs_client *clp)
1915{
1916 nfs41_ping_server(clp);
1917}
1918
1907static void nfs4_reset_all_state(struct nfs_client *clp) 1919static void nfs4_reset_all_state(struct nfs_client *clp)
1908{ 1920{
1909 if (test_and_set_bit(NFS4CLNT_LEASE_EXPIRED, &clp->cl_state) == 0) { 1921 if (test_and_set_bit(NFS4CLNT_LEASE_EXPIRED, &clp->cl_state) == 0) {