Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1af28ceb authored by Igor Mammedov's avatar Igor Mammedov Committed by Steve French
Browse files

Enable dfs submounts to handle remote referrals.



Having remote dfs root support in cifs_mount, we can
afford to pass into it UNC that is remote.

Signed-off-by: default avatarIgor Mammedov <niallain@gmail.com>
Acked-by: default avatarJeff Layton <jlayton@redhat.com>
Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent 20418acd
Loading
Loading
Loading
Loading
+14 −18
Original line number Diff line number Diff line
@@ -341,8 +341,7 @@ cifs_dfs_follow_mountpoint(struct dentry *dentry, struct nameidata *nd)

	for (i = 0; i < num_referrals; i++) {
		dump_referral(referrals+i);
		/* connect to a storage node */
		if (referrals[i].flags & DFSREF_STORAGE_SERVER) {
		/* connect to a node */
		int len;
		len = strlen(referrals[i].node_name);
		if (len < 2) {
@@ -352,17 +351,14 @@ cifs_dfs_follow_mountpoint(struct dentry *dentry, struct nameidata *nd)
			goto out_err;
		}
		mnt = cifs_dfs_do_refmount(nd->path.mnt,
						nd->path.dentry,
						referrals + i);
			cFYI(1, ("%s: cifs_dfs_do_refmount:%s , mnt:%p",
					 __func__,
				nd->path.dentry, referrals + i);
		cFYI(1, ("%s: cifs_dfs_do_refmount:%s , mnt:%p", __func__,
					referrals[i].node_name, mnt));

		/* complete mount procedure if we accured submount */
		if (!IS_ERR(mnt))
			break;
	}
	}

	/* we need it cause for() above could exit without valid submount */
	rc = PTR_ERR(mnt);