summaryrefslogtreecommitdiff
path: root/fs/nfsd/nfs4state.c
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@redhat.com>2011-01-10 16:44:41 -0500
committerJ. Bruce Fields <bfields@redhat.com>2011-01-11 15:04:11 -0500
commit5ce8ba25d657a71d6d8cdb05a2b90c5ae7debfda (patch)
tree831d815e91e23de373fe7fdc7a54b3eb098067f5 /fs/nfsd/nfs4state.c
parent3ff3600e7eab16301e824293e8f49b9990bd4641 (diff)
downloadlwn-5ce8ba25d657a71d6d8cdb05a2b90c5ae7debfda.tar.gz
lwn-5ce8ba25d657a71d6d8cdb05a2b90c5ae7debfda.zip
nfsd4: allow restarting callbacks
If we lose the backchannel and then the client repairs the problem, resend any callbacks. We use a new cb_done flag to track whether there is still work to be done for the callback or whether it can be destroyed with the rpc. Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/nfs4state.c')
-rw-r--r--fs/nfsd/nfs4state.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index 408957cf6016..6e1f9aadd439 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -1077,6 +1077,7 @@ static struct nfs4_client *create_client(struct xdr_netobj name, char *recdir,
INIT_LIST_HEAD(&clp->cl_openowners);
INIT_LIST_HEAD(&clp->cl_delegations);
INIT_LIST_HEAD(&clp->cl_lru);
+ INIT_LIST_HEAD(&clp->cl_callbacks);
spin_lock_init(&clp->cl_lock);
INIT_WORK(&clp->cl_cb_null.cb_work, nfsd4_do_callback_rpc);
clp->cl_time = get_seconds();