android_kernel_xiaomi_sm8350/fs/nfs
NeilBrown 37d9d76d8b NFS: flush cached directory information slightly more readily.
If cached directory contents becomes incorrect, there is no way to
flush the contents.  This contrasts with files where file locking is
the recommended way to ensure cache consistency between multiple
applications (a read-lock always flushes the cache).

Also while changes to files often change the size of the file (thus
triggering a cache flush), changes to directories often do not change
the apparent size (as the size is often rounded to a block size).

So it is particularly important with directories to avoid the
possibility of an incorrect cache wherever possible.

When the link count on a directory changes it implies a change in the
number of child directories, and so a change in the contents of this
directory.  So use that as a trigger to flush cached contents.

When the ctime changes but the mtime does not, there are two possible
reasons.
 1/ The owner/mode information has been changed.
 2/ utimes has been used to set the mtime backwards.

In the first case, a data-cache flush is not required.
In the second case it is.

So on the basis that correctness trumps performance, flush the
directory contents cache in this case also.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2009-03-11 14:10:23 -04:00
..
callback_proc.c
callback_xdr.c
callback.c rpc: allow gss callbacks to client 2008-12-23 16:18:34 -05:00
callback.h
client.c Bug 11061, NFS mounts dropped 2009-03-10 20:33:22 -04:00
delegation.c NFSv4: Convert delegation->type field to fmode_t 2008-12-23 15:21:53 -05:00
delegation.h NFSv4: Convert delegation->type field to fmode_t 2008-12-23 15:21:53 -05:00
dir.c NFS: Handle -ESTALE error in access() 2009-03-10 20:33:21 -04:00
direct.c
file.c fs: symlink write_begin allocation context fix 2009-01-04 13:33:20 -08:00
getroot.c [PATCH] switch all filesystems over to d_obtain_alias 2008-10-23 05:13:01 -04:00
idmap.c
inode.c NFS: flush cached directory information slightly more readily. 2009-03-11 14:10:23 -04:00
internal.h NFS: "[no]resvport" mount option changes mountd client too 2008-12-23 15:21:37 -05:00
iostat.h
Kconfig fs/Kconfig: move nfs out 2009-01-22 13:16:00 +03:00
Makefile
mount_clnt.c NFS: "[no]resvport" mount option changes mountd client too 2008-12-23 15:21:37 -05:00
namespace.c nfs: BUG_ON in nfs_follow_mountpoint 2008-10-07 18:15:16 -04:00
nfs2xdr.c
nfs3acl.c NFSv3: Fix posix ACL code 2009-03-10 20:33:18 -04:00
nfs3proc.c nfs: authenticated deep mounting 2008-10-07 18:16:22 -04:00
nfs3xdr.c NFSv3: Fix posix ACL code 2009-03-10 20:33:18 -04:00
nfs4_fs.h fs/nfs/nfs4proc.c: make nfs4_map_errors() static 2008-12-30 16:35:55 -05:00
nfs4namespace.c NFS: Fix misparsing of nfsv4 fs_locations attribute (take 2) 2009-03-10 20:33:17 -04:00
nfs4proc.c fs/nfs/nfs4proc.c: make nfs4_map_errors() static 2008-12-30 16:35:55 -05:00
nfs4renewd.c NFSv4: Return unreferenced delegations more promptly 2008-12-23 15:21:52 -05:00
nfs4state.c NFSv4: Convert the open and close ops to use fmode 2008-12-23 15:21:56 -05:00
nfs4xdr.c NFS: remove unused status from encode routines 2008-12-23 16:06:18 -05:00
nfsroot.c Merge branch 'devel' into next 2008-12-30 16:51:43 -05:00
pagelist.c
proc.c nfs: authenticated deep mounting 2008-10-07 18:16:22 -04:00
read.c nfs: remove redundant tests on reading new pages 2008-12-23 15:21:30 -05:00
super.c Merge branch 'devel' into next 2008-12-30 16:51:43 -05:00
symlink.c
sysctl.c
unlink.c
write.c NFS: Don't use range_cyclic for data integrity syncs 2008-10-07 18:19:05 -04:00