diff options
author | Ricardo Labiaga <Ricardo.Labiaga@netapp.com> | 2009-09-10 05:26:25 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@citi.umich.edu> | 2009-09-15 20:49:55 -0400 |
commit | 199ff35e1c8724871e157c2e48556c2794946e82 (patch) | |
tree | 18bcf50bef1ad405013e4da1c1d76c9d153f153a | |
parent | 132f97715c098393fb8de3c26b07b9fdbd2334f1 (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.c | 2 | ||||
-rw-r--r-- | include/linux/nfsd/state.h | 4 |
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 |