2015-01-03 19:45:36

by Chuck Lever III

[permalink] [raw]
Subject: [PATCH] NFS: Ignore transport protocol when detecting server trunking

Detect server trunking across transport protocols. Otherwise, an
RDMA mount and a TCP mount of the same server will end up with
separate nfs_clients using the same clientid4.

Reported-by: Dai Ngo <[email protected]>
Signed-off-by: Chuck Lever <[email protected]>
---
Re: yesterday's discussion of "[PATCH] NFSv4.1: Fix client id
trunking on Linux". This patch seems to address the behavior I
mentioned.

fs/nfs/nfs4client.c | 6 ------
1 file changed, 6 deletions(-)

diff --git a/fs/nfs/nfs4client.c b/fs/nfs/nfs4client.c
index c0fe338..c7bc38e 100644
--- a/fs/nfs/nfs4client.c
+++ b/fs/nfs/nfs4client.c
@@ -540,9 +540,6 @@ int nfs40_walk_client_list(struct nfs_client *new,
if (pos->rpc_ops != new->rpc_ops)
continue;

- if (pos->cl_proto != new->cl_proto)
- continue;
-
if (pos->cl_minorversion != new->cl_minorversion)
continue;

@@ -675,9 +672,6 @@ int nfs41_walk_client_list(struct nfs_client *new,
if (pos->rpc_ops != new->rpc_ops)
continue;

- if (pos->cl_proto != new->cl_proto)
- continue;
-
if (pos->cl_minorversion != new->cl_minorversion)
continue;




2015-01-03 21:20:47

by Trond Myklebust

[permalink] [raw]
Subject: Re: [PATCH] NFS: Ignore transport protocol when detecting server trunking

On Sat, Jan 3, 2015 at 2:45 PM, Chuck Lever <[email protected]> wrote:
> Detect server trunking across transport protocols. Otherwise, an
> RDMA mount and a TCP mount of the same server will end up with
> separate nfs_clients using the same clientid4.
>
> Reported-by: Dai Ngo <[email protected]>
> Signed-off-by: Chuck Lever <[email protected]>
> ---
> Re: yesterday's discussion of "[PATCH] NFSv4.1: Fix client id
> trunking on Linux". This patch seems to address the behavior I
> mentioned.
>
> fs/nfs/nfs4client.c | 6 ------
> 1 file changed, 6 deletions(-)
>
> diff --git a/fs/nfs/nfs4client.c b/fs/nfs/nfs4client.c
> index c0fe338..c7bc38e 100644
> --- a/fs/nfs/nfs4client.c
> +++ b/fs/nfs/nfs4client.c
> @@ -540,9 +540,6 @@ int nfs40_walk_client_list(struct nfs_client *new,
> if (pos->rpc_ops != new->rpc_ops)
> continue;
>
> - if (pos->cl_proto != new->cl_proto)
> - continue;
> -
> if (pos->cl_minorversion != new->cl_minorversion)
> continue;
>
> @@ -675,9 +672,6 @@ int nfs41_walk_client_list(struct nfs_client *new,
> if (pos->rpc_ops != new->rpc_ops)
> continue;
>
> - if (pos->cl_proto != new->cl_proto)
> - continue;
> -
> if (pos->cl_minorversion != new->cl_minorversion)
> continue;
>
>

Yep. Sorry, I only noticed this after I'd written my own version. I'll
replace mine with this one.


--
Trond Myklebust
Linux NFS client maintainer, PrimaryData
[email protected]

2015-01-03 21:23:38

by Chuck Lever III

[permalink] [raw]
Subject: Re: [PATCH] NFS: Ignore transport protocol when detecting server trunking


On Jan 3, 2015, at 4:20 PM, Trond Myklebust <[email protected]> wrote:

> On Sat, Jan 3, 2015 at 2:45 PM, Chuck Lever <[email protected]> wrote:
>> Detect server trunking across transport protocols. Otherwise, an
>> RDMA mount and a TCP mount of the same server will end up with
>> separate nfs_clients using the same clientid4.
>>
>> Reported-by: Dai Ngo <[email protected]>
>> Signed-off-by: Chuck Lever <[email protected]>
>> ---
>> Re: yesterday's discussion of "[PATCH] NFSv4.1: Fix client id
>> trunking on Linux". This patch seems to address the behavior I
>> mentioned.
>>
>> fs/nfs/nfs4client.c | 6 ------
>> 1 file changed, 6 deletions(-)
>>
>> diff --git a/fs/nfs/nfs4client.c b/fs/nfs/nfs4client.c
>> index c0fe338..c7bc38e 100644
>> --- a/fs/nfs/nfs4client.c
>> +++ b/fs/nfs/nfs4client.c
>> @@ -540,9 +540,6 @@ int nfs40_walk_client_list(struct nfs_client *new,
>> if (pos->rpc_ops != new->rpc_ops)
>> continue;
>>
>> - if (pos->cl_proto != new->cl_proto)
>> - continue;
>> -
>> if (pos->cl_minorversion != new->cl_minorversion)
>> continue;
>>
>> @@ -675,9 +672,6 @@ int nfs41_walk_client_list(struct nfs_client *new,
>> if (pos->rpc_ops != new->rpc_ops)
>> continue;
>>
>> - if (pos->cl_proto != new->cl_proto)
>> - continue;
>> -
>> if (pos->cl_minorversion != new->cl_minorversion)
>> continue;
>>
>>
>
> Yep. Sorry, I only noticed this after I'd written my own version. I'll
> replace mine with this one.

Thanks, much appreciated!

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com