Red Hat Bugzilla – Bug 175028
Provide method to flush NFS/RPC request queue
Last modified: 2012-06-20 09:25:05 EDT
Description of problem:
On RHEL3, we had some extra syscalls which we used to flush pending requests.
There were two methods: (a) by device and (b) by IP address.
Only one of these is actually necessary.
Basically, we had:
(a) Start dropping requests for the export related to device X
(b) Start dropping requests for the export related to IP address Y
(c) Stop dropping requests for the export related to device X
(d) Stop dropping requests for the export related to IP address Y
This allowed us to clean up the mount point and cleanly unmount while not
processing requests for a given device/IP.
This, in turn, prevented clients from getting EPERM / ESTALE during shutdown.
The current horrible workaround is "sleep 10".
In looking at the way nfsd works, it looks like everything is queued up at the
RPC level. NFSd pulls requests out of the RPC subsystem rather than having a
queue of its own; this could complicate the solution a little.
The problem here is that we can tear down an IP, and the requests which are
already in the RPC subsystem will get processed and responded to - after we tear
down the IP and unexport the FS
This causes EPERM on the clients.
Thank you for submitting this issue for consideration in Red Hat Enterprise Linux. The release for which you requested us to review is now End of Life.
Please See https://access.redhat.com/support/policy/updates/errata/
If you would like Red Hat to re-consider your feature request for an active release, please re-open the request via appropriate support channels and provide additional supporting details about the importance of this issue.