diff options
author | J. Bruce Fields <bfields@redhat.com> | 2014-07-18 15:06:47 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2014-07-21 12:30:50 -0400 |
commit | 57a371442112856388c3c2fd4b0867ef3280896a (patch) | |
tree | 1e6445f49419da21ce5b385e22ac8c83e0f20fd1 | |
parent | 22cb43855dce2cb1b23c5b8c5c83e9baa4cfde6e (diff) | |
download | op-kernel-dev-57a371442112856388c3c2fd4b0867ef3280896a.zip op-kernel-dev-57a371442112856388c3c2fd4b0867ef3280896a.tar.gz |
nfsd4: CREATE_SESSION should update backchannel immediately
nfsd4_probe_callback kicks off some work that will eventually run
nfsd4_process_cb_update and update the session flags. In theory we
could process a following SEQUENCE call before that update happens
resulting in flags that don't accurately represent, for example, the
lack of a backchannel.
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
-rw-r--r-- | fs/nfsd/nfs4state.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index fd4deb0..10cdb67 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -1223,10 +1223,8 @@ static void nfsd4_init_conn(struct svc_rqst *rqstp, struct nfsd4_conn *conn, str if (ret) /* oops; xprt is already down: */ nfsd4_conn_lost(&conn->cn_xpt_user); - if (conn->cn_flags & NFS4_CDFC4_BACK) { - /* callback channel may be back up */ - nfsd4_probe_callback(ses->se_client); - } + /* We may have gained or lost a callback channel: */ + nfsd4_probe_callback_sync(ses->se_client); } static struct nfsd4_conn *alloc_conn_from_crses(struct svc_rqst *rqstp, struct nfsd4_create_session *cses) |