bk://cifs.bkbits.net/linux-2.5cifs
cifs.adm@bkbits.net|ChangeSet|20041026211952|47088 cifs.adm

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2004/10/21 22:36:00-05:00 sfrench@smft41.(none) 
#   [CIFS] treat NTFS junctions (reparse points) as directories rather than symlinks since we can not follow them
#   
#   Signed-off-by:  Steve French (sfrench@us.ibm.com)
# 
# fs/cifs/inode.c
#   2004/10/21 22:35:51-05:00 sfrench@smft41.(none) +4 -4
#   treat NTFS junctions (reparse points) as directories rather than symlinks since we can not follow them
# 
# fs/cifs/file.c
#   2004/10/21 22:35:51-05:00 sfrench@smft41.(none) +5 -6
#   treat NTFS junctions (reparse points) as directories rather than symlinks since we can not follow them
# 
# fs/cifs/README
#   2004/10/21 22:35:51-05:00 sfrench@smft41.(none) +4 -0
#   Update readme for missing cifs mount options
# 
# fs/cifs/CHANGES
#   2004/10/21 22:35:51-05:00 sfrench@smft41.(none) +2 -1
#   update cifs change log
# 
# ChangeSet
#   2004/10/19 17:59:37-05:00 sfrench@smft41.(none) 
#   Merge bk://cifs.bkbits.net/linux-2.5cifs
#   into smft41.(none):/home/sfrench/linux-2.5cifs
# 
# fs/cifs/CHANGES
#   2004/10/19 17:59:29-05:00 sfrench@smft41.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/10/19 17:56:53-05:00 sfrench@smft41.(none) 
#   [CIFS] ignore guest mount option do not log warning on it
#   
#   Signed-off-by:  Steve French (sfrench@us.ibm.com)
# 
# fs/cifs/connect.c
#   2004/10/19 17:56:46-05:00 sfrench@smft41.(none) +2 -0
#   ignore guest mount option do not log warning on it
# 
# fs/cifs/cifspdu.h
#   2004/10/19 17:56:46-05:00 sfrench@smft41.(none) +2 -0
#   missing defines for a few info levels
# 
# fs/cifs/cifsfs.h
#   2004/10/19 17:56:46-05:00 sfrench@smft41.(none) +1 -1
#   Update change log for version 1.23 of cifs vfs 
# 
# fs/cifs/CHANGES
#   2004/10/19 17:56:46-05:00 sfrench@smft41.(none) +6 -0
#   Update change log for version 1.23 of cifs vfs 
# 
diff -Nru a/fs/cifs/CHANGES b/fs/cifs/CHANGES
--- a/fs/cifs/CHANGES	2004-10-26 18:38:56 -07:00
+++ b/fs/cifs/CHANGES	2004-10-26 18:38:56 -07:00
@@ -1,3 +1,10 @@
+Version 1.23
+------------
+Multiple bigendian fixes. On little endian systems (for reconnect after
+network failure) fix tcp session reconnect code so we do not try first
+to reconnect on reverse of port 445. Treat reparse points (NTFS junctions)
+as directories rather than symlinks because we can do follow link on them.
+
 Version 1.22
 ------------
 Add config option to enable XATTR (extended attribute) support, mapping
diff -Nru a/fs/cifs/README b/fs/cifs/README
--- a/fs/cifs/README	2004-10-26 18:38:56 -07:00
+++ b/fs/cifs/README	2004-10-26 18:38:56 -07:00
@@ -266,6 +266,10 @@
 		If you do not trust the servers in your network (your mount
 		targets) it is recommended that you specify this option for
 		greater security.
+  exec		Permit execution of binaries on the mount.
+  noexec	Do not permit execution of binaries on the mount.
+  dev		Recognize block devices on the remote mount.
+  nodev		Do not recognize devices on the remote mount.
   suid          Allow remote files on this mountpoint with suid enabled to 
 		be executed (default for mounts when executed as root,
 		nosuid is default for user mounts).
diff -Nru a/fs/cifs/cifsfs.h b/fs/cifs/cifsfs.h
--- a/fs/cifs/cifsfs.h	2004-10-26 18:38:56 -07:00
+++ b/fs/cifs/cifsfs.h	2004-10-26 18:38:56 -07:00
@@ -90,5 +90,5 @@
 			 size_t, int);
 extern ssize_t	cifs_getxattr(struct dentry *, const char *, void *, size_t);
 extern ssize_t	cifs_listxattr(struct dentry *, char *, size_t);
