linux/fs/nfs
Trond Myklebust eea413308f NFS: Default change_attr_type to NFS4_CHANGE_TYPE_IS_UNDEFINED
Both NFSv3 and NFSv2 generate their change attribute from the ctime
value that was supplied by the server. However the problem is that there
are plenty of servers out there with ctime resolutions of 1ms or worse.
In a modern performance system, this is insufficient when trying to
decide which is the most recent set of attributes when, for instance, a
READ or GETATTR call races with a WRITE or SETATTR.

For this reason, let's revert to labelling the NFSv2/v3 change
attributes as NFS4_CHANGE_TYPE_IS_UNDEFINED. This will ensure we protect
against such races.

Fixes: 7b24dacf08 ("NFS: Another inode revalidation improvement")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Tested-by: Chuck Lever <chuck.lever@oracle.com>
2021-10-03 20:49:06 -04:00
..
blocklayout block: Add bio_max_segs 2021-02-26 15:49:51 -07:00
filelayout NFS: fix an incorrect limit in filelayout_decode_layout() 2021-05-20 12:17:08 -04:00
flexfilelayout pNFS/flexfiles: fix incorrect size check in decode_nfs_fh() 2021-04-14 09:36:29 -04:00
cache_lib.c
cache_lib.h
callback_proc.c NFSv4.x: Don't return NFS4ERR_NOMATCHING_LAYOUT if we're unmounting 2021-04-16 08:50:21 -04:00
callback_xdr.c NFS: Clean up the synopsis of callback process_op() 2021-08-10 14:18:35 -04:00
callback.c SUNRPC: Set rq_auth_stat in the pg_authenticate() callout 2021-08-10 14:18:35 -04:00
callback.h NFSv4: Add support for CB_RECALL_ANY for flexfiles layouts 2020-03-16 08:34:30 -04:00
client.c SUNRPC enforce creation of no more than max_connect xprts 2021-08-27 16:37:29 -04:00
delegation.c NFSv4: Add lease breakpoints in case of a delegation recall or return 2021-06-13 19:36:28 -04:00
delegation.h NFSv4: Fix delegation return in cases where we have to retry 2021-06-13 19:36:27 -04:00
dir.c NFS: Label the dentry with a verifier in nfs_rmdir() and nfs_unlink() 2021-10-03 20:49:05 -04:00
direct.c NFSv4: Fix an Oops in pnfs_mark_request_commit() when doing O_DIRECT 2021-06-13 19:36:49 -04:00
dns_resolve.c NFS: remove duplicate headers 2020-05-27 10:10:12 -04:00
dns_resolve.h
export.c nfs: don't atempt blocking locks on nfs reexports 2021-08-26 15:32:10 -04:00
file.c New features: 2021-08-31 10:57:06 -07:00
fs_context.c NFSv4 introduce max_connect mount options 2021-08-27 16:37:17 -04:00
fscache-index.c nfs: fscache: use timespec64 in inode auxdata 2020-01-15 10:54:30 -05:00
fscache.c NFS: Fix fscache read from NFS after cache error 2021-07-08 14:03:26 -04:00
fscache.h nfs: fscache: use timespec64 in inode auxdata 2020-01-15 10:54:30 -05:00
getroot.c nfs: update has_sec_mnt_opts after cloning lsm options from parent 2021-06-28 09:34:39 -04:00
inode.c NFS: Default change_attr_type to NFS4_CHANGE_TYPE_IS_UNDEFINED 2021-10-03 20:49:06 -04:00
internal.h NFSv4 introduce max_connect mount options 2021-08-27 16:37:17 -04:00
io.c NFS: Fix up incorrect documentation 2021-04-05 09:04:20 -04:00
iostat.h
Kconfig nfs: fix PNFS_FLEXFILE_LAYOUT Kconfig default 2021-03-08 11:47:47 -05:00
Makefile NFSv4.2: add client side xattr caching. 2020-07-13 17:52:46 -04:00
mount_clnt.c nfs: hornor timeo and retrans option when mounting NFSv3 2021-04-05 09:04:21 -04:00
namespace.c nfs: Remove trailing semicolon in macros 2021-05-27 09:19:33 -04:00
netns.h NFS: Add sysfs support for per-container identifier 2019-07-06 14:54:49 -04:00
nfs2super.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
nfs2xdr.c SUNRPC: Clean up the handling of page padding in rpc_prepare_reply_pages() 2020-12-02 14:05:53 -05:00
nfs3_fs.h vfs: add rcu argument to ->get_acl() callback 2021-08-18 22:08:24 +02:00
nfs3acl.c vfs: add rcu argument to ->get_acl() callback 2021-08-18 22:08:24 +02:00
nfs3client.c NFS: Additional refactoring for fs_context conversion 2020-01-15 10:15:17 -05:00
nfs3proc.c NFSv3: Delete duplicate judgement in nfs3_async_handle_jukebox 2021-08-27 16:36:21 -04:00
nfs3super.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
nfs3xdr.c NFS: Default change_attr_type to NFS4_CHANGE_TYPE_IS_UNDEFINED 2021-10-03 20:49:06 -04:00
nfs4_fs.h NFSv4: Add support for application leases underpinned by a delegation 2021-06-13 19:36:28 -04:00
nfs4client.c NFSv4.1 add network transport when session trunking is detected 2021-08-27 16:37:41 -04:00
nfs4file.c NFSv4.2: remove restriction of copy size for inter-server copy. 2021-08-10 14:18:35 -04:00
nfs4getroot.c
nfs4idmap.c NFS: Only reference user namespace from nfs4idmap struct instead of cred 2020-10-13 15:56:54 -04:00
nfs4idmap.h
nfs4namespace.c nfs: Fix memory leak of export_path 2020-06-26 08:43:14 -04:00
nfs4proc.c NFSv4: Retrieve ACCESS on open if we're not using NFS4_CREATE_EXCLUSIVE 2021-10-03 20:49:06 -04:00
nfs4renewd.c treewide: remove editor modelines and cruft 2021-05-07 00:26:34 -07:00
nfs4session.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
nfs4session.h NFSv4.1: use BITS_PER_LONG macro in nfs4session.h 2020-12-14 06:51:07 -05:00
nfs4state.c NFS: Fix a few more clear_bit() instances that need release semantics 2021-10-03 20:49:06 -04:00
nfs4super.c NFS: Adjust fs_context error logging 2021-01-10 13:32:39 -05:00
nfs4sysctl.c
nfs4trace.c pNFS/flexfiles: Add tracing for layout errors 2020-01-15 10:54:33 -05:00
nfs4trace.h treewide: Add missing semicolons to __assign_str uses 2021-06-30 09:19:14 -04:00
nfs4xdr.c NFS client updates for Linux 5.13 2021-05-07 11:23:41 -07:00
nfs42.h NFSv4.2: add the extended attribute proc functions. 2020-07-13 17:52:45 -04:00
nfs42proc.c NFSv42: Don't force attribute revalidation of the copy offload source 2021-04-14 10:42:24 -04:00
nfs42xattr.c nfs: Fix a typo in the file nfs42xattr.c 2021-04-05 09:04:20 -04:00
nfs42xdr.c NFS client updates for Linux 5.11 2020-12-17 12:15:03 -08:00
nfs.h
nfsroot.c nfsroot: Default mount option should ask for built-in NFS version 2020-11-02 10:29:03 -05:00
nfstrace.c NFSv4: Catch and trace server filehandle encoding errors 2021-04-14 09:36:29 -04:00
nfstrace.h Merge branch 'work.namei' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2021-07-03 11:41:14 -07:00
pagelist.c NFS: Fix a few more clear_bit() instances that need release semantics 2021-10-03 20:49:06 -04:00
pnfs_dev.c NFSv4/pnfs: Add tracing for the deviceid cache 2020-12-16 17:25:24 -05:00
pnfs_nfs.c NFSv4/pNFS: Return an error if _nfs4_pnfs_v3_ds_connect can't load NFSv3 2021-07-08 14:03:26 -04:00
pnfs.c NFSv4/pnfs: The layout barrier indicate a minimal value for the seqid 2021-08-09 16:57:04 -04:00
pnfs.h pNFS: We want return-on-close to complete when evicting the inode 2021-01-10 13:32:51 -05:00
proc.c NFS: Default change_attr_type to NFS4_CHANGE_TYPE_IS_UNDEFINED 2021-10-03 20:49:06 -04:00
read.c NFS: Always provide aligned buffers to the RPC read layers 2021-08-30 13:21:38 -04:00
super.c NFSv4 introduce max_connect mount options 2021-08-27 16:37:17 -04:00
symlink.c nfs: pass the correct prototype to read_cache_page 2019-05-09 16:26:57 -04:00
sysctl.c
sysfs.c NFSv4: Fix up RCU annotations for struct nfs_netns_client 2020-10-15 13:31:08 -04:00
sysfs.h NFSv4: Fix up RCU annotations for struct nfs_netns_client 2020-10-15 13:31:08 -04:00
unlink.c NFS: Fix open coded versions of nfs_set_cache_invalid() 2021-03-08 16:13:55 -05:00
write.c NFS: Fix up nfs_ctx_key_to_expire() 2021-10-03 20:49:05 -04:00