summaryrefslogtreecommitdiff
path: root/fs/nfsd/state.h
diff options
context:
space:
mode:
authorTrond Myklebust <trondmy@gmail.com>2019-10-24 00:43:18 +0300
committerJ. Bruce Fields <bfields@redhat.com>2019-11-08 20:32:59 +0300
commit2bbfed98a4d82ac4e7abfcd4eba40bddfc670b1d (patch)
tree26b916fc1bffa22169392125c49097470aa8822a /fs/nfsd/state.h
parent12357f1b2c8e0d06f34a045498d4a1e7877153ee (diff)
downloadlinux-2bbfed98a4d82ac4e7abfcd4eba40bddfc670b1d.tar.xz
nfsd: Fix races between nfsd4_cb_release() and nfsd4_shutdown_callback()
When we're destroying the client lease, and we call nfsd4_shutdown_callback(), we must ensure that we do not return before all outstanding callbacks have terminated and have released their payloads. Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/state.h')
-rw-r--r--fs/nfsd/state.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h
index 46f56afb6cb8..d61b83b9654c 100644
--- a/fs/nfsd/state.h
+++ b/fs/nfsd/state.h
@@ -367,6 +367,7 @@ struct nfs4_client {
struct net *net;
struct list_head async_copies; /* list of async copies */
spinlock_t async_lock; /* lock for async copies */
+ atomic_t cl_cb_inflight; /* Outstanding callbacks */
};
/* struct nfs4_client_reset