1
linux/fs/nfs
Jeff Layton 73ca1001ed nfs: don't use d_move in nfs_async_rename_done
If the task that initiated the sillyrename ends up being killed by a
fatal signal, then it will eventually return back to userspace and end
up releasing the i_mutex. d_move however needs to be done while holding
the i_mutex.

Instead of using d_move here, just unhash the old and new dentries to
prevent them from being found by lookups. With this change though, the
dentries are now incorrect post-rename and do not reflect the actual
name of the file on the server. I'm proceeding under the assumption
that since they are unhashed that this isn't really a problem.

In order for the sillydelete to still work though, the dname must be
copied earlier when setting up the sillydelete info, and the name must
be recopied if the sillydelete info has to be moved to a new dentry.

Reported-by: Al Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2011-07-25 15:00:21 -04:00
..
objlayout pnfs: simplify pnfs files module autoloading 2011-07-15 19:21:58 -04:00
cache_lib.c switch vfs_path_lookup() to struct path 2011-07-20 01:44:14 -04:00
cache_lib.h
callback_proc.c NFS: move pnfs layouts to nfs_server structure 2011-07-12 13:40:27 -04:00
callback_xdr.c pnfs: CB_NOTIFY_DEVICEID 2011-05-29 20:52:31 +03:00
callback.c NFS do not find client in NFSv4 pg_authenticate 2011-01-25 15:26:51 -05:00
callback.h pnfs: CB_NOTIFY_DEVICEID 2011-05-29 20:52:31 +03:00
client.c NFS: Convert nfs4_set_ds_client to EXPORT_SYMBOL_GPL 2011-07-15 09:12:24 -04:00
delegation.c nfs,rcu: convert call_rcu(nfs_free_delegation_callback) to kfree_rcu() 2011-05-27 17:42:46 -04:00
delegation.h NFS: Move cl_delegations to the nfs_server struct 2011-01-06 14:57:46 -05:00
dir.c fs: push i_mutex and filemap_write_and_wait down into ->fsync() handlers 2011-07-20 20:47:59 -04:00
direct.c nfs_open_context doesn't need struct path either 2011-07-20 01:43:44 -04:00
dns_resolve.c sunrpc: use seconds since boot in expiry cache 2010-09-07 19:21:20 -04:00
dns_resolve.h NFS: Use kernel DNS resolver [ver #2] 2010-08-11 17:11:28 +00:00
file.c fs: push i_mutex and filemap_write_and_wait down into ->fsync() handlers 2011-07-20 20:47:59 -04:00
fscache-index.c
fscache.c FS-Cache: Add a helper to bulk uncache pages on an inode 2011-07-07 13:21:56 -07:00
fscache.h
getroot.c Merge branch 'nfs-for-2.6.39' into nfs-for-next 2011-03-24 17:03:14 -04:00
idmap.c NFSv4: Send unmapped uid/gids to the server when using auth_sys 2011-03-11 15:39:27 -05:00
inode.c nfs_open_context doesn't need struct path either 2011-07-20 01:43:44 -04:00
internal.h NFS: Clean up - simplify the switch to read/write-through-MDS 2011-07-15 09:12:22 -04:00
iostat.h NFS: Squelch compiler warning in nfs_add_server_stats() 2010-05-14 15:09:31 -04:00
Kconfig SUNRPC: sunrpc should not explicitly depend on NFS config options 2011-07-15 09:12:23 -04:00
Makefile pnfs-obj: objlayoutdriver module skeleton 2011-05-29 20:52:35 +03:00
mount_clnt.c NFS: Remove redundant unlikely() 2010-12-21 11:51:23 -05:00
namespace.c NFS: Add SECINFO_NO_NAME procedure 2011-07-12 13:40:27 -04:00
nfs2xdr.c Merge branch 'bugfixes' into nfs-for-2.6.38 2011-01-10 14:48:02 -05:00
nfs3acl.c NFS: Prevent memory allocation failure in nfsacl_encode() 2011-01-25 15:24:47 -05:00
nfs3proc.c NFS: lookup supports alternate client 2011-03-24 13:52:41 -04:00
nfs3xdr.c NFS: Fix "kernel BUG at fs/nfs/nfs3xdr.c:1338!" 2011-01-25 15:24:47 -05:00
nfs4_fs.h Merge branch 'master' into devel and apply fixup from Stephen Rothwell: 2011-07-25 14:53:52 -04:00
nfs4filelayout.c pnfs: simplify pnfs files module autoloading 2011-07-15 19:21:58 -04:00
nfs4filelayout.h NFSv4.1: do not use deviceids after MDS clientid invalidation 2011-07-12 13:40:29 -04:00
nfs4filelayoutdev.c NFS: fix comment 2011-07-12 13:40:27 -04:00
nfs4namespace.c nfs: nfs_do_{ref,sub}mount() superblock argument is redundant 2011-03-16 16:48:06 -04:00
nfs4proc.c Merge branch 'master' into devel and apply fixup from Stephen Rothwell: 2011-07-25 14:53:52 -04:00
nfs4renewd.c NFSv4.1: new flag for state renewal check 2011-03-11 15:38:41 -05:00
nfs4state.c Merge branch 'master' into devel and apply fixup from Stephen Rothwell: 2011-07-25 14:53:52 -04:00
nfs4xdr.c NFS: added FREE_STATEID call 2011-07-12 13:40:28 -04:00
nfsroot.c NFS: Revert NFSROOT default mount options 2011-05-27 17:42:47 -04:00
pagelist.c Merge branch 'master' into devel and apply fixup from Stephen Rothwell: 2011-07-25 14:53:52 -04:00
pnfs_dev.c NFSv4.1: do not use deviceids after MDS clientid invalidation 2011-07-12 13:40:29 -04:00
pnfs.c NFS: Clean up - simplify the switch to read/write-through-MDS 2011-07-15 09:12:22 -04:00
pnfs.h NFS: Move the pnfs write code into pnfs.c 2011-07-15 09:12:22 -04:00
proc.c NFS: lookup supports alternate client 2011-03-24 13:52:41 -04:00
read.c Merge branch 'master' into devel and apply fixup from Stephen Rothwell: 2011-07-25 14:53:52 -04:00
super.c switch vfs_path_lookup() to struct path 2011-07-20 01:44:14 -04:00
symlink.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sysctl.c NFS: new idmapper 2010-10-07 18:48:49 -04:00
unlink.c nfs: don't use d_move in nfs_async_rename_done 2011-07-25 15:00:21 -04:00
write.c Merge branch 'master' into devel and apply fixup from Stephen Rothwell: 2011-07-25 14:53:52 -04:00