All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] nfs4lib.py: enhance open_file to work with courteous server
@ 2022-06-15 17:34 Dai Ngo
  2022-06-15 17:34 ` [PATCH 2/2] environment.py: enhance open_create_file " Dai Ngo
  2022-06-15 19:34 ` [PATCH 1/2] nfs4lib.py: enhance open_file " J. Bruce Fields
  0 siblings, 2 replies; 6+ messages in thread
From: Dai Ngo @ 2022-06-15 17:34 UTC (permalink / raw)
  To: bfields; +Cc: linux-nfs

Enhance open_file to handle NFS4ERR_DELAY returned by the server
in case of share/access/delegation conflict.

Signed-off-by: Dai Ngo <dai.ngo@oracle.com>
---
 nfs4.0/nfs4lib.py | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/nfs4.0/nfs4lib.py b/nfs4.0/nfs4lib.py
index 934def3b7333..e0299e8d6676 100644
--- a/nfs4.0/nfs4lib.py
+++ b/nfs4.0/nfs4lib.py
@@ -677,7 +677,12 @@ class NFS4Client(rpc.RPCClient):
                           claim_type=claim_type, deleg_type=deleg_type,
                           deleg_cur_info=deleg_cur_info)]
         ops += [op4.getfh()]
-        res = self.compound(ops)
+        while 1:
+            res = self.compound(ops)
+            if res.status == NFS4ERR_DELAY:
+                time.sleep(2)
+            else:
+                break
         self.advance_seqid(owner, res)
         if set_recall and (res.status != NFS4_OK or \
            res.resarray[-2].switch.switch.delegation == OPEN_DELEGATE_NONE):
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/2] environment.py: enhance open_create_file to work with courteous server
  2022-06-15 17:34 [PATCH 1/2] nfs4lib.py: enhance open_file to work with courteous server Dai Ngo
@ 2022-06-15 17:34 ` Dai Ngo
  2022-06-15 19:34 ` [PATCH 1/2] nfs4lib.py: enhance open_file " J. Bruce Fields
  1 sibling, 0 replies; 6+ messages in thread
From: Dai Ngo @ 2022-06-15 17:34 UTC (permalink / raw)
  To: bfields; +Cc: linux-nfs

Enhance open_create_file to handle NFS4ERR_DELAY returned by the server
in case of share/access/delegation conflict.

Signed-off-by: Dai Ngo <dai.ngo@oracle.com>
---
 nfs4.1/server41tests/environment.py | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/nfs4.1/server41tests/environment.py b/nfs4.1/server41tests/environment.py
index 0b7c976d8582..fb834b28841b 100644
--- a/nfs4.1/server41tests/environment.py
+++ b/nfs4.1/server41tests/environment.py
@@ -483,11 +483,16 @@ def open_create_file(sess, owner, path=None, attrs={FATTR4_MODE: 0o644},
                      deleg_type=None,
                      open_create=OPEN4_NOCREATE,
                      seqid=0, clientid=0):
-    open_op = open_create_file_op(sess, owner, path, attrs, access, deny, mode,
-                            verifier, claim_type, want_deleg, deleg_type,
-                            open_create, seqid, clientid)
-
-    return sess.compound(open_op)
+    while 1:
+        open_op = open_create_file_op(sess, owner, path, attrs, access, deny, mode,
+                       verifier, claim_type, want_deleg, deleg_type,
+                       open_create, seqid, clientid)
+        res = sess.compound(open_op)
+        if res.status == NFS4ERR_DELAY:
+            time.sleep(2)
+        else:
+            break
+    return res
 
 def open_create_file_op(sess, owner, path=None, attrs={FATTR4_MODE: 0o644},
                      access=OPEN4_SHARE_ACCESS_BOTH,
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] nfs4lib.py: enhance open_file to work with courteous server
  2022-06-15 17:34 [PATCH 1/2] nfs4lib.py: enhance open_file to work with courteous server Dai Ngo
  2022-06-15 17:34 ` [PATCH 2/2] environment.py: enhance open_create_file " Dai Ngo
@ 2022-06-15 19:34 ` J. Bruce Fields
  2022-06-15 19:48   ` dai.ngo
  1 sibling, 1 reply; 6+ messages in thread
From: J. Bruce Fields @ 2022-06-15 19:34 UTC (permalink / raw)
  To: Dai Ngo; +Cc: linux-nfs

THere are tests that want to explicitly test for DELAY returns.  (Grep
for ERR_DELAY.  Look at the delegation tests especially.)  Does this
work for them?  I assumed we'd want an optional parameter that allowed
to caller to circument the DELAY handling.

--b.

On Wed, Jun 15, 2022 at 10:34:54AM -0700, Dai Ngo wrote:
> Enhance open_file to handle NFS4ERR_DELAY returned by the server
> in case of share/access/delegation conflict.
> 
> Signed-off-by: Dai Ngo <dai.ngo@oracle.com>
> ---
>  nfs4.0/nfs4lib.py | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/nfs4.0/nfs4lib.py b/nfs4.0/nfs4lib.py
> index 934def3b7333..e0299e8d6676 100644
> --- a/nfs4.0/nfs4lib.py
> +++ b/nfs4.0/nfs4lib.py
> @@ -677,7 +677,12 @@ class NFS4Client(rpc.RPCClient):
>                            claim_type=claim_type, deleg_type=deleg_type,
>                            deleg_cur_info=deleg_cur_info)]
>          ops += [op4.getfh()]
> -        res = self.compound(ops)
> +        while 1:
> +            res = self.compound(ops)
> +            if res.status == NFS4ERR_DELAY:
> +                time.sleep(2)
> +            else:
> +                break
>          self.advance_seqid(owner, res)
>          if set_recall and (res.status != NFS4_OK or \
>             res.resarray[-2].switch.switch.delegation == OPEN_DELEGATE_NONE):
> -- 
> 2.27.0

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] nfs4lib.py: enhance open_file to work with courteous server
  2022-06-15 19:34 ` [PATCH 1/2] nfs4lib.py: enhance open_file " J. Bruce Fields
