kernel_samsung_a53x/fs
Trond Myklebust 3850692c41 nfsd: Fix a write performance regression
[ Upstream commit 6b8a94332ee4f7d9a8ae0cbac7609f79c212f06c ]

The call to filemap_flush() in nfsd_file_put() is there to ensure that
we clear out any writes belonging to a NFSv3 client relatively quickly
and avoid situations where the file can't be evicted by the garbage
collector. It also ensures that we detect write errors quickly.

The problem is this causes a regression in performance for some
workloads.

So try to improve matters by deferring writeback until we're ready to
close the file, and need to detect errors so that we can force the
client to resend.

Tested-by: Jan Kara <jack@suse.cz>
Fixes: b6669305d35a ("nfsd: Reduce the number of calls to nfsd_file_gc()")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Link: https://lore.kernel.org/all/20220330103457.r4xrhy2d6nhtouzk@quack3.lan
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-19 12:27:55 +01:00
..
9p fs/9p: drop inodes immediately on non-.L too 2024-11-19 11:32:45 +01:00
adfs
affs
afs afs: Don't cross .backup mountpoint from backup volume 2024-11-19 12:27:12 +01:00
autofs file: Replace ksys_close with close_fd 2024-11-19 12:27:28 +01:00
befs
bfs
btrfs btrfs: add missing mutex_unlock in btrfs_relocate_sys_chunks() 2024-11-19 12:26:50 +01:00
cachefiles namei: introduce struct renamedata 2024-11-19 12:27:33 +01:00
ceph
cifs exit: Rename module_put_and_exit to module_put_and_kthread_exit 2024-11-19 12:27:50 +01:00
coda
configfs
cramfs
crypto
debugfs
devpts
dlm
ecryptfs namei: introduce struct renamedata 2024-11-19 12:27:33 +01:00
efivarfs
efs
erofs
exfat
exportfs exportfs: Add a function to return the raw output from fh_to_dentry() 2024-11-19 12:27:26 +01:00
ext2
ext4 ext4: fix mb_cache_entry's e_refcnt leak in ext4_xattr_block_cache_find() 2024-11-19 12:27:19 +01:00
f2fs f2fs: fix to do sanity check on i_xattr_nid in sanity_check_inode() 2024-11-19 12:27:13 +01:00
fat fat: fix uninitialized field in nostale filehandles 2024-11-19 09:22:16 +01:00
freevxfs
fscache
fuse fuse: don't unhash root 2024-11-19 09:22:18 +01:00
gfs2 gfs2: Fix "ignore unlock failures after withdraw" 2024-11-19 12:26:54 +01:00
hfs
hfsplus
hostfs
hpfs
hugetlbfs fs,hugetlb: fix NULL pointer dereference in hugetlbs_fill_super 2024-11-18 23:18:30 +01:00
incfs
iomap
isofs isofs: handle CDs with bad root inode but good Joliet root directory 2024-11-19 09:23:14 +01:00
jbd2
jffs2 jffs2: prevent xattr node from overflowing the eraseblock 2024-11-19 12:26:52 +01:00
jfs
kernfs
lockd NFSD: Move svc_serv_ops::svo_function into struct svc_serv 2024-11-19 12:27:54 +01:00
minix
nfs NFSD: Move svc_serv_ops::svo_function into struct svc_serv 2024-11-19 12:27:54 +01:00
nfs_common NFSD: Add an xdr_stream-based encoder for NFSv2/3 ACLs 2024-11-19 12:27:35 +01:00
nfsd nfsd: Fix a write performance regression 2024-11-19 12:27:55 +01:00
nilfs2 nilfs2: fix use-after-free of timer for log writer thread 2024-11-19 12:27:12 +01:00
nls
notify fsnotify: remove redundant parameter judgment 2024-11-19 12:27:54 +01:00
ntfs
ocfs2
omfs
openpromfs openpromfs: finish conversion to the new mount API 2024-11-19 12:26:52 +01:00
orangefs
overlayfs namei: introduce struct renamedata 2024-11-19 12:27:33 +01:00
proc proc/fd: In fdinfo seq_show don't use get_files_struct 2024-11-19 12:27:28 +01:00
pstore pstore/zone: Add a null pointer check to the psz_kmsg_read 2024-11-19 09:23:13 +01:00
qnx4
qnx6
quota quota: Fix rcu annotations of inode dquot pointers 2024-11-19 08:44:52 +01:00
ramfs
reiserfs
romfs
sdfat
squashfs
sysfs fs: sysfs: Fix reference leak in sysfs_break_active_protection() 2024-11-19 11:32:23 +01:00
sysv sysv: don't call sb_bread() with pointers_lock held 2024-11-19 09:23:14 +01:00
tracefs
ubifs ubifs: Set page uptodate in the correct place 2024-11-19 09:22:16 +01:00
udf fs: add file and path permissions helpers 2024-11-19 12:27:33 +01:00
ufs
unicode
vboxsf vboxsf: Avoid an spurious warning if load_nls_xxx() fails 2024-11-19 09:22:46 +01:00
verity fs: add file and path permissions helpers 2024-11-19 12:27:33 +01:00
xfs
zonefs
aio.c fs/aio: Check IOCB_AIO_RW before the struct aio_kiocb conversion 2024-11-19 09:22:39 +01:00
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
block_dev.c
buffer.c
char_dev.c
compat_binfmt_elf.c
coredump.c exec: Simplify unshare_files 2024-11-19 12:27:27 +01:00
d_path.c
dax.c
dcache.c
dcookies.c
direct-io.c
dlog_hook.c
drop_caches.c
eventfd.c
eventpoll.c
exec.c exec: Simplify unshare_files 2024-11-19 12:27:27 +01:00
fcntl.c
fhandle.c do_sys_name_to_handle(): use kzalloc() to fix kernel-infoleak 2024-11-19 08:44:37 +01:00
file.c file: Rename __close_fd to close_fd and remove the files parameter 2024-11-19 12:27:28 +01:00
file_table.c
filesystems.c
fs-writeback.c
fs_context.c
fs_parser.c
fs_pin.c
fs_struct.c
fs_types.c
fsopen.c
init.c fs: add file and path permissions helpers 2024-11-19 12:27:33 +01:00
inode.c
internal.h
ioctl.c
Kconfig NFSD: Remove CONFIG_NFSD_V3 2024-11-19 12:27:54 +01:00
Kconfig.binfmt
kernel_read_file.c
libfs.c
locks.c nfsd: grant read delegations to clients holding writes 2024-11-19 12:27:37 +01:00
Makefile
mbcache.c
mount.h
mpage.c
namei.c namei: introduce struct renamedata 2024-11-19 12:27:33 +01:00
namespace.c
no-block.c
nsfs.c
open.c fs: add file and path permissions helpers 2024-11-19 12:27:33 +01:00
pipe.c
pnode.c
pnode.h
posix_acl.c
proc_namespace.c
read_write.c
readdir.c
remap_range.c
select.c fs/select: rework stack allocation hack for clang 2024-11-19 08:44:37 +01:00
seq_file.c
signalfd.c
splice.c
stack.c
stat.c
statfs.c
super.c
sync.c
timerfd.c
userfaultfd.c
utimes.c
xattr.c