patch-2.4.27 linux-2.4.27/fs/nfs/dir.c
Next file: linux-2.4.27/fs/nfs/unlink.c
Previous file: linux-2.4.27/fs/namei.c
Back to the patch index
Back to the overall index
- Lines: 22
- Date:
2004-08-07 16:26:06.011402537 -0700
- Orig file:
linux-2.4.26/fs/nfs/dir.c
- Orig date:
2004-04-14 06:05:40.000000000 -0700
diff -urN linux-2.4.26/fs/nfs/dir.c linux-2.4.27/fs/nfs/dir.c
@@ -999,7 +999,7 @@
struct inode *old_inode = old_dentry->d_inode;
struct inode *new_inode = new_dentry->d_inode;
struct dentry *dentry = NULL, *rehash = NULL;
- int error = -EBUSY;
+ int error;
/*
* To prevent any new references to the target during the rename,
@@ -1025,6 +1025,12 @@
*/
if (!new_inode)
goto go_ahead;
+ /* If target is a hard link to the source, then noop */
+ error = 0;
+ if (NFS_FILEID(new_inode) == NFS_FILEID(old_inode))
+ goto out;
+
+ error = -EBUSY;
if (S_ISDIR(new_inode->i_mode))
goto out;
else if (atomic_read(&new_dentry->d_count) > 1) {
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)