ESTALE after cwd deleted by same NFS client

Colin Percival cperciva at tarsnap.com
Wed Dec 14 07:35:36 UTC 2016


On 12/13/16 05:04, Rick Macklem wrote:
>>>> On Sun, Dec 11, 2016 at 11:06:42PM +0000, Colin Percival wrote:
>>>>> 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
> If this is happening on a single client

Yes.  At the time I ran this, there was only one client.

> something is broken.
> - For this step, the name cache should have a miss and the Lookup should fail with
>   ENOENT. I think the most likely failures are...
>   --> Either the name cache in the client is broken and has a hit
>   OR
>   --> The server replies NFS_OK for the lookup, even though it should have been removed.

The server replied ESTALE for the 'rm bar'.  Is that the lookup you mean?  I
don't think a lookup happened for /nfs/foo after the 'rm -r' completed, since
it was already the current directory (despite no longer existing).

> Did you try:
> sysctl debug.disable_vnfullpath=1 (or something close to disable_vnfullpath)
> to see if it helped?

If you mean debug.disablefullpath=1, yes, I tried that.  I also tried setting
vfs.lookup_shared=0; also no change.

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


More information about the freebsd-fs mailing list