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

Steve French smfrench at gmail.com
Thu Apr 2 04:22:51 GMT 2009


I merged your updated patch 2 (patch 1 was merged earlier), but was
not clear in the following patch (patch 3) why we no longer need to
check flags for DFSREF_STORAGE_SERVER, are other types (both
DFSREF_REFERRAL_SERVER and DFSREF_TARGET_FAILBACK) now ok and do not
require special handling (I wasn't sure about what TARGET_FAILBACK
does).

On Fri, Mar 27, 2009 at 11:43 AM, Jeff Layton <jlayton at redhat.com> wrote:
> 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>
>



-- 
Thanks,

Steve


More information about the linux-cifs-client mailing list