NFS: Fix the NFS attribute update
Trond Myklebust authored

Currently nfs_refresh_inode() will only update the inode metadata if it
sees that the RPC call that returned the nfs_fattr was started
after the last update of the inode. This means that if we have parallel
RPC calls to the same inode (when sending WRITE calls, for instance), we
may often miss updates.

This patch attempts to recover those missed updates by also accepting
them if the ctime in the nfs_fattr is more recent than the inode's
cached ctime.
It also recovers the case where the file size has increased, but the
ctime has not been updated due to limited ctime resolution.
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
a10ad176
Name Last commit Last update
..
9p 9p: use an IS_ERR test rather than a NULL test
adfs [PATCH] fix ->llseek() for a bunch of directories
affs [PATCH] fix ->llseek() for a bunch of directories
afs mm: rename page trylock
autofs mount options: fix autofs
autofs4 [PATCH] fix ->llseek() for a bunch of directories
befs [PATCH] fix ->llseek() for a bunch of directories
bfs bfs: fix Lockdep warning
cifs [CIFS] Turn off Unicode during session establishment for plaintext authentication
coda [PATCH] sanitize __user_walk_fd() et.al.
configfs [PATCH] configfs: Consolidate locking around configfs_detach_prep() in configfs_rmdir()
cramfs cramfs: fix named-pipe handling
debugfs debugfs: Implement debugfs_remove_recursive()
devpts [PATCH] devpts: switch to IDA
dlm dlm: rename structs
ecryptfs eCryptfs: use page_alloc not kmalloc to get a page of memory
efs [PATCH] fix efs_lookup()
exportfs fs: replace remaining __FUNCTION__ occurrences
ext2 vfs: pagecache usage optimization for pagesize!=blocksize
ext3 [PATCH] fix races and leaks in vfs_quota_on() users
ext4 ext4: Fix small file fragmentation
fat vfat: fix 'sync' mount deadlock due to BKL->lock_super conversion
freevxfs fs/freevxfs/: proper externs
fuse [PATCH] fix MAY_CHDIR/MAY_ACCESS/LOOKUP_ACCESS mess
gfs2 [PATCH] don't pass nameidata to gfs2_lookupi()
hfs
hfsplus
hostfs
hpfs
hppfs
hugetlbfs
isofs
jbd
jbd2
jffs2
jfs
lockd
minix
msdos
ncpfs
nfs
nfs_common
nfsd
nls
ntfs
ocfs2
omfs
openpromfs
partitions
proc
qnx4
ramfs
reiserfs
romfs
smbfs
sysfs
sysv
ubifs
udf
ufs
vfat
xfs
Kconfig
Kconfig.binfmt
Makefile
aio.c
anon_inodes.c
attr.c
bad_inode.c
binfmt_aout.c
binfmt_elf.c
binfmt_elf_fdpic.c
binfmt_em86.c
binfmt_flat.c
binfmt_misc.c
binfmt_script.c
binfmt_som.c
bio-integrity.c
bio.c
block_dev.c
buffer.c
char_dev.c
compat.c
compat_binfmt_elf.c
compat_ioctl.c
dcache.c
dcookies.c
direct-io.c
dnotify.c
dquot.c
drop_caches.c
eventfd.c
eventpoll.c
exec.c
fcntl.c
fifo.c
file.c
file_table.c
filesystems.c
fs-writeback.c
generic_acl.c
inode.c
inotify.c
inotify_user.c
internal.h
ioctl.c
ioprio.c
libfs.c
locks.c
mbcache.c
mpage.c
namei.c
namespace.c
nfsctl.c
no-block.c
open.c
pipe.c
pnode.c
pnode.h
posix_acl.c
quota.c
quota_v1.c
quota_v2.c
read_write.c
read_write.h
readdir.c
select.c
seq_file.c
signalfd.c
splice.c
stack.c
stat.c
super.c
sync.c
timerfd.c
utimes.c
xattr.c
xattr_acl.c