summaryrefslogtreecommitdiffstats
path: root/fs/nfsd/filecache.c
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2022-11-03 16:22:48 -0400
committerChuck Lever <cel@kernel.org>2022-12-10 11:00:04 -0500
commitd7064eaf688cfe454c50db9f59298463d80d403c (patch)
tree7029852beb52f4fed075104f4f8ab2ec9e99744d /fs/nfsd/filecache.c
parent3ed157d0d73f15b6574424dd068ca5f5a8560562 (diff)
downloadlinux-d7064eaf688cfe454c50db9f59298463d80d403c.tar.bz2
NFSD: Add an nfsd_file_fsync tracepoint
Add a tracepoint to capture the number of filecache-triggered fsync calls and which files needed it. Also, record when an fsync triggers a write verifier reset. Examples: <...>-97 [007] 262.505611: nfsd_file_free: inode=0xffff888171e08140 ref=0 flags=GC may=WRITE nf_file=0xffff8881373d2400 <...>-97 [007] 262.505612: nfsd_file_fsync: inode=0xffff888171e08140 ref=0 flags=GC may=WRITE nf_file=0xffff8881373d2400 ret=0 <...>-97 [007] 262.505623: nfsd_file_free: inode=0xffff888171e08dc0 ref=0 flags=GC may=WRITE nf_file=0xffff8881373d1e00 <...>-97 [007] 262.505624: nfsd_file_fsync: inode=0xffff888171e08dc0 ref=0 flags=GC may=WRITE nf_file=0xffff8881373d1e00 ret=0 Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Reviewed-by: Jeff Layton <jlayton@kernel.org>
Diffstat (limited to 'fs/nfsd/filecache.c')
-rw-r--r--fs/nfsd/filecache.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/nfsd/filecache.c b/fs/nfsd/filecache.c
index da7c9cb12403..1998b4d5f692 100644
--- a/fs/nfsd/filecache.c
+++ b/fs/nfsd/filecache.c
@@ -336,10 +336,13 @@ static void
nfsd_file_fsync(struct nfsd_file *nf)
{
struct file *file = nf->nf_file;
+ int ret;
if (!file || !(file->f_mode & FMODE_WRITE))
return;
- if (vfs_fsync(file, 1) != 0)
+ ret = vfs_fsync(file, 1);
+ trace_nfsd_file_fsync(nf, ret);
+ if (ret)
nfsd_reset_write_verifier(net_generic(nf->nf_net, nfsd_net_id));
}