Re: [PATCH v2 1/1] NFS: remove revoked delegation from server's delegation list

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

 



On Tue, 2024-10-08 at 15:58 -0700, Dai Ngo wrote:
> After the delegation is returned to the NFS server remove it
> from the server's delegations list to reduce the time it takes
> to scan this list.
> 
> Network trace captured while running the below script shows the
> time taken to service the CB_RECALL increases gradually due to
> the overhead of traversing the delegation list in
> nfs_delegation_find_inode_server.
> 
> The NFS server in this test is a Solaris server which issues
> CB_RECALL when receiving the all-zero stateid in the SETATTR.
> 
> mount=/mnt/data
> for i in $(seq 1 20)
> do
>    echo $i
>    mkdir $mount/testtarfile$i
>    time  tar -C $mount/testtarfile$i -xf 5000_files.tar
> done
> 
> Signed-off-by: Dai Ngo <dai.ngo@xxxxxxxxxx>
> ---
>  fs/nfs/delegation.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c
> index 20cb2008f9e4..035ba52742a5 100644
> --- a/fs/nfs/delegation.c
> +++ b/fs/nfs/delegation.c
> @@ -1001,6 +1001,11 @@ void nfs_delegation_mark_returned(struct inode
> *inode,
>  	}
>  
>  	nfs_mark_delegation_revoked(delegation);
> +	clear_bit(NFS_DELEGATION_RETURNING, &delegation->flags);
> +	spin_unlock(&delegation->lock);
> +	if (nfs_detach_delegation(NFS_I(inode), delegation,
> NFS_SERVER(inode)))
> +		nfs_put_delegation(delegation);
> +	goto out_rcu_unlock;
>  
>  out_clear_returning:
>  	clear_bit(NFS_DELEGATION_RETURNING, &delegation->flags);

OK, I can fix up nfs_revoke_delegation() later. Thanks!

Reviewed-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx>

-- 
Trond Myklebust
Linux NFS client maintainer, Hammerspace
trond.myklebust@xxxxxxxxxxxxxxx






[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