[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