Message ID | 20250415114814.285400-1-tigran.mkrtchyan@desy.de (mailing list archive) |
---|---|
State | Handled Elsewhere |
Headers | show |
Series | deleg: break infinite loop in DELEG8 test | expand |
On Tue, 2025-04-15 at 13:48 +0200, Tigran Mkrtchyan wrote: > The test assumes that the server can return either OK or DELAY, > however, the 'break' condition checks only for OK. > > Signed-off-by: Tigran Mkrtchyan <tigran.mkrtchyan@desy.de> > --- > nfs4.1/server41tests/st_delegation.py | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/nfs4.1/server41tests/st_delegation.py b/nfs4.1/server41tests/st_delegation.py > index ea4c073..60b0de6 100644 > --- a/nfs4.1/server41tests/st_delegation.py > +++ b/nfs4.1/server41tests/st_delegation.py > @@ -181,8 +181,8 @@ def testDelegRevocation(t, env): > owner, how, claim) > while 1: > res = sess2.compound(env.home + [open_op]) > - if res.status == NFS4_OK: > - break; > + if res.status == NFS4_OK or res.status == NFS4ERR_DELAY: > + break > check(res, [NFS4_OK, NFS4ERR_DELAY]) > # just to keep sess1 renewed. This is a bit fragile, as we > # depend on the above compound waiting no longer than the Don't you want to loop on NFS4ERR_DELAY? It looks like this is supposed to loop (with no DELEGRETURN) until the open returns NFS4_OK. Presumably at that point the delegation will be revoked and you'll get the expected errors.
In general, I want, but it's already happens on handling compound call: ``` for item in range(max_retries): res = self.c.compound([seq_op] + ops, **kwargs) res = self.update_seq_state(res, slot) if res.status != NFS4ERR_DELAY or not handle_state_errors: break if res.resarray[0].sr_status != NFS4ERR_DELAY: # As per errata ID 2006 for RFC 5661 section 15.1.1.3 # don't update the slot and sequence ID if the sequence # operation itself receives NFS4ERR_DELAY slot, seq_op = self._prepare_compound(saved_kwargs) time.sleep(delay_time) ``` Tigran. ----- Original Message ----- > From: "Jeff Layton" <jlayton@kernel.org> > To: "Tigran Mkrtchyan" <tigran.mkrtchyan@desy.de>, "Calum Mackay" <calum.mackay@oracle.com> > Cc: "linux-nfs" <linux-nfs@vger.kernel.org> > Sent: Tuesday, 15 April, 2025 16:10:11 > Subject: Re: [PATCH] deleg: break infinite loop in DELEG8 test > On Tue, 2025-04-15 at 13:48 +0200, Tigran Mkrtchyan wrote: >> The test assumes that the server can return either OK or DELAY, >> however, the 'break' condition checks only for OK. >> >> Signed-off-by: Tigran Mkrtchyan <tigran.mkrtchyan@desy.de> >> --- >> nfs4.1/server41tests/st_delegation.py | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/nfs4.1/server41tests/st_delegation.py >> b/nfs4.1/server41tests/st_delegation.py >> index ea4c073..60b0de6 100644 >> --- a/nfs4.1/server41tests/st_delegation.py >> +++ b/nfs4.1/server41tests/st_delegation.py >> @@ -181,8 +181,8 @@ def testDelegRevocation(t, env): >> owner, how, claim) >> while 1: >> res = sess2.compound(env.home + [open_op]) >> - if res.status == NFS4_OK: >> - break; >> + if res.status == NFS4_OK or res.status == NFS4ERR_DELAY: >> + break >> check(res, [NFS4_OK, NFS4ERR_DELAY]) >> # just to keep sess1 renewed. This is a bit fragile, as we >> # depend on the above compound waiting no longer than the > > Don't you want to loop on NFS4ERR_DELAY? > > It looks like this is supposed to loop (with no DELEGRETURN) until the > open returns NFS4_OK. Presumably at that point the delegation will be > revoked and you'll get the expected errors. > -- > Jeff Layton <jlayton@kernel.org>
diff --git a/nfs4.1/server41tests/st_delegation.py b/nfs4.1/server41tests/st_delegation.py index ea4c073..60b0de6 100644 --- a/nfs4.1/server41tests/st_delegation.py +++ b/nfs4.1/server41tests/st_delegation.py @@ -181,8 +181,8 @@ def testDelegRevocation(t, env): owner, how, claim) while 1: res = sess2.compound(env.home + [open_op]) - if res.status == NFS4_OK: - break; + if res.status == NFS4_OK or res.status == NFS4ERR_DELAY: + break check(res, [NFS4_OK, NFS4ERR_DELAY]) # just to keep sess1 renewed. This is a bit fragile, as we # depend on the above compound waiting no longer than the
The test assumes that the server can return either OK or DELAY, however, the 'break' condition checks only for OK. Signed-off-by: Tigran Mkrtchyan <tigran.mkrtchyan@desy.de> --- nfs4.1/server41tests/st_delegation.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)