summaryrefslogtreecommitdiff
path: root/fs/nfs/client.c
diff options
context:
space:
mode:
authorSteve Dickson <SteveD@redhat.com>2007-11-08 12:05:04 +0300
committerTrond Myklebust <Trond.Myklebust@netapp.com>2008-01-30 10:05:24 +0300
commitef818a28fac9bd214e676986d8301db0582b92a9 (patch)
treeb1825d1ecdfa6b35951a61f6bc54363236c12cd0 /fs/nfs/client.c
parent2f74c0a05612b9c2014b5b67833dba9b9f523948 (diff)
downloadlinux-ef818a28fac9bd214e676986d8301db0582b92a9.tar.xz
NFS: Stop sillyname renames and unmounts from racing
Added an active/deactive mechanism to the nfs_server structure allowing async operations to hold off umount until the operations are done. Signed-off-by: Steve Dickson <steved@redhat.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/client.c')
-rw-r--r--fs/nfs/client.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index a6f625497612..c3740f5ab978 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -729,6 +729,9 @@ static struct nfs_server *nfs_alloc_server(void)
INIT_LIST_HEAD(&server->client_link);
INIT_LIST_HEAD(&server->master_link);
+ init_waitqueue_head(&server->active_wq);
+ atomic_set(&server->active, 0);
+
server->io_stats = nfs_alloc_iostats();
if (!server->io_stats) {
kfree(server);