@ 2022-06-15 19:48   ` dai.ngo
  2022-07-11 18:05     ` J. Bruce Fields
  0 siblings, 1 reply; 6+ messages in thread
From: dai.ngo @ 2022-06-15 19:48 UTC (permalink / raw)
  To: J. Bruce Fields; +Cc: linux-nfs


On 6/15/22 12:34 PM, J. Bruce Fields wrote:
> THere are tests that want to explicitly test for DELAY returns.  (Grep
> for ERR_DELAY.  Look at the delegation tests especially.)  Does this
> work for them?

Those tests expect NFS4_OK but also handle NFS4ERR_DELAY themselves
if the OPEN causes recall. With this patch, the NFS4ERR_DELAY is handled
internally by open_file so the ERR_DELAY never get to those tests.
All tests passed with this patch.

-Dai

>   I assumed we'd want an optional parameter that allowed
> to caller to circument the DELAY handling.
>
> --b.
>
> On Wed, Jun 15, 2022 at 10:34:54AM -0700, Dai Ngo wrote:
>> Enhance open_file to handle NFS4ERR_DELAY returned by the server
>> in case of share/access/delegation conflict.
>>
>> Signed-off-by: Dai Ngo <dai.ngo@oracle.com>
>> ---
>>   nfs4.0/nfs4lib.py | 7 ++++++-
>>   1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/nfs4.0/nfs4lib.py b/nfs4.0/nfs4lib.py
>> index 934def3b7333..e0299e8d6676 100644
>> --- a/nfs4.0/nfs4lib.py
>> +++ b/nfs4.0/nfs4lib.py
>> @@ -677,7 +677,12 @@ class NFS4Client(rpc.RPCClient):
>>                             claim_type=claim_type, deleg_type=deleg_type,
>>                             deleg_cur_info=deleg_cur_info)]
>>           ops += [op4.getfh()]
>> -        res = self.compound(ops)
>> +        while 1:
>> +            res = self.compound(ops)
>> +            if res.status == NFS4ERR_DELAY:
>> +                time.sleep(2)
>> +            else:
>> +                break
>>           self.advance_seqid(owner, res)
>>           if set_recall and (res.status != NFS4_OK or \
>>              res.resarray[-2].switch.switch.delegation == OPEN_DELEGATE_NONE):
>> -- 
>> 2.27.0

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] nfs4lib.py: enhance open_file to work with courteous server
  2022-06-15 19:48   ` dai.ngo
@ 2022-07-11 18:05     ` J. Bruce Fields
  2022-07-11 18:16       ` dai.ngo
  0 siblings, 1 reply; 6+ messages in thread
From: J. Bruce Fields @ 2022-07-11 18:05 UTC (permalink / raw)
  To: dai.ngo; +Cc: linux-nfs

Applying, thanks, sorry for the delay.--b.

On Wed, Jun 15, 2022 at 12:48:17PM -0700, dai.ngo@oracle.com wrote:
> 
> On 6/15/22 12:34 PM, J. Bruce Fields wrote:
> >THere are tests that want to explicitly test for DELAY returns.  (Grep
> >for ERR_DELAY.  Look at the delegation tests especially.)  Does this
> >work for them?
> 
> Those tests expect NFS4_OK but also handle NFS4ERR_DELAY themselves
> if the OPEN causes recall. With this patch, the NFS4ERR_DELAY is handled
> internally by open_file so the ERR_DELAY never get to those tests.
> All tests passed with this patch.
> 
> -Dai
> 
> >  I assumed we'd want an optional parameter that allowed
> >to caller to circument the DELAY handling.
> >
> >--b.
> >
> >On Wed, Jun 15, 2022 at 10:34:54AM -0700, Dai Ngo wrote:
> >>Enhance open_file to handle NFS4ERR_DELAY returned by the server
> >>in case of share/access/delegation conflict.
> >>
> >>Signed-off-by: Dai Ngo <dai.ngo@oracle.com>
> >>---
> >>  nfs4.0/nfs4lib.py | 7 ++++++-
> >>  1 file changed, 6 insertions(+), 1 deletion(-)
> >>
> >>diff --git a/nfs4.0/nfs4lib.py b/nfs4.0/nfs4lib.py
> >>index 934def3b7333..e0299e8d6676 100644
> >>--- a/nfs4.0/nfs4lib.py
> >>+++ b/nfs4.0/nfs4lib.py
> >>@@ -677,7 +677,12 @@ class NFS4Client(rpc.RPCClient):
> >>                            claim_type=claim_type, deleg_type=deleg_type,
> >>                            deleg_cur_info=deleg_cur_info)]
> >>          ops += [op4.getfh()]
> >>-        res = self.compound(ops)
> >>+        while 1:
> >>+            res = self.compound(ops)
> >>+            if res.status == NFS4ERR_DELAY:
> >>+                time.sleep(2)
> >>+            else:
> >>+                break
> >>          self.advance_seqid(owner, res)
> >>          if set_recall and (res.status != NFS4_OK or \
> >>             res.resarray[-2].switch.switch.delegation == OPEN_DELEGATE_NONE):
> >>-- 
> >>2.27.0

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] nfs4lib.py: enhance open_file to work with courteous server
  2022-07-11 18:05     ` J. Bruce Fields
