Jeff Layton
ecf3d1f1aa
vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op
...
The following set of operations on a NFS client and server will cause
server# mkdir a
client# cd a
server# mv a a.bak
client# sleep 30 # (or whatever the dir attrcache timeout is)
client# stat .
stat: cannot stat `.': Stale NFS file handle
Obviously, we should not be getting an ESTALE error back there since the
inode still exists on the server. The problem is that the lookup code
will call d_revalidate on the dentry that "." refers to, because NFS has
FS_REVAL_DOT set.
nfs_lookup_revalidate will see that the parent directory has changed and
will try to reverify the dentry by redoing a LOOKUP. That of course
fails, so the lookup code returns ESTALE.
The problem here is that d_revalidate is really a bad fit for this case.
What we really want to know at this point is whether the inode is still
good or not, but we don't really care what name it goes by or whether
the dcache is still valid.
Add a new d_op->d_weak_revalidate operation and have complete_walk call
that instead of d_revalidate. The intent there is to allow for a
"weaker" d_revalidate that just checks to see whether the inode is still
good. This is also gives us an opportunity to kill off the FS_REVAL_DOT
special casing.
[AV: changed method name, added note in porting, fixed confusion re
having it possibly called from RCU mode (it won't be)]
Cc: NeilBrown <neilb@suse.de>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2013-02-26 02:46:09 -05:00
..
caching
FS-Cache: Provide proper invalidation
2012-12-20 22:04:07 +00:00
configfs
configfs: convert to umode_t
2012-01-03 22:54:57 -05:00
nfs
nfsd4: delay filling in write iovec array till after xdr decoding
2012-11-26 09:08:15 -05:00
pohmelfs
Documentation: Fix multiple typo in Documentation
2012-03-07 16:08:24 +01:00
00-INDEX
Introduce a new file system, Flash-Friendly File System (F2FS), to Linux 3.8.
2012-12-20 13:54:52 -08:00
9p.txt
9p: fix 9p.txt to advertise msize instead of maxdata
2011-10-24 11:13:12 -05:00
adfs.txt
adfs: add hexadecimal filetype suffix option
2011-03-22 17:44:17 -07:00
affs.txt
Documentation: update broken web addresses.
2010-08-04 15:21:40 +02:00
afs.txt
AFS: Documentation updates
2009-08-19 10:40:13 -07:00
autofs4-mount-control.txt
Fix common misspellings
2011-03-31 11:26:23 -03:00
automount-support.txt
befs.txt
Documentation: befs.txt: no maintainer, orphaned
2011-08-13 18:34:03 -07:00
bfs.txt
btrfs.txt
Fix URL of btrfs-progs git repository in docs
2011-11-30 18:46:02 +01:00
ceph.txt
ceph: enable/disable dentry complete flags via mount option
2012-01-12 11:00:40 -08:00
cifs.txt
coda.txt
cramfs.txt
debugfs.txt
debugfs: more tightly restrict default mount mode
2012-08-27 13:42:02 -07:00
devpts.txt
Document usage of multiple-instances of devpts
2009-01-02 10:19:36 -08:00
directory-locking
dlmfs.txt
Documentation/: it's -> its where appropriate
2010-04-23 02:09:52 +02:00
dnotify.txt
Documentation/fs/: split txt and source files
2010-03-12 15:52:35 -08:00
dnotify_test.c
Documentation/fs/: split txt and source files
2010-03-12 15:52:35 -08:00
ecryptfs.txt
efivarfs.txt
efivarfs: Add documentation for the EFI variable filesystem
2012-10-30 10:39:18 +00:00
exofs.txt
exofs: Add option to mount by osdname
2011-03-15 15:02:51 +02:00
ext2.txt
Doc fix: ext2 can only have 32,000 subdirs, not 32,768
2009-06-18 13:03:44 -07:00
ext3.txt
ext3: update documentation with barrier=1 default
2012-04-11 11:12:45 +02:00
ext4.txt
ext4: Remove CONFIG_EXT4_FS_XATTR
2012-12-10 16:30:43 -05:00
f2fs.txt
f2fs: fix a typo in f2fs documentation
2012-12-11 13:43:44 +09:00
fiemap.txt
Documentation/: it's -> its where appropriate
2010-04-23 02:09:52 +02:00
files.txt
Wrap accesses to the fd_sets in struct fdtable
2012-02-19 10:30:52 -08:00
fuse.txt
Documentation/: it's -> its where appropriate
2010-04-23 02:09:52 +02:00
gfs2-glocks.txt
GFS2: Update glock doc to add new stats info
2012-05-10 12:41:40 +01:00
gfs2-uevents.txt
Documentation: Fix multiple typo in Documentation
2012-03-07 16:08:24 +01:00
gfs2.txt
GFS2: Update main gfs2 doc
2012-05-10 11:45:31 +01:00
hfs.txt
Documentation: HFS is orphaned
2011-11-04 12:01:48 -07:00
hfsplus.txt
hpfs.txt
Documentation/: it's -> its where appropriate
2010-04-23 02:09:52 +02:00
inotify.txt
Documentation: fix inotify source file paths
2011-11-04 12:01:47 -07:00
isofs.txt
Documentation: update broken web addresses.
2010-08-04 15:21:40 +02:00
jfs.txt
jfs: Remove obsolete email address
2012-09-17 12:00:01 -05:00
Locking
vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op
2013-02-26 02:46:09 -05:00
locks.txt
doc: fix broken references
2011-09-27 18:08:04 +02:00
logfs.txt
fix "seperate" typos in comments
2010-05-10 11:56:30 +02:00
Makefile
Documentation/fs/: split txt and source files
2010-03-12 15:52:35 -08:00
mandatory-locking.txt
ncpfs.txt
ncpfs: remove dead URL from documentation
2009-09-23 07:39:42 -07:00
nilfs2.txt
nilfs2: remove resize from unsupported features list
2011-07-13 16:08:59 +09:00
ntfs.txt
Fix common misspellings
2011-03-31 11:26:23 -03:00
ocfs2.txt
ocfs2: clean up mount option about atime in ocfs2.txt
2011-05-23 23:37:12 -07:00
omfs.txt
omfs: add filesystem documentation
2008-07-26 12:00:05 -07:00
path-lookup.txt
Fix common misspellings
2011-03-31 11:26:23 -03:00
porting
vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op
2013-02-26 02:46:09 -05:00
proc.txt
docs: update documentation about /proc/<pid>/fdinfo/<fd> fanotify output
2012-12-17 17:15:28 -08:00
qnx6.txt
Documentation: Fix typo in multiple files in Documentation
2012-04-16 14:37:13 +02:00
quota.txt
quota: documentation for sending "below quota" messages via netlink and tiny doc update
2008-08-12 16:07:27 -07:00
ramfs-rootfs-initramfs.txt
Documentation: Fix Broken URL "freshmeat"
2012-02-21 11:43:45 +01:00
relay.txt
romfs.txt
Documentation/filesystems/romfs.txt: fixing link to genromfs
2011-02-17 22:04:46 +01:00
seq_file.txt
seq_file: use proc_create() in documentation
2009-12-16 07:20:07 -08:00
sharedsubtree.txt
Documentation: Fix trivial typo in filesystems/sharedsubtree.txt
2010-10-25 21:18:21 -04:00
spufs.txt
squashfs.txt
Squashfs: Update documentation to include xattrs
2011-12-30 01:20:24 +00:00
sysfs-pci.txt
PCI: Allow read/write access to sysfs I/O port resources
2010-07-30 09:32:08 -07:00
sysfs-tagging.txt
sysfs-namespaces: add a high-level Documentation file
2010-05-21 09:37:31 -07:00
sysfs.txt
sysfs: propagate umode_t
2012-01-03 22:55:03 -05:00
sysv-fs.txt
tmpfs.txt
mempolicy: document cpuset interaction with tmpfs mpol mount option
2010-05-25 08:06:57 -07:00
ubifs.txt
UBIFS: switch self-check knobs to debugfs
2011-07-04 10:54:28 +03:00
udf.txt
udf: implement mode and dmode mounting options
2009-04-02 12:29:50 +02:00
ufs.txt
vfat.txt
fat: provide option for setting timezone offset
2012-12-17 17:15:22 -08:00
vfs.txt
vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op
2013-02-26 02:46:09 -05:00
xfs-delayed-logging-design.txt
Fix common misspellings
2011-03-31 11:26:23 -03:00
xfs.txt
xfs: Remove the description of nodelaylog mount option from xfs.txt
2012-11-26 16:00:51 -06:00
xip.txt
DOC: update xip method info
2008-11-12 17:17:17 -08:00