RHEL6.8: NFS4.1 client connected to NetApp with write delegations enabled enters loop of WRITE / NFS4ERR_BAD_STATEID or SETATTR / NFS4ERR_ADMIN_REVOKED when the same file is written from a 4.0 client
Issue
I made a very simple testcase that can be run on two nodes where each node repeatedly writes the nodename and date to a given file without any locking.
# for i in $(seq 1 1000); do echo "$(hostname) $(date)" >> /mnt/nfs4/file; done
Since NFS4 delegations are enabled, this test will cause one client to obtain a delegation, write to the file for a while, then the delegation will be called back by the NFS server as a result of the second client's conflicting open.
I've found if I run this with on one NFS 4.0 client (for example, RHEL6.7) and then on a second client using NFS 4.1 either:
- run the same loop to the same file
- try to truncate the file
I can get the second 4.1 into an infinite loop of either WRITE / BAD_STATEID or SETATTR / ADMIN_REVOKED. I have to reboot the client to recover.
Environment
- Red Hat Enterprise Linux 6.8 (NFS client)
- seen on 2.6.32-642..el6
- NetApp cDOT 8.3.2 (NFS server)
- NFS4.1
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.