Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Dec 2016 23:06:42 +0000
From:      Colin Percival <cperciva@tarsnap.com>
To:        "freebsd-fs@freebsd.org" <freebsd-fs@freebsd.org>
Subject:   ESTALE after cwd deleted by same NFS client
Message-ID:  <01000158f023675b-41b35a73-4428-4937-853b-62db4fb9b984-000000@email.amazonses.com>

next in thread | raw e-mail | index | archive | help
Hi filesystem gurus,

If I run the following with /nfs/ being an NFS mount:
# mkdir /nfs/foo
# touch /nfs/foo/bar
# cd /nfs/foo
# rm -r /nfs/foo
# rm bar

Then the final 'rm bar' fails with 'Stale NFS file handle'.  This results
in 'make buildworld' with an NFS-backed /usr/obj failing during cleandir
(which, for some reason, seems to delete the same directories multiple
times.)

I'm not sure if this is an NFS issue or a VFS issue, nor whether this is
intended (but IMHO astonishing) behaviour or a bug.

I realize that if the 'rm -r' was performed by a different NFS client, this
is the behaviour which would be expected; but it seems to me that when the
commands are executed by the same NFS client, it should be possible for the
cached file handle for /nfs/foo to be invalidated when /nfs/foo is deleted,
in order to return ENOENT instead of ESTALE here.

-- 
Colin Percival
Security Officer Emeritus, FreeBSD | The power to serve
Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?01000158f023675b-41b35a73-4428-4937-853b-62db4fb9b984-000000>