summaryrefslogtreecommitdiff
path: root/fs/cifs/inode.c
diff options
context:
space:
mode:
authorSteve French <sfrench@us.ibm.com>2007-09-17 02:04:21 +0000
committerSteve French <sfrench@us.ibm.com>2007-09-17 02:04:21 +0000
commitc45d707f67b82236fcf9ca2af31c264669368b9b (patch)
treefde8fda767542a70cad4e86be74eff172be2359c /fs/cifs/inode.c
parent5a07cdf86c1485b570789fb660c8ada7c2635b23 (diff)
downloadlwn-c45d707f67b82236fcf9ca2af31c264669368b9b.tar.gz
lwn-c45d707f67b82236fcf9ca2af31c264669368b9b.zip
[CIFS] Fallback to standard mkdir if server incorrectly claims support for
posix ops Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/cifs/inode.c')
-rw-r--r--fs/cifs/inode.c7
1 files changed, 5 insertions, 2 deletions
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)
full_path, cifs_sb->local_nls,
cifs_sb->mnt_cifs_flags &
CIFS_MOUNT_MAP_SPECIAL_CHR);
- if (rc) {
+ if (rc == -EOPNOTSUPP) {
+ kfree(pInfo);
+ goto mkdir_retry_old;
+ } else if (rc) {
cFYI(1, ("posix mkdir returned 0x%x", rc));
d_drop(direntry);
} else {
@@ -977,7 +980,7 @@ int cifs_mkdir(struct inode *inode, struct dentry *direntry, int mode)
kfree(pInfo);
goto mkdir_out;
}
-
+mkdir_retry_old:
/* BB add setting the equivalent of mode via CreateX w/ACLs */
rc = CIFSSMBMkDir(xid, pTcon, full_path, cifs_sb->local_nls,
cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);