cifs: move unix extension call to cifs_query_symlink()
Unix extensions rigth now are only applicable to smb1 operations. Move the check and subsequent unix extension call to the smb1 specific call to query_symlink() ie. cifs_query_symlink(). Signed-off-by: Sachin Prabhu <sprabhu@redhat.com> Reviewed-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve French <smfrench@gmail.com>
This commit is contained in:
parent
0f8dce1cb7
commit
0ecdb4f572
|
@ -518,10 +518,7 @@ cifs_follow_link(struct dentry *direntry, struct nameidata *nd)
|
||||||
rc = query_mf_symlink(xid, tcon, cifs_sb, full_path,
|
rc = query_mf_symlink(xid, tcon, cifs_sb, full_path,
|
||||||
&target_path);
|
&target_path);
|
||||||
|
|
||||||
if ((rc != 0) && cap_unix(tcon->ses))
|
if (rc != 0 && server->ops->query_symlink)
|
||||||
rc = CIFSSMBUnixQuerySymLink(xid, tcon, full_path, &target_path,
|
|
||||||
cifs_sb->local_nls);
|
|
||||||
else if (rc != 0 && server->ops->query_symlink)
|
|
||||||
rc = server->ops->query_symlink(xid, tcon, full_path,
|
rc = server->ops->query_symlink(xid, tcon, full_path,
|
||||||
&target_path, cifs_sb);
|
&target_path, cifs_sb);
|
||||||
|
|
||||||
|
|
|
@ -918,23 +918,31 @@ cifs_query_symlink(const unsigned int xid, struct cifs_tcon *tcon,
|
||||||
|
|
||||||
cifs_dbg(FYI, "%s: path: %s\n", __func__, full_path);
|
cifs_dbg(FYI, "%s: path: %s\n", __func__, full_path);
|
||||||
|
|
||||||
|
/* Check for unix extensions */
|
||||||
|
if (cap_unix(tcon->ses)) {
|
||||||
|
rc = CIFSSMBUnixQuerySymLink(xid, tcon, full_path, target_path,
|
||||||
|
cifs_sb->local_nls);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
rc = CIFSSMBOpen(xid, tcon, full_path, FILE_OPEN,
|
rc = CIFSSMBOpen(xid, tcon, full_path, FILE_OPEN,
|
||||||
FILE_READ_ATTRIBUTES, OPEN_REPARSE_POINT, &netfid,
|
FILE_READ_ATTRIBUTES, OPEN_REPARSE_POINT, &netfid,
|
||||||
&oplock, NULL, cifs_sb->local_nls,
|
&oplock, NULL, cifs_sb->local_nls,
|
||||||
cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
|
cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
goto out;
|
||||||
|
|
||||||
rc = CIFSSMBQuerySymLink(xid, tcon, netfid, target_path,
|
rc = CIFSSMBQuerySymLink(xid, tcon, netfid, target_path,
|
||||||
cifs_sb->local_nls);
|
cifs_sb->local_nls);
|
||||||
if (rc) {
|
if (rc)
|
||||||
CIFSSMBClose(xid, tcon, netfid);
|
goto out_close;
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
convert_delimiter(*target_path, '/');
|
convert_delimiter(*target_path, '/');
|
||||||
|
out_close:
|
||||||
CIFSSMBClose(xid, tcon, netfid);
|
CIFSSMBClose(xid, tcon, netfid);
|
||||||
cifs_dbg(FYI, "%s: target path: %s\n", __func__, *target_path);
|
out:
|
||||||
|
if (!rc)
|
||||||
|
cifs_dbg(FYI, "%s: target path: %s\n", __func__, *target_path);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue