aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/client.c
diff options
context:
space:
mode:
authorFred Isaman <iisaman@netapp.com>2011-01-06 06:36:32 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2011-01-06 14:46:32 -0500
commitf7e8917a67980924651a9e244510e63ef05c7755 (patch)
treefb00db5ef8b3b26793fae7a1186f1cd16205ab9d /fs/nfs/client.c
parent36840370845629e6cb4324d1dd4aff6778670503 (diff)
pnfs: layout roc code
A layout can request return-on-close. How this interacts with the forgetful model of never sending LAYOUTRETURNS is a bit ambiguous. We forget any layouts marked roc, and wait for them to be completely forgotten before continuing with the close. In addition, to compensate for races with any inflight LAYOUTGETs, and the fact that we do not get any layout stateid back from the server, we set the barrier to the worst case scenario of current_seqid + number of outstanding LAYOUTGETS. Signed-off-by: Fred Isaman <iisaman@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/client.c')
-rw-r--r--fs/nfs/client.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index 11eb9934c747..684b67771199 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -244,6 +244,11 @@ static void nfs_cb_idr_remove_locked(struct nfs_client *clp)
244 idr_remove(&cb_ident_idr, clp->cl_cb_ident); 244 idr_remove(&cb_ident_idr, clp->cl_cb_ident);
245} 245}
246 246
247static void pnfs_init_server(struct nfs_server *server)
248{
249 rpc_init_wait_queue(&server->roc_rpcwaitq, "pNFS ROC");
250}
251
247#else 252#else
248static void nfs4_shutdown_client(struct nfs_client *clp) 253static void nfs4_shutdown_client(struct nfs_client *clp)
249{ 254{
@@ -256,6 +261,11 @@ void nfs_cleanup_cb_ident_idr(void)
256static void nfs_cb_idr_remove_locked(struct nfs_client *clp) 261static void nfs_cb_idr_remove_locked(struct nfs_client *clp)
257{ 262{
258} 263}
264
265static void pnfs_init_server(struct nfs_server *server)
266{
267}
268
259#endif /* CONFIG_NFS_V4 */ 269#endif /* CONFIG_NFS_V4 */
260 270
261/* 271/*
@@ -1024,6 +1034,8 @@ static struct nfs_server *nfs_alloc_server(void)
1024 return NULL; 1034 return NULL;
1025 } 1035 }
1026 1036
1037 pnfs_init_server(server);
1038
1027 return server; 1039 return server;
1028} 1040}
1029 1041