2011-11-07 20:29:33

by Mkrtchyan, Tigran

[permalink] [raw]
Subject: regression in referrals resolution

Hi,


today we was running test with referrals and notice that 'current'
3.1+ has a regression.
The referrals are resolved, but client returns IO error :


[957401.805315] encode_sequence:
sessionid=638433358:33554432:0:16777216 seqid=17 slotid=0 max_slotid=0
cache_this=0
[957401.807810] decode_attr_type: type=00
[957401.807812] decode_attr_change: change attribute=0
[957401.807814] decode_attr_size: file size=0
[957401.807816] decode_attr_fsid: fsid=(0x100/0x11)
[957401.807818] decode_attr_fileid: fileid=0
[957401.807820] decode_attr_fs_locations: fsroot path /pnfs/p3
[957401.807824] decode_attr_fs_locations: servers 131.169.80.47 path
/pnfs/desy.de/petra3
[957401.807828] decode_attr_fs_locations: fs_locations done, error = 524288
[957401.807830] decode_attr_mode: file mode=00
[957401.807832] decode_attr_nlink: nlink=1
[957401.807834] decode_attr_owner: uid=-2
[957401.807835] decode_attr_group: gid=-2
[957401.807837] decode_attr_rdev: rdev=(0x0:0x0)
[957401.807839] decode_attr_space_used: space used=0
[957401.807841] decode_attr_time_access: atime=0
[957401.807842] decode_attr_time_metadata: ctime=0
[957401.807844] decode_attr_time_modify: mtime=0
[957401.807846] decode_attr_mounted_on_fileid: fileid=0
[957401.807848] decode_getfattr_attrs: xdr returned -2097152
[957401.807850] decode_getfattr_generic: xdr returned 0
[957401.807852] nfs41_sequence_done: Error 0 free the slot
[957401.807854] nfs4_free_slot: free_slotid 0 highest_used_slotid -1
[957401.807859] nfs4_proc_fs_locations: returned status = 0
[957401.807862] nfs4_map_errors could not handle NFSv4 error 10019


this is with

7670c7010c7b367ca40c3aba02afb36149764a6e

from git://linux-nfs.org/~trondmy/nfs-2.6.git bugfixes

The same server and same configuration with kernel from fedora16 works
out-of-box.

Regards,
Tigran.


2011-11-09 10:25:17

by Mkrtchyan, Tigran

[permalink] [raw]
Subject: Re: regression in referrals resolution

Hi Trond,

your fix is still not in bugfixes branch yet....


Regards,
Tigran.

On Mon, Nov 7, 2011 at 10:18 PM, Tigran Mkrtchyan
<[email protected]> wrote:
> On Mon, Nov 7, 2011 at 9:58 PM, Trond Myklebust
> <[email protected]> wrote:
>> On Mon, 2011-11-07 at 21:29 +0100, Tigran Mkrtchyan wrote:
>>> Hi,
>>>
>>>
>>> today we was running test with referrals and notice that 'current'
>>> 3.1+ has a regression.
>>> The referrals are resolved, but client returns IO error :
>>
>> Doh! I expect that the following should fix it...
>
> In did!
>
> Thanks,
>   Tigran.
>>
>> Thanks
>>  Trond
>> 8<--------------------------------------------------------------------------
>> From 91207dc6fd4fbe5f758dd2558e927bcd0c411581 Mon Sep 17 00:00:00 2001
>> From: Trond Myklebust <[email protected]>
>> Date: Mon, 7 Nov 2011 15:50:32 -0500
>> Subject: [PATCH] NFS: Fix a regression in the referral code
>>
>> Fix a regression that was introduced by commit
>> 0c2e53f11a6dae9e3af5f50f5ad0382e7c3e0cfa (NFS: Remove the unused
>> "lookupfh()" version of nfs4_proc_lookup()).
>>
>> In the case where the lookup gets an NFS4ERR_MOVED, we want to return
>> the result of nfs4_get_referral(). Instead, that value is getting
>> clobbered by the call to nfs4_handle_exception()...
>>
>> Reported-by: Tigran Mkrtchyan <[email protected]>
>> Signed-off-by: Trond Myklebust <[email protected]>
>> ---
>>  fs/nfs/nfs4proc.c |    3 +--
>>  1 files changed, 1 insertions(+), 2 deletions(-)
>>
>> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
>> index 069cb80..be2bbac 100644
>> --- a/fs/nfs/nfs4proc.c
>> +++ b/fs/nfs/nfs4proc.c
>> @@ -2464,8 +2464,7 @@ static int nfs4_proc_lookup(struct rpc_clnt *clnt, struct inode *dir, struct qst
>>                case -NFS4ERR_BADNAME:
>>                        return -ENOENT;
>>                case -NFS4ERR_MOVED:
>> -                       err = nfs4_get_referral(dir, name, fattr, fhandle);
>> -                       break;
>> +                       return nfs4_get_referral(dir, name, fattr, fhandle);
>>                case -NFS4ERR_WRONGSEC:
>>                        nfs_fixup_secinfo_attributes(fattr, fhandle);
>>                }
>> --
>> 1.7.7
>>
>>
>> --
>> Trond Myklebust
>> Linux NFS client maintainer
>>
>> NetApp
>> [email protected]
>> http://www.netapp.com
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
>> the body of a message to [email protected]
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>

2011-11-21 11:58:39

by Mkrtchyan, Tigran

[permalink] [raw]
Subject: Re: regression in referrals resolution

Hi Trond,

are you considering to push this fix upstream?

Tigran.

On Wed, Nov 9, 2011 at 11:25 AM, Tigran Mkrtchyan
<[email protected]> wrote:
> Hi Trond,
>
> your fix is still not in bugfixes branch yet....
>
>
> Regards,
>   Tigran.
>
> On Mon, Nov 7, 2011 at 10:18 PM, Tigran Mkrtchyan
> <[email protected]> wrote:
>> On Mon, Nov 7, 2011 at 9:58 PM, Trond Myklebust
>> <[email protected]> wrote:
>>> On Mon, 2011-11-07 at 21:29 +0100, Tigran Mkrtchyan wrote:
>>>> Hi,
>>>>
>>>>
>>>> today we was running test with referrals and notice that 'current'
>>>> 3.1+ has a regression.
>>>> The referrals are resolved, but client returns IO error :
>>>
>>> Doh! I expect that the following should fix it...
>>
>> In did!
>>
>> Thanks,
>>   Tigran.
>>>
>>> Thanks
>>>  Trond
>>> 8<--------------------------------------------------------------------------
>>> From 91207dc6fd4fbe5f758dd2558e927bcd0c411581 Mon Sep 17 00:00:00 2001
>>> From: Trond Myklebust <[email protected]>
>>> Date: Mon, 7 Nov 2011 15:50:32 -0500
>>> Subject: [PATCH] NFS: Fix a regression in the referral code
>>>
>>> Fix a regression that was introduced by commit
>>> 0c2e53f11a6dae9e3af5f50f5ad0382e7c3e0cfa (NFS: Remove the unused
>>> "lookupfh()" version of nfs4_proc_lookup()).
>>>
>>> In the case where the lookup gets an NFS4ERR_MOVED, we want to return
>>> the result of nfs4_get_referral(). Instead, that value is getting
>>> clobbered by the call to nfs4_handle_exception()...
>>>
>>> Reported-by: Tigran Mkrtchyan <[email protected]>
>>> Signed-off-by: Trond Myklebust <[email protected]>
>>> ---
>>>  fs/nfs/nfs4proc.c |    3 +--
>>>  1 files changed, 1 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
>>> index 069cb80..be2bbac 100644
>>> --- a/fs/nfs/nfs4proc.c
>>> +++ b/fs/nfs/nfs4proc.c
>>> @@ -2464,8 +2464,7 @@ static int nfs4_proc_lookup(struct rpc_clnt *clnt, struct inode *dir, struct qst
>>>                case -NFS4ERR_BADNAME:
>>>                        return -ENOENT;
>>>                case -NFS4ERR_MOVED:
>>> -                       err = nfs4_get_referral(dir, name, fattr, fhandle);
>>> -                       break;
>>> +                       return nfs4_get_referral(dir, name, fattr, fhandle);
>>>                case -NFS4ERR_WRONGSEC:
>>>                        nfs_fixup_secinfo_attributes(fattr, fhandle);
>>>                }
>>> --
>>> 1.7.7
>>>
>>>
>>> --
>>> Trond Myklebust
>>> Linux NFS client maintainer
>>>
>>> NetApp
>>> [email protected]
>>> http://www.netapp.com
>>>
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
>>> the body of a message to [email protected]
>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>
>>
>

2011-11-07 21:18:39

by Mkrtchyan, Tigran

[permalink] [raw]
Subject: Re: regression in referrals resolution

On Mon, Nov 7, 2011 at 9:58 PM, Trond Myklebust
<[email protected]> wrote:
> On Mon, 2011-11-07 at 21:29 +0100, Tigran Mkrtchyan wrote:
>> Hi,
>>
>>
>> today we was running test with referrals and notice that 'current'
>> 3.1+ has a regression.
>> The referrals are resolved, but client returns IO error :
>
> Doh! I expect that the following should fix it...

In did!

Thanks,
Tigran.
>
> Thanks
>  Trond
> 8<--------------------------------------------------------------------------
> From 91207dc6fd4fbe5f758dd2558e927bcd0c411581 Mon Sep 17 00:00:00 2001
> From: Trond Myklebust <[email protected]>
> Date: Mon, 7 Nov 2011 15:50:32 -0500
> Subject: [PATCH] NFS: Fix a regression in the referral code
>
> Fix a regression that was introduced by commit
> 0c2e53f11a6dae9e3af5f50f5ad0382e7c3e0cfa (NFS: Remove the unused
> "lookupfh()" version of nfs4_proc_lookup()).
>
> In the case where the lookup gets an NFS4ERR_MOVED, we want to return
> the result of nfs4_get_referral(). Instead, that value is getting
> clobbered by the call to nfs4_handle_exception()...
>
> Reported-by: Tigran Mkrtchyan <[email protected]>
> Signed-off-by: Trond Myklebust <[email protected]>
> ---
>  fs/nfs/nfs4proc.c |    3 +--
>  1 files changed, 1 insertions(+), 2 deletions(-)
>
> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
> index 069cb80..be2bbac 100644
> --- a/fs/nfs/nfs4proc.c
> +++ b/fs/nfs/nfs4proc.c
> @@ -2464,8 +2464,7 @@ static int nfs4_proc_lookup(struct rpc_clnt *clnt, struct inode *dir, struct qst
>                case -NFS4ERR_BADNAME:
>                        return -ENOENT;
>                case -NFS4ERR_MOVED:
> -                       err = nfs4_get_referral(dir, name, fattr, fhandle);
> -                       break;
> +                       return nfs4_get_referral(dir, name, fattr, fhandle);
>                case -NFS4ERR_WRONGSEC:
>                        nfs_fixup_secinfo_attributes(fattr, fhandle);
>                }
> --
> 1.7.7
>
>
> --
> Trond Myklebust
> Linux NFS client maintainer
>
> NetApp
> [email protected]
> http://www.netapp.com
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to [email protected]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

2011-11-07 20:58:22

by Myklebust, Trond

[permalink] [raw]
Subject: Re: regression in referrals resolution

On Mon, 2011-11-07 at 21:29 +0100, Tigran Mkrtchyan wrote:
> Hi,
>
>
> today we was running test with referrals and notice that 'current'
> 3.1+ has a regression.
> The referrals are resolved, but client returns IO error :

Doh! I expect that the following should fix it...

Thanks
Trond
8<--------------------------------------------------------------------------
>From 91207dc6fd4fbe5f758dd2558e927bcd0c411581 Mon Sep 17 00:00:00 2001
From: Trond Myklebust <[email protected]>
Date: Mon, 7 Nov 2011 15:50:32 -0500
Subject: [PATCH] NFS: Fix a regression in the referral code

Fix a regression that was introduced by commit
0c2e53f11a6dae9e3af5f50f5ad0382e7c3e0cfa (NFS: Remove the unused
"lookupfh()" version of nfs4_proc_lookup()).

In the case where the lookup gets an NFS4ERR_MOVED, we want to return
the result of nfs4_get_referral(). Instead, that value is getting
clobbered by the call to nfs4_handle_exception()...

Reported-by: Tigran Mkrtchyan <[email protected]>
Signed-off-by: Trond Myklebust <[email protected]>
---
fs/nfs/nfs4proc.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 069cb80..be2bbac 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -2464,8 +2464,7 @@ static int nfs4_proc_lookup(struct rpc_clnt *clnt, struct inode *dir, struct qst
case -NFS4ERR_BADNAME:
return -ENOENT;
case -NFS4ERR_MOVED:
- err = nfs4_get_referral(dir, name, fattr, fhandle);
- break;
+ return nfs4_get_referral(dir, name, fattr, fhandle);
case -NFS4ERR_WRONGSEC:
nfs_fixup_secinfo_attributes(fattr, fhandle);
}
--
1.7.7


--
Trond Myklebust
Linux NFS client maintainer

NetApp
[email protected]
http://www.netapp.com