aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/nfs4proc.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/nfs4proc.c')
-rw-r--r--fs/nfs/nfs4proc.c29
1 files changed, 27 insertions, 2 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 55a8fc2f3df4..07d1a43f40f5 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -1573,9 +1573,8 @@ static int _nfs4_proc_open(struct nfs4_opendata *data)
1573 return 0; 1573 return 0;
1574} 1574}
1575 1575
1576static int nfs4_recover_expired_lease(struct nfs_server *server) 1576static int nfs4_client_recover_expired_lease(struct nfs_client *clp)
1577{ 1577{
1578 struct nfs_client *clp = server->nfs_client;
1579 unsigned int loop; 1578 unsigned int loop;
1580 int ret; 1579 int ret;
1581 1580
@@ -1592,6 +1591,11 @@ static int nfs4_recover_expired_lease(struct nfs_server *server)
1592 return ret; 1591 return ret;
1593} 1592}
1594 1593
1594static int nfs4_recover_expired_lease(struct nfs_server *server)
1595{
1596 return nfs4_client_recover_expired_lease(server->nfs_client);
1597}
1598
1595/* 1599/*
1596 * OPEN_EXPIRED: 1600 * OPEN_EXPIRED:
1597 * reclaim state on the server after a network partition. 1601 * reclaim state on the server after a network partition.
@@ -5118,6 +5122,27 @@ int nfs4_init_session(struct nfs_server *server)
5118 return ret; 5122 return ret;
5119} 5123}
5120 5124
5125int nfs4_init_ds_session(struct nfs_client *clp)
5126{
5127 struct nfs4_session *session = clp->cl_session;
5128 int ret;
5129
5130 if (!test_and_clear_bit(NFS4_SESSION_INITING, &session->session_state))
5131 return 0;
5132
5133 ret = nfs4_client_recover_expired_lease(clp);
5134 if (!ret)
5135 /* Test for the DS role */
5136 if (!is_ds_client(clp))
5137 ret = -ENODEV;
5138 if (!ret)
5139 ret = nfs4_check_client_ready(clp);
5140 return ret;
5141
5142}
5143EXPORT_SYMBOL_GPL(nfs4_init_ds_session);
5144
5145
5121/* 5146/*
5122 * Renew the cl_session lease. 5147 * Renew the cl_session lease.
5123 */ 5148 */