Re: [PATCH] nfsd: don't call trace_nfsd_deleg_none() if read delegation is given

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 2020/8/27 22:43, Chuck Lever wrote:
> Hello!
> 
>> On Aug 27, 2020, at 3:02 AM, Hou Tao <houtao1@xxxxxxxxxx> wrote:
>>
>> Don't call trace_nfsd_deleg_none() if read delegation is given,
>> else two exclusive traces will be printed:
>>
>>    nfsd_deleg_open: client 5f45b854:e6058001 stateid 00000030:00000001
>>    nfsd_deleg_none: client 5f45b854:e6058001 stateid 0000002f:00000001
> 
> These are reporting two different state IDs: the first is a delegation
> state ID, and the second is an open state ID.
> 
> So in the "no delegation" case, we want to see just the open state ID.
> In the "delegation" case, we do want to see both.
> 
Thanks for your explanation.

> You could argue (successfully) that the names of the tracepoints are
> pretty lousy. Maybe better to rename:
> 
>   nfsd_deleg_open -> nfsd_deleg_read
>   nfsd_deleg_none -> nfsd_open
> 
> What do you think?
> 
After the renaming, the trace looks clearer. I will do it in v2.

Thanks

>> Fix it by calling trace_nfsd_deleg_none() directly in appropriate
>> places instead of calling it by checking the value of op_delegate_type.
>>
>> Also remove the unnecessary assignment "status = nfs_ok", because
>> we can ensure status will be nfs_ok after the call of
>> nfs4_inc_and_copy_stateid().
>>
>> Signed-off-by: Hou Tao <houtao1@xxxxxxxxxx>
>> ---
>> fs/nfsd/nfs4state.c | 8 ++++----
>> 1 file changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
>> index c09a2a4281ec9..2e6376af701ff 100644
>> --- a/fs/nfsd/nfs4state.c
>> +++ b/fs/nfsd/nfs4state.c
>> @@ -5131,6 +5131,8 @@ nfs4_open_delegation(struct svc_fh *fh, struct nfsd4_open *open,
>> 	nfs4_put_stid(&dp->dl_stid);
>> 	return;
>> out_no_deleg:
>> +	trace_nfsd_deleg_none(&stp->st_stid.sc_stateid);
>> +
>> 	open->op_delegate_type = NFS4_OPEN_DELEGATE_NONE;
>> 	if (open->op_claim_type == NFS4_OPEN_CLAIM_PREVIOUS &&
>> 	    open->op_delegate_type != NFS4_OPEN_DELEGATE_NONE) {
>> @@ -5232,7 +5234,8 @@ nfsd4_process_open2(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nf
>> 		if (open->op_deleg_want & NFS4_SHARE_WANT_NO_DELEG) {
>> 			open->op_delegate_type = NFS4_OPEN_DELEGATE_NONE_EXT;
>> 			open->op_why_no_deleg = WND4_NOT_WANTED;
>> -			goto nodeleg;
>> +			trace_nfsd_deleg_none(&stp->st_stid.sc_stateid);
>> +			goto out;
>> 		}
>> 	}
>>
>> @@ -5241,9 +5244,6 @@ nfsd4_process_open2(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nf
>> 	* OPEN succeeds even if we fail.
>> 	*/
>> 	nfs4_open_delegation(current_fh, open, stp);
>> -nodeleg:
>> -	status = nfs_ok;
>> -	trace_nfsd_deleg_none(&stp->st_stid.sc_stateid);
>> out:
>> 	/* 4.1 client trying to upgrade/downgrade delegation? */
>> 	if (open->op_delegate_type == NFS4_OPEN_DELEGATE_NONE && dp &&
>> -- 
>> 2.25.0.4.g0ad7144999
>>
> 
> --
> Chuck Lever
> 
> 
> 
> .
> 



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux