RHEL6.2+ or RHEL5.8+: -ESTALE returned from read of an NFS file

Solution Verified - Updated -

Issue

  • A file on NFS client does not survive repeated removal attempts even if the file is held open by another process.
  • The "silly-rename" of NFS files only works to preserve the file on the first removal attempt. The second attempt will remove the file, even if the file is held open by another process. Any subsequent attempts to read from the removed file will fail with ESTALE.
  • When we start our application, we see an error similar to the following in application log, a file cannot be read, but fails with errno 116 (ESTALE).
  • The following testcase demonstrates the problem:
  tail -f /nfsmnt/dir/file &
  rm -rf /nfsmnt/dir
  rm -rf /nfsmnt/dir
  # second removal does not fail, 'tail' process receives ESTALE

Environment

  • Red Hat Enterprise Linux 6.2 - 6.4 (NFS client)
    • RHEL6.2: all kernels (2.6.32-220*.el6)
    • RHEL6.3: kernels before 2.6.32-279.25.1.el6
    • RHEL6.4: kernels before 2.6.32-358.6.1.el6
  • Red Hat Enterprise Linux 5.8 - 5.9
    • kernels between 2.6.18-308*.el5 and 2.6.18-348*.el5
  • NFS (v3 or v4) client
  • Application in which one process holds a NFS file open, and another process tries to remove the file multiple times.
  • NFS Server: Any (RHEL, NetApp, Aix)
  • This problem is not seen in the following environments as NFS client
    • Aix, Solaris 10, SuSE SLES11.2 (3.0.34-0.7-default)

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In