-#define CIFS_VERSION   "1.20"
+#define CIFS_VERSION   "1.23"
 #endif				/* _CIFSFS_H */
diff -Nru a/fs/cifs/cifspdu.h b/fs/cifs/cifspdu.h
--- a/fs/cifs/cifspdu.h	2004-10-26 18:38:56 -07:00
+++ b/fs/cifs/cifspdu.h	2004-10-26 18:38:56 -07:00
@@ -1351,6 +1351,8 @@
 #define SMB_QUERY_CIFS_UNIX_INFO    0x200
 #define SMB_QUERY_LABEL_INFO        0x3ea
 #define SMB_QUERY_FS_QUOTA_INFO     0x3ee
+#define SMB_QUERY_FS_FULL_SIZE_INFO 0x3ef
+#define SMB_QUERY_OBJECTID_INFO     0x3f0
 
 typedef struct smb_com_transaction2_qfsi_req {
 	struct smb_hdr hdr;	/* wct = 14+ */
diff -Nru a/fs/cifs/connect.c b/fs/cifs/connect.c
--- a/fs/cifs/connect.c	2004-10-26 18:38:56 -07:00
+++ b/fs/cifs/connect.c	2004-10-26 18:38:56 -07:00
@@ -742,6 +742,8 @@
 			/* ignore */
 		} else if (strnicmp(data, "version", 3) == 0) {
 			/* ignore */
+		} else if (strnicmp(data, "guest",5) == 0) {
+			/* ignore */
 		} else if (strnicmp(data, "rw", 2) == 0) {
 			vol->rw = TRUE;
 		} else if ((strnicmp(data, "suid", 4) == 0) ||
diff -Nru a/fs/cifs/file.c b/fs/cifs/file.c
--- a/fs/cifs/file.c	2004-10-26 18:38:56 -07:00
+++ b/fs/cifs/file.c	2004-10-26 18:38:56 -07:00
@@ -1376,23 +1376,22 @@
 	cFYI(0,
 	     ("CIFS FFIRST: Attributes came in as 0x%x",
 	      attr));
-	if (attr & ATTR_REPARSE) {
-		*pobject_type = DT_LNK;
-		/* BB can this and S_IFREG or S_IFDIR be set as in Windows? */
-		tmp_inode->i_mode |= S_IFLNK;
-	} else if (attr & ATTR_DIRECTORY) {
+	if (attr & ATTR_DIRECTORY) {
 		*pobject_type = DT_DIR;
 		/* override default perms since we do not lock dirs */
 		if(atomic_read(&cifsInfo->inUse) == 0) {
 			tmp_inode->i_mode = cifs_sb->mnt_dir_mode;
 		}
 		tmp_inode->i_mode |= S_IFDIR;
+/* we no longer mark these because we could not follow them */
+/*        } else if (attr & ATTR_REPARSE) {
+                *pobject_type = DT_LNK;
+                tmp_inode->i_mode |= S_IFLNK;*/
 	} else {
 		*pobject_type = DT_REG;
 		tmp_inode->i_mode |= S_IFREG;
 		if(attr & ATTR_READONLY)
 			tmp_inode->i_mode &= ~(S_IWUGO);
-
 	}/* could add code here - to validate if device or weird share type? */
 
 	/* can not fill in nlink here as in qpathinfo version and Unx search */
diff -Nru a/fs/cifs/inode.c b/fs/cifs/inode.c
--- a/fs/cifs/inode.c	2004-10-26 18:38:56 -07:00
+++ b/fs/cifs/inode.c	2004-10-26 18:38:56 -07:00
@@ -273,10 +273,10 @@
 			/* new inode, can safely set these fields */
 			inode->i_mode = cifs_sb->mnt_file_mode;
 
-		if (attr & ATTR_REPARSE) {
-	/* Can IFLNK be set as it basically is on windows with IFREG or IFDIR? */
-			inode->i_mode |= S_IFLNK;
-		} else if (attr & ATTR_DIRECTORY) {
+/*		if (attr & ATTR_REPARSE)  */
+/* 		We no longer handle these as symlinks because we could not */
+/* 		follow them due to the absolute path with drive letter */
+		if (attr & ATTR_DIRECTORY) {
 	/* override default perms since we do not do byte range locking on dirs */
 			inode->i_mode = cifs_sb->mnt_dir_mode;
 			inode->i_mode |= S_IFDIR;