linux/fs/nfsd
Jeff Layton 638e3e7d94 nfsd: use the getattr operation to fetch i_version
Now that we can call into vfs_getattr to get the i_version field, use
that facility to fetch it instead of doing it in nfsd4_change_attribute.

Neil also pointed out recently that IS_I_VERSION directory operations
are always logged, and so we only need to mitigate the rollback problem
on regular files. Also, we don't need to factor in the ctime when
reexporting NFS or Ceph.

Set the STATX_CHANGE_COOKIE (and BTIME) bits in the request when we're
dealing with a v4 request. Then, instead of looking at IS_I_VERSION when
generating the change attr, look at the result mask and only use it if
STATX_CHANGE_COOKIE is set.

Change nfsd4_change_attribute to only factor in the ctime if it's a
regular file and the fs doesn't advertise STATX_ATTR_CHANGE_MONOTONIC.

Acked-by: Chuck Lever <chuck.lever@oracle.com>
Reviewed-by: NeilBrown <neilb@suse.de>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
2023-01-26 07:00:06 -05:00
..
acl.h NFSD: add posix ACLs to struct nfsd_attrs 2022-08-04 10:28:03 -04:00
auth.c
auth.h
blocklayout.c nfsd: move nfserrno() to vfs.c 2022-11-28 12:54:44 -05:00
blocklayoutxdr.c nfsd: move nfserrno() to vfs.c 2022-11-28 12:54:44 -05:00
blocklayoutxdr.h
cache.h nfsd: use DEFINE_SHOW_ATTRIBUTE to define nfsd_reply_cache_stats_fops 2022-09-26 14:02:50 -04:00
current_stateid.h
export.c fs: add is_idmapped_mnt() helper 2021-12-03 18:44:06 +01:00
export.h nfsd: move nfserrno() to vfs.c 2022-11-28 12:54:44 -05:00
fault_inject.c
filecache.c nfsd: don't free files unconditionally in __nfsd_file_cache_purge 2023-01-23 09:51:17 -05:00
filecache.h nfsd: fix handling of cached open files in nfsd4_open codepath 2023-01-06 13:17:06 -05:00
flexfilelayout.c nfsd: move nfserrno() to vfs.c 2022-11-28 12:54:44 -05:00
flexfilelayoutxdr.c
flexfilelayoutxdr.h
idmap.h
Kconfig nfsd: allow disabling NFSv2 at compile time 2022-11-28 12:54:45 -05:00
lockd.c NFSD: simplify struct nfsfh 2021-10-02 15:51:10 -04:00
Makefile nfsd: allow disabling NFSv2 at compile time 2022-11-28 12:54:45 -05:00
netns.h NFSD: replace delayed_work with work_struct for nfsd_client_shrinker 2023-01-12 09:38:30 -05:00
nfs2acl.c NFSD 6.2 Release Notes 2022-12-12 20:54:39 -08:00
nfs3acl.c NFSD 6.2 Release Notes 2022-12-12 20:54:39 -08:00
nfs3proc.c NFSD: Add an NFSD_FILE_GC flag to enable nfsd_file garbage collection 2022-11-28 12:54:45 -05:00
nfs3xdr.c NFSD: Clean up WRITE arg decoders 2022-09-26 14:02:47 -04:00
nfs4acl.c fs: rename current get acl method 2022-10-20 10:13:27 +02:00
nfs4callback.c nfsd-6.2 supplement: 2022-12-19 09:10:33 -06:00
nfs4idmap.c nfsd: move nfserrno() to vfs.c 2022-11-28 12:54:44 -05:00
nfs4layouts.c NFSD: Add tracepoints to report NFSv4 callback completions 2022-09-26 14:02:32 -04:00
nfs4proc.c NFSD: fix use-after-free in nfsd4_ssc_setup_dul() 2023-01-11 21:29:11 -05:00
nfs4recover.c struct file-related stuff 2022-10-06 17:13:18 -07:00
nfs4state.c nfsd-6.2 fixes: 2023-01-17 09:29:17 -08:00
nfs4xdr.c nfsd: use the getattr operation to fetch i_version 2023-01-26 07:00:06 -05:00
nfscache.c nfsd: use DEFINE_SHOW_ATTRIBUTE to define nfsd_reply_cache_stats_fops 2022-09-26 14:02:50 -04:00
nfsctl.c NFSD: register/unregister of nfsd-client shrinker at nfsd startup/shutdown time 2023-01-11 21:32:05 -05:00
nfsd.h NFSD: register/unregister of nfsd-client shrinker at nfsd startup/shutdown time 2023-01-11 21:32:05 -05:00
nfsfh.c nfsd: use the getattr operation to fetch i_version 2023-01-26 07:00:06 -05:00
nfsfh.h nfsd: move nfsd4_change_attribute to nfsfh.c 2023-01-26 07:00:06 -05:00
nfsproc.c NFSD: Use set_bit(RQ_DROPME) 2023-01-07 10:16:33 -05:00
nfssvc.c nfsd: shut down the NFSv4 state objects before the filecache 2022-12-22 10:12:56 -05:00
nfsxdr.c NFSD: Clean up WRITE arg decoders 2022-09-26 14:02:47 -04:00
pnfs.h
state.h NFSD: add delegation reaper to react to low memory condition 2022-12-10 11:01:12 -05:00
stats.c nfsd: use DEFINE_PROC_SHOW_ATTRIBUTE to define nfsd_proc_ops 2022-09-26 14:02:49 -04:00
stats.h nfsd: make nfsd_stats.th_cnt atomic_t 2021-12-13 13:42:51 -05:00
trace.c NFSD: Add SPDX header for fs/nfsd/trace.c 2020-11-30 13:00:24 -05:00
trace.h nfsd: fix handling of cached open files in nfsd4_open codepath 2023-01-06 13:17:06 -05:00
vfs.c NFSD 6.2 Release Notes 2022-12-12 20:54:39 -08:00
vfs.h nfsd: use the getattr operation to fetch i_version 2023-01-26 07:00:06 -05:00
xdr.h NFSD: prevent underflow in nfssvc_decode_writeargs() 2022-03-15 09:35:56 -04:00
xdr3.h SUNRPC: Change return value type of .pc_encode 2021-10-13 11:34:49 -04:00
xdr4.h NFSD: add support for sending CB_RECALL_ANY 2022-12-10 11:01:12 -05:00
xdr4cb.h NFSD: add support for sending CB_RECALL_ANY 2022-12-10 11:01:12 -05:00