> On Aug 4, 2022, at 11:38 AM, J. Bruce Fields <bfields@xxxxxxxxxxxx> wrote: > > On Thu, Aug 04, 2022 at 03:23:44PM +0000, Chuck Lever III wrote: >> Hi Bruce- >> >> I'm running DELEG21 to unit-test delegations, and this message comes >> out at the end: >> >> Making sure b'DELEG21-1' is writable: operation OP_SETATTR should return NFS4_OK, instead got NFS4ERR_DELAY >> >> I guess there's no callback service running during the test's clean-up phase. >> >> Then if I run the test again immediately: >> >> [cel@morisot pynfs]$ sudo nfs4.0/testserver.py manet:/export/tmp --maketree --rundeps -v cel >> Initialization failed, no tests run. >> Perhaps you need to use the --secure option or configure server to allow connections from high ports >> Traceback (most recent call last): >> File "/home/cel/src/pynfs/nfs4.0/testserver.py", line 394, in <module> >> main() >> File "/home/cel/src/pynfs/nfs4.0/testserver.py", line 346, in main >> env.init() >> File "/home/cel/src/pynfs/nfs4.0/servertests/environment.py", line 150, in init >> c.clean_dir(self.opts.path) >> File "/home/cel/src/pynfs/nfs4.0/nfs4lib.py", line 579, in clean_dir >> check_result(res, "Making sure %s is writable" % repr(e.name)) >> File "/home/cel/src/pynfs/nfs4.0/nfs4lib.py", line 906, in check_result >> raise BadCompoundRes(resop, res.status, msg) >> nfs4lib.BadCompoundRes: Making sure b'DELEG21-1' is writable: operation OP_SETATTR should return NFS4_OK, instead got NFS4ERR_DELAY >> >> And I think this condition persists until the old lease expires and >> the server permits the client to delete that file. > > DELEG21 should pass on any recent kernel. It passes, but leaves the test file so that clean_dir does not work again until the old lease expires. > But possibly cleanup should also be better. This bug might prevent running these tests in an automation harness. I'd say cleanup does need to be better about this. > I'm not sure what the right fix is. Brute force: keep trying to delete that file if clean_dir receives NFS4ERR_DELAY? init_connection somewhere needs to set up a callback service and leave it running. -- Chuck Lever