]> err.no Git - linux-2.6/commitdiff
NFS: Fix up "rm -rf"...
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Sat, 13 Jan 2007 07:28:12 +0000 (02:28 -0500)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Sat, 3 Feb 2007 23:35:04 +0000 (15:35 -0800)
When a file is being scheduled for deletion by means of the sillyrename
mechanism, it makes sense to start out writeback of the dirty data as
soon as possible in order to ensure that the delete can occur. Examples of
cases where this is an issue include "rm -rf", which will busy-wait until
the file is closed, and the sillyrename completes.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/dir.c

index d9ba8cb0ee75b22b8618f1fe9f75dd13b2cb9259..bd269d26882409d9b4ad962af1d3ad19577e3932 100644 (file)
@@ -1443,6 +1443,8 @@ static int nfs_unlink(struct inode *dir, struct dentry *dentry)
        if (atomic_read(&dentry->d_count) > 1) {
                spin_unlock(&dentry->d_lock);
                spin_unlock(&dcache_lock);
+               /* Start asynchronous writeout of the inode */
+               write_inode_now(dentry->d_inode, 0);
                error = nfs_sillyrename(dir, dentry);
                unlock_kernel();
                return error;