diff options
author | Steve French <sfrench@us.ibm.com> | 2005-07-14 19:25:12 -0400 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2005-07-14 19:25:12 -0400 |
commit | d7245c2ccf14cde2023273c1ec246732d96e2c27 (patch) | |
tree | 657d7b5c9431b6117659f9638f4121ac237d4c5f /fs/cifs/connect.c | |
parent | 4887c61811c2283162684d7f9075b7676ef6a9bf (diff) |
[CIFS] Add compat with SFU (part 1)
This should help the case of creating fifos and other special files to
servers which do not support the Unix extensions.
Signed-off-by: Steve French (sfrench@us.ibm.com)
Thanks to Martin Koeppe for his suggestions and good analysis
Diffstat (limited to 'fs/cifs/connect.c')
-rw-r--r-- | fs/cifs/connect.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index f6d2a7974fc1..36f78596c81a 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c | |||
@@ -75,6 +75,7 @@ struct smb_vol { | |||
75 | unsigned direct_io:1; | 75 | unsigned direct_io:1; |
76 | unsigned remap:1; /* set to remap seven reserved chars in filenames */ | 76 | unsigned remap:1; /* set to remap seven reserved chars in filenames */ |
77 | unsigned posix_paths:1; /* unset to not ask for posix pathnames. */ | 77 | unsigned posix_paths:1; /* unset to not ask for posix pathnames. */ |
78 | unsigned sfu_emul:1; | ||
78 | unsigned int rsize; | 79 | unsigned int rsize; |
79 | unsigned int wsize; | 80 | unsigned int wsize; |
80 | unsigned int sockopt; | 81 | unsigned int sockopt; |
@@ -1027,6 +1028,10 @@ cifs_parse_mount_options(char *options, const char *devname,struct smb_vol *vol) | |||
1027 | vol->remap = 1; | 1028 | vol->remap = 1; |
1028 | } else if (strnicmp(data, "nomapchars", 10) == 0) { | 1029 | } else if (strnicmp(data, "nomapchars", 10) == 0) { |
1029 | vol->remap = 0; | 1030 | vol->remap = 0; |
1031 | } else if (strnicmp(data, "sfu", 3) == 0) { | ||
1032 | vol->sfu_emul = 1; | ||
1033 | } else if (strnicmp(data, "nosfu", 5) == 0) { | ||
1034 | vol->sfu_emul = 0; | ||
1030 | } else if (strnicmp(data, "posixpaths", 10) == 0) { | 1035 | } else if (strnicmp(data, "posixpaths", 10) == 0) { |
1031 | vol->posix_paths = 1; | 1036 | vol->posix_paths = 1; |
1032 | } else if (strnicmp(data, "noposixpaths", 12) == 0) { | 1037 | } else if (strnicmp(data, "noposixpaths", 12) == 0) { |
@@ -1687,6 +1692,8 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb, | |||
1687 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_MAP_SPECIAL_CHR; | 1692 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_MAP_SPECIAL_CHR; |
1688 | if(volume_info.no_xattr) | 1693 | if(volume_info.no_xattr) |
1689 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_NO_XATTR; | 1694 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_NO_XATTR; |
1695 | if(volume_info.sfu_emul) | ||
1696 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_UNX_EMUL; | ||
1690 | 1697 | ||
1691 | if(volume_info.direct_io) { | 1698 | if(volume_info.direct_io) { |
1692 | cERROR(1,("mounting share using direct i/o")); | 1699 | cERROR(1,("mounting share using direct i/o")); |