aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRicardo Labiaga <Ricardo.Labiaga@netapp.com>2009-09-10 05:26:25 -0400
committerJ. Bruce Fields <bfields@citi.umich.edu>2009-09-15 20:49:55 -0400
commit199ff35e1c8724871e157c2e48556c2794946e82 (patch)
tree18bcf50bef1ad405013e4da1c1d76c9d153f153a
parent132f97715c098393fb8de3c26b07b9fdbd2334f1 (diff)
nfsd41: Backchannel: Server backchannel RPC wait queue
RPC callback requests will wait on this wait queue if the backchannel is out of slots. Signed-off-by: Ricardo Labiaga <Ricardo.Labiaga@netapp.com> Signed-off-by: Benny Halevy <bhalevy@panasas.com> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
-rw-r--r--fs/nfsd/nfs4state.c2
-rw-r--r--include/linux/nfsd/state.h4
2 files changed, 6 insertions, 0 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index d8196b453f61..f4cebd9016bc 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -775,6 +775,8 @@ static struct nfs4_client *create_client(struct xdr_netobj name, char *recdir)
775 INIT_LIST_HEAD(&clp->cl_delegations); 775 INIT_LIST_HEAD(&clp->cl_delegations);
776 INIT_LIST_HEAD(&clp->cl_sessions); 776 INIT_LIST_HEAD(&clp->cl_sessions);
777 INIT_LIST_HEAD(&clp->cl_lru); 777 INIT_LIST_HEAD(&clp->cl_lru);
778 clear_bit(0, &clp->cl_cb_slot_busy);
779 rpc_init_wait_queue(&clp->cl_cb_waitq, "Backchannel slot table");
778 return clp; 780 return clp;
779} 781}
780 782
diff --git a/include/linux/nfsd/state.h b/include/linux/nfsd/state.h
index 0e5b5aecde03..9cc40a137c34 100644
--- a/include/linux/nfsd/state.h
+++ b/include/linux/nfsd/state.h
@@ -219,7 +219,11 @@ struct nfs4_client {
219 struct nfs4_sessionid cl_sessionid; 219 struct nfs4_sessionid cl_sessionid;
220 220
221 /* for nfs41 callbacks */ 221 /* for nfs41 callbacks */
222 /* We currently support a single back channel with a single slot */
223 unsigned long cl_cb_slot_busy;
222 struct svc_xprt *cl_cb_xprt; /* 4.1 callback transport */ 224 struct svc_xprt *cl_cb_xprt; /* 4.1 callback transport */
225 struct rpc_wait_queue cl_cb_waitq; /* backchannel callers may */
226 /* wait here for slots */
223}; 227};
224 228
225/* struct nfs4_client_reset 229/* struct nfs4_client_reset