Workaround Mac server problem
Mac server returns that they support CIFS Unix Extensions but doesn't actually support QUERY_FILE_UNIX_BASIC so mount fails. Workaround this problem by disabling use of Unix CIFS protocol extensions if server returns an EOPNOTSUPP error on QUERY_FILE_UNIX_BASIC during mount. Signed-off-by: Steve French <smfrench@gmail.com>
This commit is contained in:
parent
2baa268253
commit
b5b374eab1
|
@ -960,11 +960,18 @@ struct inode *cifs_root_iget(struct super_block *sb)
|
||||||
struct cifs_tcon *tcon = cifs_sb_master_tcon(cifs_sb);
|
struct cifs_tcon *tcon = cifs_sb_master_tcon(cifs_sb);
|
||||||
|
|
||||||
xid = get_xid();
|
xid = get_xid();
|
||||||
if (tcon->unix_ext)
|
if (tcon->unix_ext) {
|
||||||
rc = cifs_get_inode_info_unix(&inode, "", sb, xid);
|
rc = cifs_get_inode_info_unix(&inode, "", sb, xid);
|
||||||
else
|
/* some servers mistakenly claim POSIX support */
|
||||||
|
if (rc != -EOPNOTSUPP)
|
||||||
|
goto iget_no_retry;
|
||||||
|
cifs_dbg(VFS, "server does not support POSIX extensions");
|
||||||
|
tcon->unix_ext = false;
|
||||||
|
}
|
||||||
|
|
||||||
rc = cifs_get_inode_info(&inode, "", NULL, sb, xid, NULL);
|
rc = cifs_get_inode_info(&inode, "", NULL, sb, xid, NULL);
|
||||||
|
|
||||||
|
iget_no_retry:
|
||||||
if (!inode) {
|
if (!inode) {
|
||||||
inode = ERR_PTR(rc);
|
inode = ERR_PTR(rc);
|
||||||
goto out;
|
goto out;
|
||||||
|
|
Loading…
Reference in New Issue