aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd/state.h
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@citi.umich.edu>2010-06-14 19:01:57 -0400
committerJ. Bruce Fields <bfields@redhat.com>2010-10-21 10:11:51 -0400
commitac7c46f29a44f6d7f6d2e36dc874c0b7056acad2 (patch)
tree8349c56fbb67cb456fea62fee6ef29df20d6f87b /fs/nfsd/state.h
parent90c8145bb6fe1d9e0a808de6a701748967588bbd (diff)
nfsd4: make backchannel sequence number per-session
Currently we don't deal well with a client that has multiple sessions associated with it (even simultaneously, or serially over the lifetime of the client). In particular, we don't attempt to keep the backchannel running after the original session diseappears. We will fix that soon. Once we do that, we need the slot sequence number to be per-session; otherwise, for example, we cannot correctly handle a case like this: - All session 1 connections are lost. - The client creates session 2. We use it for the backchannel (since it's the only working choice). - The client gives us a new connection to use with session 1. - The client destroys session 2. At this point our only choice is to go back to using session 1. When we do so we must use the sequence number that is next for session 1. We therefore need to maintain multiple sequence number streams. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Diffstat (limited to 'fs/nfsd/state.h')
-rw-r--r--fs/nfsd/state.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h
index cdce26ad50b5..7f5b2671ef18 100644
--- a/fs/nfsd/state.h
+++ b/fs/nfsd/state.h
@@ -172,6 +172,7 @@ struct nfsd4_session {
172 struct nfsd4_channel_attrs se_fchannel; 172 struct nfsd4_channel_attrs se_fchannel;
173 struct nfsd4_channel_attrs se_bchannel; 173 struct nfsd4_channel_attrs se_bchannel;
174 struct list_head se_conns; 174 struct list_head se_conns;
175 u32 se_cb_seq_nr;
175 struct nfsd4_slot *se_slots[]; /* forward channel slots */ 176 struct nfsd4_slot *se_slots[]; /* forward channel slots */
176}; 177};
177 178
@@ -249,7 +250,6 @@ struct nfs4_client {
249 /* for nfs41 callbacks */ 250 /* for nfs41 callbacks */
250 /* We currently support a single back channel with a single slot */ 251 /* We currently support a single back channel with a single slot */
251 unsigned long cl_cb_slot_busy; 252 unsigned long cl_cb_slot_busy;
252 u32 cl_cb_seq_nr;
253 struct rpc_wait_queue cl_cb_waitq; /* backchannel callers may */ 253 struct rpc_wait_queue cl_cb_waitq; /* backchannel callers may */
254 /* wait here for slots */ 254 /* wait here for slots */
255}; 255};