tentatively merged into cifs-2.6.git for-next pending testing On Wed, Aug 2, 2023 at 11:43 AM Paulo Alcantara <pc@xxxxxxxxxxxxx> wrote: > > Customer reported that they couldn't mount their DFS link that was > seen by the client as a DFS interlink -- special form of DFS link > where its single target may point to a different DFS namespace -- and > it turned out that it was just a regular DFS link where its referral > header flags missed the StorageServers bit thus making the client > think it couldn't tree connect to target directly without requiring > further referrals. > > When the DFS link referral header flags misses the StoraServers bit > and its target doesn't respond to any referrals, then tree connect to > it. > > Fixes: a1c0d00572fc ("cifs: share dfs connections and supers") > Signed-off-by: Paulo Alcantara (SUSE) <pc@xxxxxxxxxxxxx> > --- > fs/smb/client/dfs.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/fs/smb/client/dfs.c b/fs/smb/client/dfs.c > index df3fd3b720da..ee772c3d9f00 100644 > --- a/fs/smb/client/dfs.c > +++ b/fs/smb/client/dfs.c > @@ -177,8 +177,12 @@ static int __dfs_mount_share(struct cifs_mount_ctx *mnt_ctx) > struct dfs_cache_tgt_list tl = DFS_CACHE_TGT_LIST_INIT(tl); > > rc = dfs_get_referral(mnt_ctx, ref_path + 1, NULL, &tl); > - if (rc) > + if (rc) { > + rc = cifs_mount_get_tcon(mnt_ctx); > + if (!rc) > + rc = cifs_is_path_remote(mnt_ctx); > break; > + } > > tit = dfs_cache_get_tgt_iterator(&tl); > if (!tit) { > -- > 2.41.0 > -- Thanks, Steve