aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve French <sfrench@us.ibm.com>2007-09-16 22:04:21 -0400
committerSteve French <sfrench@us.ibm.com>2007-09-16 22:04:21 -0400
commitc45d707f67b82236fcf9ca2af31c264669368b9b (patch)
treefde8fda767542a70cad4e86be74eff172be2359c
parent5a07cdf86c1485b570789fb660c8ada7c2635b23 (diff)
[CIFS] Fallback to standard mkdir if server incorrectly claims support for
posix ops Signed-off-by: Steve French <sfrench@us.ibm.com>
-rw-r--r--fs/cifs/cifsfs.h2
-rw-r--r--fs/cifs/inode.c7
2 files changed, 6 insertions, 3 deletions
diff --git a/fs/cifs/cifsfs.h b/fs/cifs/cifsfs.h
index dd64cecd923b..13c53a4ee0f7 100644
--- a/fs/cifs/cifsfs.h
+++ b/fs/cifs/cifsfs.h
@@ -101,5 +101,5 @@ extern ssize_t cifs_getxattr(struct dentry *, const char *, void *, size_t);
101extern ssize_t cifs_listxattr(struct dentry *, char *, size_t); 101extern ssize_t cifs_listxattr(struct dentry *, char *, size_t);
102extern int cifs_ioctl(struct inode *inode, struct file *filep, 102extern int cifs_ioctl(struct inode *inode, struct file *filep,
103 unsigned int command, unsigned long arg); 103 unsigned int command, unsigned long arg);
104#define CIFS_VERSION "1.50" 104#define CIFS_VERSION "1.51"
105#endif /* _CIFSFS_H */ 105#endif /* _CIFSFS_H */
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index 9dffa93d6bdd..552d68b9d6f4 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -925,7 +925,10 @@ int cifs_mkdir(struct inode *inode, struct dentry *direntry, int mode)
925 full_path, cifs_sb->local_nls, 925 full_path, cifs_sb->local_nls,
926 cifs_sb->mnt_cifs_flags & 926 cifs_sb->mnt_cifs_flags &
927 CIFS_MOUNT_MAP_SPECIAL_CHR); 927 CIFS_MOUNT_MAP_SPECIAL_CHR);
928 if (rc) { 928 if (rc == -EOPNOTSUPP) {
929 kfree(pInfo);
930 goto mkdir_retry_old;
931 } else if (rc) {
929 cFYI(1, ("posix mkdir returned 0x%x", rc)); 932 cFYI(1, ("posix mkdir returned 0x%x", rc));
930 d_drop(direntry); 933 d_drop(direntry);
931 } else { 934 } else {
@@ -977,7 +980,7 @@ int cifs_mkdir(struct inode *inode, struct dentry *direntry, int mode)
977 kfree(pInfo); 980 kfree(pInfo);
978 goto mkdir_out; 981 goto mkdir_out;
979 } 982 }
980 983mkdir_retry_old:
981 /* BB add setting the equivalent of mode via CreateX w/ACLs */ 984 /* BB add setting the equivalent of mode via CreateX w/ACLs */
982 rc = CIFSSMBMkDir(xid, pTcon, full_path, cifs_sb->local_nls, 985 rc = CIFSSMBMkDir(xid, pTcon, full_path, cifs_sb->local_nls,
983 cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR); 986 cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);