NFS: Ensure that rmdir() waits for sillyrenames to complete
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Fri, 30 Aug 2013 16:24:25 +0000 (12:24 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 3 Sep 2013 19:26:29 +0000 (15:26 -0400)
commitba6c05928dcafc7e0a0c8e4ee6a293ba47190fd4
tree3b32adfdc8fb978f1933d43591e36ed0b14897d6
parenta5250def7c4549a6a1cd8257900bef9c12ffc2fc
NFS: Ensure that rmdir() waits for sillyrenames to complete

If an NFS client does

mkdir("dir");
fd = open("dir/file");
unlink("dir/file");
close(fd);
rmdir("dir");

then the asynchronous nature of the sillyrename operation means that
we can end up getting EBUSY for the rmdir() in the above test. Fix
that by ensuring that we wait for any in-progress sillyrenames
before sending the rmdir() to the server.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/dir.c
fs/nfs/unlink.c
include/linux/nfs_fs.h