SMB3: Clean up query symlink when reparse point
Two of the common symlink formats use reparse points (unlike mfsymlinks and also unlike the SMB1 posix extensions). This is the first part of the fixes to allow these reparse points (NFS style and Windows symlinks) to be resolved properly as symlinks by the client. Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:

committed by
Steve French

parent
6a54b2e002
commit
ebaf546a55
@@ -950,8 +950,8 @@ cifs_unix_dfs_readlink(const unsigned int xid, struct cifs_tcon *tcon,
|
||||
|
||||
static int
|
||||
cifs_query_symlink(const unsigned int xid, struct cifs_tcon *tcon,
|
||||
const char *full_path, char **target_path,
|
||||
struct cifs_sb_info *cifs_sb)
|
||||
struct cifs_sb_info *cifs_sb, const char *full_path,
|
||||
char **target_path, bool is_reparse_point)
|
||||
{
|
||||
int rc;
|
||||
int oplock = 0;
|
||||
@@ -960,6 +960,11 @@ cifs_query_symlink(const unsigned int xid, struct cifs_tcon *tcon,
|
||||
|
||||
cifs_dbg(FYI, "%s: path: %s\n", __func__, full_path);
|
||||
|
||||
if (is_reparse_point) {
|
||||
cifs_dbg(VFS, "reparse points not handled for SMB1 symlinks\n");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
/* Check for unix extensions */
|
||||
if (cap_unix(tcon->ses)) {
|
||||
rc = CIFSSMBUnixQuerySymLink(xid, tcon, full_path, target_path,
|
||||
|
Reference in New Issue
Block a user