linux/fs/nfs
Jeff Layton 55051c0ced nfs: always check dreq->error after a commit
When the client gets back a short DIO write, it will then attempt to
issue another write to finish the DIO request. If that write then fails
(as is often the case in an -ENOSPC situation), then we still may need
to issue a COMMIT if the earlier short write was unstable. If that COMMIT
then succeeds, then we don't want the client to reschedule the write
requests, and to instead just return a short write. Otherwise, we can
end up looping over the same DIO write forever.

Always consult dreq->error after a successful RPC, even when the flag
state is not NFS_ODIRECT_DONE.

Link: https://bugzilla.redhat.com/show_bug.cgi?id=2028370
Reported-by: Boyang Xue <bxue@redhat.com>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
2022-07-23 15:28:59 -04:00
..
blocklayout nfs/blocklayout: refactor block device opening 2022-07-12 10:05:21 -04:00
filelayout pNFS/files: Handle RDMA connection errors correctly 2022-07-10 19:00:53 -04:00
flexfilelayout NFS: Allow setting rsize / wsize to a multiple of PAGE_SIZE 2022-07-12 10:53:10 -04:00
cache_lib.c
cache_lib.h
callback.c
callback.h
callback_proc.c pNFS: Avoid a live lock condition in pnfs_update_layout() 2022-06-06 11:53:55 -04:00
callback_xdr.c
client.c NFS: Allow setting rsize / wsize to a multiple of PAGE_SIZE 2022-07-12 10:53:10 -04:00
delegation.c
delegation.h
dir.c nfs: Replace kmap() with kmap_local_page() 2022-07-12 10:06:18 -04:00
direct.c nfs: always check dreq->error after a commit 2022-07-23 15:28:59 -04:00
dns_resolve.c
dns_resolve.h
export.c
file.c NFS: remove redundant code in nfs_file_write() 2022-07-12 10:05:24 -04:00
fs_context.c nfs: fix port value parsing 2022-07-12 10:53:10 -04:00
fscache.c
fscache.h
getroot.c
inode.c
internal.h nfs: add new nfs_direct_req tracepoint events 2022-07-23 15:28:59 -04:00
io.c
iostat.h
Kconfig
Makefile
mount_clnt.c
namespace.c
netns.h
nfs.h
nfs2super.c
nfs2xdr.c
nfs3_fs.h
nfs3acl.c
nfs3client.c Revert "pNFS: nfs3_set_ds_client should set NFS_CS_NOPING" 2022-07-10 19:00:53 -04:00
nfs3proc.c
nfs3super.c
nfs3xdr.c
nfs4_fs.h
nfs4client.c NFS: Allow setting rsize / wsize to a multiple of PAGE_SIZE 2022-07-12 10:53:10 -04:00
nfs4file.c NFSv4: Add FMODE_CAN_ODIRECT after successful open of a NFS4.x file 2022-06-15 15:03:12 -04:00
nfs4getroot.c
nfs4idmap.c NFSv4: Fix races in the legacy idmapper upcall 2022-07-13 17:46:52 -04:00
nfs4idmap.h
nfs4namespace.c NFSv4: Fix free of uninitialized nfs4_label on referral lookup. 2022-05-31 17:09:24 -04:00
nfs4proc.c NFSv4.1: Handle NFS4ERR_DELAY replies to OP_SEQUENCE correctly 2022-07-12 09:54:04 -04:00
nfs4renewd.c
nfs4session.c
nfs4session.h
nfs4state.c NFS: restore module put when manager exits. 2022-06-30 16:13:00 -04:00
nfs4super.c
nfs4sysctl.c
nfs4trace.c
nfs4trace.h
nfs4xdr.c NFSv4: Fix free of uninitialized nfs4_label on referral lookup. 2022-05-31 17:09:24 -04:00
nfs42.h
nfs42proc.c
nfs42xattr.c
nfs42xdr.c
nfsroot.c
nfstrace.c
nfstrace.h nfs: add new nfs_direct_req tracepoint events 2022-07-23 15:28:59 -04:00
pagelist.c NFSv4.1 mark qualified async operations as MOVEABLE tasks 2022-05-31 17:09:30 -04:00
pnfs.c pNFS: Avoid a live lock condition in pnfs_update_layout() 2022-06-06 11:53:55 -04:00
pnfs.h pNFS: Avoid a live lock condition in pnfs_update_layout() 2022-06-06 11:53:55 -04:00
pnfs_dev.c
pnfs_nfs.c
proc.c
read.c
super.c
symlink.c
sysctl.c
sysfs.c
sysfs.h
unlink.c NFSv4.1 mark qualified async operations as MOVEABLE tasks 2022-05-31 17:09:30 -04:00
write.c NFSv4.1 mark qualified async operations as MOVEABLE tasks 2022-05-31 17:09:30 -04:00