linux-stable/fs/nfs
Benjamin Coddington 8a03a4a5cf NFSv4: Retry LOCK on OLD_STATEID during delegation return
[ Upstream commit f5ea16137a ]

There's a small window where a LOCK sent during a delegation return can
race with another OPEN on client, but the open stateid has not yet been
updated.  In this case, the client doesn't handle the OLD_STATEID error
from the server and will lose this lock, emitting:
"NFS: nfs4_handle_delegation_recall_error: unhandled error -10024".

Fix this by sending the task through the nfs4 error handling in
nfs4_lock_done() when we may have to reconcile our stateid with what the
server believes it to be.  For this case, the result is a retry of the
LOCK operation with the updated stateid.

Reported-by: Gonzalo Siero Humet <gsierohu@redhat.com>
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-11-26 09:24:31 +01: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: Report RDMA connection errors to the server 2022-08-17 14:22:45 +02:00
cache_lib.c
cache_lib.h
callback.c SUNRPC: Set rq_auth_stat in the pg_authenticate() callout 2021-08-10 14:18:35 -04:00
callback.h NFSv4.1: Fix uninitialised variable in devicenotify 2022-02-16 12:56:08 +01:00
callback_proc.c pNFS: Avoid a live lock condition in pnfs_update_layout() 2022-06-22 14:21:59 +02:00
callback_xdr.c NFS: remove unneeded check in decode_devicenotify_args() 2022-04-08 14:23:48 +02:00
client.c NFSv4.1 query for fs_location attr on a new file system 2022-02-16 12:56:09 +01:00
delegation.c NFSv4: Fix a potential state reclaim deadlock 2022-11-10 18:15:26 +01: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: Further optimisations for 'ls -l' 2022-09-15 11:30:03 +02:00
direct.c NFS: swap-out must always use STABLE writes. 2022-04-13 20:59:13 +02:00
dns_resolve.c
dns_resolve.h
export.c nfs: don't atempt blocking locks on nfs reexports 2021-08-26 15:32:10 -04:00
file.c NFS: Fix another fsync() issue after a server reboot 2022-09-15 11:30:03 +02:00
fs_context.c nfs: fix broken handling of the softreval mount option 2022-05-18 10:26:49 +02:00
fscache-index.c
fscache.c NFS: Fix fscache read from NFS after cache error 2021-07-08 14:03:26 -04:00
fscache.h
getroot.c NFS: Create a new nfs_alloc_fattr_with_label() function 2022-06-09 10:23:17 +02:00
inode.c NFS: Fix another fsync() issue after a server reboot 2022-09-15 11:30:03 +02:00
internal.h NFS: Create a new nfs_alloc_fattr_with_label() function 2022-06-09 10:23:17 +02: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
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.h
nfs2super.c
nfs2xdr.c NFS: Return valid errors from nfs2/3_decode_dirent() 2022-04-08 14:23:46 +02: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 Revert "pNFS: nfs3_set_ds_client should set NFS_CS_NOPING" 2022-08-17 14:22:45 +02:00
nfs3proc.c NFSv3: Delete duplicate judgement in nfs3_async_handle_jukebox 2021-08-27 16:36:21 -04:00
nfs3super.c
nfs3xdr.c NFS: Return valid errors from nfs2/3_decode_dirent() 2022-04-08 14:23:46 +02:00
nfs4_fs.h NFSv4 handle port presence in fs_location server string 2022-02-16 12:56:10 +01:00
nfs4client.c nfs4: Fix kmemleak when allocate slot failed 2022-11-10 18:15:26 +01:00
nfs4file.c NFSv4.2 fix problems with __nfs42_ssc_open 2022-08-31 17:16:37 +02:00
nfs4getroot.c
nfs4idmap.c NFSv4: Fix races in the legacy idmapper upcall 2022-08-25 11:40:02 +02:00
nfs4idmap.h
nfs4namespace.c NFSv4: Fix free of uninitialized nfs4_label on referral lookup. 2022-11-03 23:59:10 +09:00
nfs4proc.c NFSv4: Retry LOCK on OLD_STATEID during delegation return 2022-11-26 09:24:31 +01:00
nfs4renewd.c treewide: remove editor modelines and cruft 2021-05-07 00:26:34 -07:00
nfs4session.c
nfs4session.h NFSv4.1: use BITS_PER_LONG macro in nfs4session.h 2020-12-14 06:51:07 -05:00
nfs4state.c NFSv4.1: We must always send RECLAIM_COMPLETE after a reboot 2022-11-10 18:15:26 +01:00
nfs4super.c NFS: Adjust fs_context error logging 2021-01-10 13:32:39 -05:00
nfs4sysctl.c
nfs4trace.c
nfs4trace.h treewide: Add missing semicolons to __assign_str uses 2021-06-30 09:19:14 -04:00
nfs4xdr.c NFSv4: Fix free of uninitialized nfs4_label on referral lookup. 2022-11-03 23:59:10 +09:00
nfs42.h
nfs42proc.c NFSv4.2: Fixup CLONE dest file size for zero-length count 2022-11-10 18:15:26 +01:00
nfs42xattr.c nfs: Fix a typo in the file nfs42xattr.c 2021-04-05 09:04:20 -04:00
nfs42xdr.c NFSv42: Don't fail clone() unless the OP_CLONE operation failed 2021-12-01 09:04:47 +01:00
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 NFSv4.1 mark qualified async operations as MOVEABLE tasks 2022-06-09 10:23:17 +02:00
pnfs.c pNFS: Avoid a live lock condition in pnfs_update_layout() 2022-06-22 14:21:59 +02:00
pnfs.h pNFS: Avoid a live lock condition in pnfs_update_layout() 2022-06-22 14:21:59 +02:00
pnfs_dev.c NFSv4/pnfs: Add tracing for the deviceid cache 2020-12-16 17:25:24 -05:00
pnfs_nfs.c NFS: nfsiod should not block forever in mempool_alloc() 2022-04-13 20:59:13 +02:00
proc.c NFS: NFSv2/v3 clients should never be setting NFS_CAP_XATTR 2022-04-08 14:22:52 +02:00
read.c NFS: Always provide aligned buffers to the RPC read layers 2021-08-30 13:21:38 -04:00
super.c NFSv4: Turn off open-by-filehandle and NFS re-export for NFSv4.0 2022-09-23 14:15:47 +02:00
symlink.c
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 NFSv4.1 mark qualified async operations as MOVEABLE tasks 2022-06-09 10:23:17 +02:00
write.c NFS: Fix another fsync() issue after a server reboot 2022-09-15 11:30:03 +02:00