2020-03-19 14:19:35

by J. Bruce Fields

[permalink] [raw]
Subject: [PATCH] nfsd4: kill warnings on testing stateids with mismatched clientids

From: "J. Bruce Fields" <[email protected]>

It's normal for a client to test a stateid from a previous instance,
e.g. after a network partition.

Signed-off-by: J. Bruce Fields <[email protected]>
---
fs/nfsd/nfs4state.c | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)

I'm not a fan of printk's even on buggy client behavior. I guess it
could be a dprintk. I'm not sure it adds much over information you
could get at some other layer, e.g. from a network trace.

diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index c1f347bbf8f4..927cfb9d2204 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -5522,15 +5522,8 @@ static __be32 nfsd4_validate_stateid(struct nfs4_client *cl, stateid_t *stateid)
if (ZERO_STATEID(stateid) || ONE_STATEID(stateid) ||
CLOSE_STATEID(stateid))
return status;
- /* Client debugging aid. */
- if (!same_clid(&stateid->si_opaque.so_clid, &cl->cl_clientid)) {
- char addr_str[INET6_ADDRSTRLEN];
- rpc_ntop((struct sockaddr *)&cl->cl_addr, addr_str,
- sizeof(addr_str));
- pr_warn_ratelimited("NFSD: client %s testing state ID "
- "with incorrect client ID\n", addr_str);
+ if (!same_clid(&stateid->si_opaque.so_clid, &cl->cl_clientid))
return status;
- }
spin_lock(&cl->cl_lock);
s = find_stateid_locked(cl, stateid);
if (!s)
--
2.25.1


2020-03-19 14:31:23

by Benjamin Coddington

[permalink] [raw]
Subject: Re: [PATCH] nfsd4: kill warnings on testing stateids with mismatched clientids

On 19 Mar 2020, at 10:18, J. Bruce Fields wrote:

> From: "J. Bruce Fields" <[email protected]>
>
> It's normal for a client to test a stateid from a previous instance,
> e.g. after a network partition.
>
> Signed-off-by: J. Bruce Fields <[email protected]>

Thanks!

Reviewed-by: Benjamin Coddington <[email protected]>

Ben

> ---
> fs/nfsd/nfs4state.c | 9 +--------
> 1 file changed, 1 insertion(+), 8 deletions(-)
>
> I'm not a fan of printk's even on buggy client behavior. I guess it
> could be a dprintk. I'm not sure it adds much over information you
> could get at some other layer, e.g. from a network trace.
>
> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
> index c1f347bbf8f4..927cfb9d2204 100644
> --- a/fs/nfsd/nfs4state.c
> +++ b/fs/nfsd/nfs4state.c
> @@ -5522,15 +5522,8 @@ static __be32 nfsd4_validate_stateid(struct
> nfs4_client *cl, stateid_t *stateid)
> if (ZERO_STATEID(stateid) || ONE_STATEID(stateid) ||
> CLOSE_STATEID(stateid))
> return status;
> - /* Client debugging aid. */
> - if (!same_clid(&stateid->si_opaque.so_clid, &cl->cl_clientid)) {
> - char addr_str[INET6_ADDRSTRLEN];
> - rpc_ntop((struct sockaddr *)&cl->cl_addr, addr_str,
> - sizeof(addr_str));
> - pr_warn_ratelimited("NFSD: client %s testing state ID "
> - "with incorrect client ID\n", addr_str);
> + if (!same_clid(&stateid->si_opaque.so_clid, &cl->cl_clientid))
> return status;
> - }
> spin_lock(&cl->cl_lock);
> s = find_stateid_locked(cl, stateid);
> if (!s)
> --
> 2.25.1

2020-03-19 15:00:42

by Chuck Lever

[permalink] [raw]
Subject: Re: [PATCH] nfsd4: kill warnings on testing stateids with mismatched clientids



> On Mar 19, 2020, at 10:30 AM, Benjamin Coddington <[email protected]> wrote:
>
> On 19 Mar 2020, at 10:18, J. Bruce Fields wrote:
>
>> From: "J. Bruce Fields" <[email protected]>
>>
>> It's normal for a client to test a stateid from a previous instance,
>> e.g. after a network partition.
>>
>> Signed-off-by: J. Bruce Fields <[email protected]>
>
> Thanks!
>
> Reviewed-by: Benjamin Coddington <[email protected]>

Applied to nfsd-5.7, thanks all!


> Ben
>
>> ---
>> fs/nfsd/nfs4state.c | 9 +--------
>> 1 file changed, 1 insertion(+), 8 deletions(-)
>>
>> I'm not a fan of printk's even on buggy client behavior. I guess it
>> could be a dprintk. I'm not sure it adds much over information you
>> could get at some other layer, e.g. from a network trace.
>>
>> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
>> index c1f347bbf8f4..927cfb9d2204 100644
>> --- a/fs/nfsd/nfs4state.c
>> +++ b/fs/nfsd/nfs4state.c
>> @@ -5522,15 +5522,8 @@ static __be32 nfsd4_validate_stateid(struct nfs4_client *cl, stateid_t *stateid)
>> if (ZERO_STATEID(stateid) || ONE_STATEID(stateid) ||
>> CLOSE_STATEID(stateid))
>> return status;
>> - /* Client debugging aid. */
>> - if (!same_clid(&stateid->si_opaque.so_clid, &cl->cl_clientid)) {
>> - char addr_str[INET6_ADDRSTRLEN];
>> - rpc_ntop((struct sockaddr *)&cl->cl_addr, addr_str,
>> - sizeof(addr_str));
>> - pr_warn_ratelimited("NFSD: client %s testing state ID "
>> - "with incorrect client ID\n", addr_str);
>> + if (!same_clid(&stateid->si_opaque.so_clid, &cl->cl_clientid))
>> return status;
>> - }
>> spin_lock(&cl->cl_lock);
>> s = find_stateid_locked(cl, stateid);
>> if (!s)
>> --
>> 2.25.1
>

--
Chuck Lever