回复: [PATCH] pynfs: Fix RuntimeError by increasing default ca_maxrequests from 8 to 16

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

 




> -----邮件原件-----
> 发件人: Mkrtchyan, Tigran <tigran.mkrtchyan@xxxxxxx>
> 发送时间: 2025年6月26日 2:27
> 收件人: Jeff Layton <jlayton@xxxxxxxxxx>
> 抄送: Chen, Hanxiao <chenhx.fnst@xxxxxxxxxxx>; Calum Mackay
> <calum.mackay@xxxxxxxxxx>; linux-nfs <linux-nfs@xxxxxxxxxxxxxxx>
> 主题: Re: [PATCH] pynfs: Fix RuntimeError by increasing default ca_maxrequests
> from 8 to 16
> 
> 
> I guess this is the same issue that I tried to address with
> 
> https://lore.kernel.org/all/20250415114814.285400-1-tigran.mkrtchyan@desy.
> de/
> 

This one fixes " Out of slots" issue, but DELEG8 failed on CentOS 9 with a 6.15 kernel :

**************************************************
DELEG8   st_delegation.testDelegRevocation                        : FAILURE
           Read with a revoked delegation should return
           NFS4ERR_DELEG_REVOKED, instead got NFS4_OK
**************************************************
Command line asked for 1 of 264 tests
Of those: 0 Skipped, 1 Failed, 0 Warned, 0 Passed

> DELEG 8 goes into a retry loop if the server responds NFS4ERR_DELAY when the
> server tries to recall the delegation and responds with NFS4ERR_DELAY to the
> client. The handling of a compound call will retry and re-use the slot.
> The handling of DELEG8 will retry, too, but use a new slot. AFAIKS, slots are
> never freed:
> 
...
> It looks like all the tests up to now have issued less than ca_maxrequests:)
> 
> The proper fix probably should be someting like:
> 
> diff --git a/nfs4.1/nfs4client.py b/nfs4.1/nfs4client.py
> index f4fabcc..fe404cd 100644
> --- a/nfs4.1/nfs4client.py
> +++ b/nfs4.1/nfs4client.py
> @@ -551,6 +551,7 @@ class SessionRecord(object):
>                  # operation itself receives NFS4ERR_DELAY
>                  slot, seq_op = self._prepare_compound(saved_kwargs)
>              time.sleep(delay_time)
> +        slot.inuse = False
>          res = self.remove_seq_op(res)
>          return res
> 
> 
> 

This one is great for me:
**************************************************
DELEG8   st_delegation.testDelegRevocation                        : PASS
**************************************************
Command line asked for 1 of 264 tests
Of those: 0 Skipped, 0 Failed, 0 Warned, 1 Passed

Tested-by: Chen Hanxiao <chenhx.fnst@xxxxxxxxxxx>

Regards,
- Chen 




[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