NFSv4: Fix a cache validation bug which causes getcwd() to return ENOENT
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 11 Nov 2009 07:15:42 +0000 (16:15 +0900)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 8 Dec 2009 18:21:36 +0000 (10:21 -0800)
commitaa7c7f8c1b47d415f3cca42f0a2aa22d8539860e
treec392076dc8bf99bed72825ce135bc1643e2d652e
parent8bc4be6e44a5b9931b9bf0b9b267e2264f71075d
NFSv4: Fix a cache validation bug which causes getcwd() to return ENOENT

commit 96d25e532234bec1a1989e6e1baf702d43a78b0d upstream.

Changeset a65318bf3afc93ce49227e849d213799b072c5fd (NFSv4: Simplify some
cache consistency post-op GETATTRs) incorrectly changed the getattr
bitmap for readdir().
This causes the readdir() function to fail to return a
fileid/inode number, which again exposed a bug in the NFS readdir code that
causes spurious ENOENT errors to appear in applications (see
http://bugzilla.kernel.org/show_bug.cgi?id=14541).

The immediate band aid is to revert the incorrect bitmap change, but more
long term, we should change the NFS readdir code to cope with the
fact that NFSv4 servers are not required to support fileids/inode numbers.

Reported-by: Daniel J Blueman <daniel.blueman@gmail.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
fs/nfs/nfs4proc.c