[CIFS] fix busy-file renames and refactor cifs_rename logic
authorSteve French <sfrench@us.ibm.com>
Tue, 23 Sep 2008 18:23:33 +0000 (18:23 +0000)
committerSteve French <sfrench@us.ibm.com>
Tue, 23 Sep 2008 18:23:33 +0000 (18:23 +0000)
commitee2fd967fb23c5eecabc8a660ec66fcd79acbd47
tree8a1922499e0775d4849d6ed8d4e3027800d7242d
parent6d22f09896c0d62c003ffa25fff25323e3ed608b
[CIFS]  fix busy-file renames and refactor cifs_rename logic

Break out the code that does the actual renaming into a separate
function and have cifs_rename call that. That function will attempt a
path based rename first and then do a filehandle based one if it looks
like the source is busy.

The existing logic tried a path based rename first, but if we needed to
remove the destination then it only attempted a filehandle based rename
afterward. Not all servers support renaming by filehandle, so we need to
always attempt path rename first and fall back to filehandle rename if
it doesn't work.

This also fixes renames of open files on windows servers (at least when
the source and destination directories are the same).

CC: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
fs/cifs/inode.c