diff options
author | Steve French <sfrench@us.ibm.com> | 2007-09-17 02:04:21 +0000 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2007-09-17 02:04:21 +0000 |
commit | c45d707f67b82236fcf9ca2af31c264669368b9b (patch) | |
tree | fde8fda767542a70cad4e86be74eff172be2359c /fs/cifs/inode.c | |
parent | 5a07cdf86c1485b570789fb660c8ada7c2635b23 (diff) | |
download | lwn-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.c | 7 |
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); |