@@ -723,8 +723,17 @@ class NFS4Client(rpc.RPCClient):
def open_confirm(self, owner, path=None,
access=OPEN4_SHARE_ACCESS_READ,
deny=OPEN4_SHARE_DENY_WRITE):
- res = self.open_file(owner, path, access, deny)
- check_result(res, "Opening file %s" % _getname(owner, path))
+ while 1:
+ res = self.open_file(owner, path, access, deny)
+ cnt = 0
+ try:
+ check_result(res, "Opening file %s" % _getname(owner, path))
+ break
+ except BadCompoundRes:
+ if res.status != NFS4ERR_DELAY: raise
+ cnt += 1
+ if cnt < 5:
+ time.sleep(2)
return self.confirm(owner, res)
## def xxxopen_claim_prev(self, owner, fh, seqid=None,
Linux NFSv4 courteous server resolves share reservation conflicts with courtesy clients asynchronously and returning NFS4ERR_DELAY to the client. Signed-off-by: Dai Ngo <dai.ngo@oracle.com> --- nfs4.0/nfs4lib.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-)