Commit d3485d37 authored by Steve French's avatar Steve French
Browse files

[CIFS] Finish cifs mount option which requests case insensitive path


name matching.

	Signed-off-by: default avatarSteve French <(sfrench@us.ibm.com)>
parent c46fa8ac
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -26,8 +26,7 @@
#define CIFS_MOUNT_MAP_SPECIAL_CHR 0x20 /* remap illegal chars in filenames */
#define CIFS_MOUNT_POSIX_PATHS 0x40 /* Negotiate posix pathnames if possible. */
#define CIFS_MOUNT_UNX_EMUL    0x80 /* Network compat with SFUnix emulation */
#define CIFS_MOUNT_CASE_INSENS  0x100 /* Request case insenstive searches */
#define CIFS_MOUNT_NO_BRL	0x200 /* No sending byte range locks to srv */
#define CIFS_MOUNT_NO_BRL	0x100 /* No sending byte range locks to srv */

struct cifs_sb_info {
	struct cifsTconInfo *tcon;	/* primary mount */
+3 −2
Original line number Diff line number Diff line
@@ -110,8 +110,8 @@ enum protocolEnum {
 */

struct TCP_Server_Info {
	char server_Name[SERVER_NAME_LEN_WITH_NULL];	/* 15 chars + X'20'in 16th */
	char unicode_server_Name[SERVER_NAME_LEN_WITH_NULL * 2];	/* Unicode version of server_Name */
	char server_Name[SERVER_NAME_LEN_WITH_NULL]; /* 15 chars + X'20' 16th */
	char unicode_server_Name[SERVER_NAME_LEN_WITH_NULL * 2];
	struct socket *ssocket;
	union {
		struct sockaddr_in sockAddr;
@@ -231,6 +231,7 @@ struct cifsTconInfo {
	FILE_SYSTEM_ATTRIBUTE_INFO fsAttrInfo;	/* ok if file system name truncated */
	FILE_SYSTEM_UNIX_INFO fsUnixInfo;
	unsigned retry:1;
	unsigned nocase:1;
	/* BB add field for back pointer to sb struct? */
};

+7 −2
Original line number Diff line number Diff line
@@ -1048,6 +1048,11 @@ cifs_parse_mount_options(char *options, const char *devname,struct smb_vol *vol)
			vol->nobrl =  0;
		} else if (strnicmp(data, "nobrl", 5) == 0) {
			vol->nobrl =  1;
			/* turn off mandatory locking in mode
			if remote locking is turned off since the
			local vfs will do advisory */
			if(vol->file_mode == (S_IALLUGO & ~(S_ISUID | S_IXGRP)))
				vol->file_mode = S_IALLUGO;
		} else if (strnicmp(data, "setuids", 7) == 0) {
			vol->setuids = 1;
		} else if (strnicmp(data, "nosetuids", 9) == 0) {
@@ -1707,8 +1712,6 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
			cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_NO_XATTR;
		if(volume_info.sfu_emul)
			cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_UNX_EMUL;
		if(volume_info.nocase)
			cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_CASE_INSENS;
		if(volume_info.nobrl)
			cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_NO_BRL;

@@ -1727,6 +1730,7 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
			   to the same server share the last value passed in 
			   for the retry flag is used */
			tcon->retry = volume_info.retry;
			tcon->nocase = volume_info.nocase;
		} else {
			tcon = tconInfoAlloc();
			if (tcon == NULL)
@@ -1755,6 +1759,7 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
				if (!rc) {
					atomic_inc(&pSesInfo->inUse);
					tcon->retry = volume_info.retry;
					tcon->nocase = volume_info.nocase;
				}
			}
		}
+2 −0
Original line number Diff line number Diff line
@@ -375,6 +375,8 @@ header_assemble(struct smb_hdr *buffer, char smb_command /* command */ ,
		}
		if (treeCon->Flags & SMB_SHARE_IS_IN_DFS)
			buffer->Flags2 |= SMBFLG2_DFS;
		if (treeCon->nocase)
			buffer->Flags  |= SMBFLG_CASELESS;
		if((treeCon->ses) && (treeCon->ses->server))
			if(treeCon->ses->server->secMode & 
			  (SECMODE_SIGN_REQUIRED | SECMODE_SIGN_ENABLED))