[linux-cifs-client] Re: [PATCH 3/3] [CIFS] Enable dfs submounts to handle remote referrals.

Jeff Layton jlayton at redhat.com
Fri Mar 27 16:43:05 GMT 2009


On Tue, 17 Mar 2009 19:44:32 +0300
Igor Mammedov <niallain at gmail.com> wrote:

> From 73352e0f001d32812f9b18ae85aec35026b7a194 Mon Sep 17 00:00:00 2001
> From: Igor Mammedov <niallain at gmail.com>
> Date: Tue, 17 Mar 2009 19:00:30 +0300
> Subject: [PATCH 3/3] [CIFS] 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: Igor Mammedov <niallain at gmail.com>
> ---
>  fs/cifs/cifs_dfs_ref.c |   32 ++++++++++++++------------------
>  1 files changed, 14 insertions(+), 18 deletions(-)
> 
> diff --git a/fs/cifs/cifs_dfs_ref.c b/fs/cifs/cifs_dfs_ref.c
> index 5fdbf8a..896b08f 100644
> --- a/fs/cifs/cifs_dfs_ref.c
> +++ b/fs/cifs/cifs_dfs_ref.c
> @@ -341,27 +341,23 @@ 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) {
> -			int len;
> -			len = strlen(referrals[i].node_name);
> -			if (len < 2) {
> -				cERROR(1, ("%s: Net Address path too short: %s",
> +		/* connect to a node */
> +		int len;
> +		len = strlen(referrals[i].node_name);
> +		if (len < 2) {
> +			cERROR(1, ("%s: Net Address path too short: %s",
>  					__func__, referrals[i].node_name));
> -				rc = -EINVAL;
> -				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__,
> +			rc = -EINVAL;
> +			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__,
>  					referrals[i].node_name, mnt));
>  
> -			/* complete mount procedure if we accured submount */
> -			if (!IS_ERR(mnt))
> -				break;
> -		}
> +		/* complete mount procedure if we accured submount */
> +		if (!IS_ERR(mnt))
> +			break;
>  	}
>  
>  	/* we need it cause for() above could exit without valid submount */


Looks fine, though obviously patch #2 needs to go in first.

-- 
Jeff Layton <jlayton at redhat.com>


More information about the linux-cifs-client mailing list