@ 2022-07-11 18:16       ` dai.ngo
  0 siblings, 0 replies; 6+ messages in thread
From: dai.ngo @ 2022-07-11 18:16 UTC (permalink / raw)
  To: J. Bruce Fields; +Cc: linux-nfs


On 7/11/22 11:05 AM, J. Bruce Fields wrote:
> Applying, thanks, sorry for the delay.--b.

thank you Bruce!

-Dai

>
> On Wed, Jun 15, 2022 at 12:48:17PM -0700, dai.ngo@oracle.com wrote:
>> On 6/15/22 12:34 PM, J. Bruce Fields wrote:
>>> THere are tests that want to explicitly test for DELAY returns.  (Grep
>>> for ERR_DELAY.  Look at the delegation tests especially.)  Does this
>>> work for them?
>> Those tests expect NFS4_OK but also handle NFS4ERR_DELAY themselves
>> if the OPEN causes recall. With this patch, the NFS4ERR_DELAY is handled
>> internally by open_file so the ERR_DELAY never get to those tests.
>> All tests passed with this patch.
>>
>> -Dai
>>
>>>   I assumed we'd want an optional parameter that allowed
>>> to caller to circument the DELAY handling.
>>>
>>> --b.
>>>
>>> On Wed, Jun 15, 2022 at 10:34:54AM -0700, Dai Ngo wrote:
>>>> Enhance open_file to handle NFS4ERR_DELAY returned by the server
>>>> in case of share/access/delegation conflict.
>>>>
>>>> Signed-off-by: Dai Ngo <dai.ngo@oracle.com>
>>>> ---
>>>>   nfs4.0/nfs4lib.py | 7 ++++++-
>>>>   1 file changed, 6 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/nfs4.0/nfs4lib.py b/nfs4.0/nfs4lib.py
>>>> index 934def3b7333..e0299e8d6676 100644
>>>> --- a/nfs4.0/nfs4lib.py
>>>> +++ b/nfs4.0/nfs4lib.py
>>>> @@ -677,7 +677,12 @@ class NFS4Client(rpc.RPCClient):
>>>>                             claim_type=claim_type, deleg_type=deleg_type,
>>>>                             deleg_cur_info=deleg_cur_info)]
>>>>           ops += [op4.getfh()]
>>>> -        res = self.compound(ops)
>>>> +        while 1:
>>>> +            res = self.compound(ops)
>>>> +            if res.status == NFS4ERR_DELAY:
>>>> +                time.sleep(2)
>>>> +            else:
>>>> +                break
>>>>           self.advance_seqid(owner, res)
>>>>           if set_recall and (res.status != NFS4_OK or \
>>>>              res.resarray[-2].switch.switch.delegation == OPEN_DELEGATE_NONE):
>>>> -- 
>>>> 2.27.0

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-07-11 18:16 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-15 17:34 [PATCH 1/2] nfs4lib.py: enhance open_file to work with courteous server Dai Ngo
2022-06-15 17:34 ` [PATCH 2/2] environment.py: enhance open_create_file " Dai Ngo
2022-06-15 19:34 ` [PATCH 1/2] nfs4lib.py: enhance open_file " J. Bruce Fields
2022-06-15 19:48   ` dai.ngo
2022-07-11 18:05     ` J. Bruce Fields
2022-07-11 18:16       ` dai.ngo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.