[linux-cifs-client] cthon test progress

Steve French smfrench at gmail.com
Wed Sep 24 23:44:41 GMT 2008


With LinuxExtensionsDisabled and this patch applied, now make it farther.

diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index db091c5..ba0d9fa 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -19,7 +19,6 @@
  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
 #include <linux/fs.h>
-#include <linux/stat.h>
 #include <linux/pagemap.h>
 #include <asm/div64.h>
 #include "cifsfs.h"
@@ -1309,8 +1308,33 @@ int cifs_rename(struct inode *source_inode,
struct dentry *source_direntry,
 					info_buf_target->UniqueId))
 				/* same file, POSIX says that this is a noop */
 				goto cifs_rename_exit;
-		} /* else ... BB we could add the same check for Windows by
-		     checking the UniqueId via FILE_INTERNAL_INFO */
+		} else {
+			__u64 src_inode_num;
+			__u64 target_inode_num;
+			cFYI(1, ("check hardlinks windows style on %s",
+				 fromName));
+			rc = CIFSGetSrvInodeNumber(xid, pTcon,
+					fromName, &src_inode_num,
+					cifs_sb_source->local_nls,
+					cifs_sb_source->mnt_cifs_flags &
+                                                CIFS_MOUNT_MAP_SPECIAL_CHR);
+			if (rc)
+				goto unlink_target;
+
+			rc = CIFSGetSrvInodeNumber(xid, pTcon,
+					toName, &target_inode_num,
+					cifs_sb_source->local_nls,
+					cifs_sb_source->mnt_cifs_flags &
+                                                CIFS_MOUNT_MAP_SPECIAL_CHR);
+			if (rc)
+				goto unlink_target;
+
+			if ((src_inode_num != 0) &&
+					(src_inode_num == target_inode_num)) {
+				cFYI(1, ("inode numbers match - rename noop"));
+				goto cifs_rename_exit;
+			}
+		}
 unlink_target:
 		/*
 		 * we either can not tell the files are hardlinked (as with

The "special" connectathon tests now fails at:

second check for lost reply on non-idempotent requests
testing 50 idempotencies in directory "testdir"
stat 1: bad file type/size 0102767/30
special tests failed


-- 
Thanks,

Steve


More information about the linux-cifs-client mailing list