linux/fs/nfs
Trond Myklebust f0caea8882 NFS: Fix an Oops in pnfs_mark_request_commit()
Olga reports seeing the following Oops when doing O_DIRECT writes to a
pNFS flexfiles server:

Oops: 0000 [#1] SMP PTI
CPU: 1 PID: 234186 Comm: kworker/u8:1 Not tainted 5.15.0-rc4+ #4
Hardware name: Red Hat KVM/RHEL-AV, BIOS 1.13.0-2.module+el8.3.0+7353+9de0a3cc 04/01/2014
Workqueue: nfsiod rpc_async_release [sunrpc]
RIP: 0010:nfs_mark_request_commit+0x12/0x30 [nfs]
Code: ff ff be 03 00 00 00 e8 ac 34 83 eb e9 29 ff ff
ff e8 22 bc d7 eb 66 90 0f 1f 44 00 00 48 85 f6 74 16 48 8b 42 10 48
8b 40 18 <48> 8b 40 18 48 85 c0 74 05 e9 70 fc 15 ec 48 89 d6 e9 68 ed
ff ff
RSP: 0018:ffffa82f0159fe00 EFLAGS: 00010286
RAX: 0000000000000000 RBX: ffff8f3393141880 RCX: 0000000000000000
RDX: ffffa82f0159fe08 RSI: ffff8f3381252500 RDI: ffff8f3393141880
RBP: ffff8f33ac317c00 R08: 0000000000000000 R09: ffff8f3487724cb0
R10: 0000000000000008 R11: 0000000000000001 R12: 0000000000000001
R13: ffff8f3485bccee0 R14: ffff8f33ac317c10 R15: ffff8f33ac317cd8
FS:  0000000000000000(0000) GS:ffff8f34fbc80000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000018 CR3: 0000000122120006 CR4: 0000000000770ee0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
PKRU: 55555554
Call Trace:
 nfs_direct_write_completion+0x13b/0x250 [nfs]
 rpc_free_task+0x39/0x60 [sunrpc]
 rpc_async_release+0x29/0x40 [sunrpc]
 process_one_work+0x1ce/0x370
 worker_thread+0x30/0x380
 ? process_one_work+0x370/0x370
 kthread+0x11a/0x140
 ? set_kthread_struct+0x40/0x40
 ret_from_fork+0x22/0x30

Reported-by: Olga Kornievskaia <aglo@umich.edu>
Fixes: 9c455a8c1e ("NFS/pNFS: Clean up pNFS commit operations")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
2021-10-20 18:09:53 -04: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: Fix misplaced barrier in nfs4_ff_layout_prepare_ds 2021-10-03 23:00:50 -04:00
cache_lib.c
cache_lib.h
callback_proc.c NFSv4.x: Don't return NFS4ERR_NOMATCHING_LAYOUT if we're unmounting 2021-04-16 08:50:21 -04:00
callback_xdr.c NFS: Clean up the synopsis of callback process_op() 2021-08-10 14:18:35 -04:00
callback.c SUNRPC: Set rq_auth_stat in the pg_authenticate() callout 2021-08-10 14:18:35 -04:00
callback.h NFSv4: Add support for CB_RECALL_ANY for flexfiles layouts 2020-03-16 08:34:30 -04:00
client.c SUNRPC enforce creation of no more than max_connect xprts 2021-08-27 16:37:29 -04:00
delegation.c NFSv4: Add lease breakpoints in case of a delegation recall or return 2021-06-13 19:36:28 -04: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: Do not flush the readdir cache in nfs_dentry_iput() 2021-10-03 20:49:07 -04:00
direct.c NFS: Fix up commit deadlocks 2021-10-20 18:09:45 -04:00
dns_resolve.c NFS: remove duplicate headers 2020-05-27 10:10:12 -04:00
dns_resolve.h
export.c nfs: don't atempt blocking locks on nfs reexports 2021-08-26 15:32:10 -04:00
file.c New features: 2021-08-31 10:57:06 -07:00
fs_context.c NFSv4 introduce max_connect mount options 2021-08-27 16:37:17 -04:00
fscache-index.c nfs: fscache: use timespec64 in inode auxdata 2020-01-15 10:54:30 -05:00
fscache.c NFS: Fix fscache read from NFS after cache error 2021-07-08 14:03:26 -04:00
fscache.h nfs: fscache: use timespec64 in inode auxdata 2020-01-15 10:54:30 -05:00
getroot.c nfs: update has_sec_mnt_opts after cloning lsm options from parent 2021-06-28 09:34:39 -04:00
inode.c NFS: Instrument i_size_write() 2021-10-10 11:05:54 +02:00
internal.h NFSv4 introduce max_connect mount options 2021-08-27 16:37:17 -04: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 NFSv4.2: add client side xattr caching. 2020-07-13 17:52:46 -04:00
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: Add sysfs support for per-container identifier 2019-07-06 14:54:49 -04:00
nfs2super.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
nfs2xdr.c SUNRPC: Clean up the handling of page padding in rpc_prepare_reply_pages() 2020-12-02 14:05:53 -05: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 NFS: Additional refactoring for fs_context conversion 2020-01-15 10:15:17 -05:00
nfs3proc.c NFSv3: Delete duplicate judgement in nfs3_async_handle_jukebox 2021-08-27 16:36:21 -04:00
nfs3super.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
nfs3xdr.c NFS: Default change_attr_type to NFS4_CHANGE_TYPE_IS_UNDEFINED 2021-10-03 20:49:06 -04:00
nfs4_fs.h NFSv4: Add support for application leases underpinned by a delegation 2021-06-13 19:36:28 -04:00
nfs4client.c NFSv4.1 add network transport when session trunking is detected 2021-08-27 16:37:41 -04:00
nfs4file.c NFSv4.2: remove restriction of copy size for inter-server copy. 2021-08-10 14:18:35 -04:00
nfs4getroot.c
nfs4idmap.c NFS: Only reference user namespace from nfs4idmap struct instead of cred 2020-10-13 15:56:54 -04:00
nfs4idmap.h
nfs4namespace.c nfs: Fix memory leak of export_path 2020-06-26 08:43:14 -04:00
nfs4proc.c NFSv4: Retrieve ACCESS on open if we're not using NFS4_CREATE_EXCLUSIVE 2021-10-03 20:49:06 -04:00
nfs4renewd.c treewide: remove editor modelines and cruft 2021-05-07 00:26:34 -07:00
nfs4session.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
nfs4session.h NFSv4.1: use BITS_PER_LONG macro in nfs4session.h 2020-12-14 06:51:07 -05:00
nfs4state.c NFS: Fix a few more clear_bit() instances that need release semantics 2021-10-03 20:49:06 -04:00
nfs4super.c NFS: Adjust fs_context error logging 2021-01-10 13:32:39 -05:00
nfs4sysctl.c
nfs4trace.c pNFS/flexfiles: Add tracing for layout errors 2020-01-15 10:54:33 -05:00
nfs4trace.h treewide: Add missing semicolons to __assign_str uses 2021-06-30 09:19:14 -04:00
nfs4xdr.c NFS client updates for Linux 5.13 2021-05-07 11:23:41 -07:00
nfs42.h NFSv4.2: add the extended attribute proc functions. 2020-07-13 17:52:45 -04:00
nfs42proc.c NFSv42: Don't force attribute revalidation of the copy offload source 2021-04-14 10:42:24 -04:00
nfs42xattr.c nfs: Fix a typo in the file nfs42xattr.c 2021-04-05 09:04:20 -04:00
nfs42xdr.c NFS client updates for Linux 5.11 2020-12-17 12:15:03 -08:00
nfs.h
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 NFS: Instrument i_size_write() 2021-10-10 11:05:54 +02:00
pagelist.c NFS: Fix a few more clear_bit() instances that need release semantics 2021-10-03 20:49:06 -04:00
pnfs_dev.c NFSv4/pnfs: Add tracing for the deviceid cache 2020-12-16 17:25:24 -05:00
pnfs_nfs.c NFS: Fix up commit deadlocks 2021-10-20 18:09:45 -04:00
pnfs.c NFSv4/pnfs: The layout barrier indicate a minimal value for the seqid 2021-08-09 16:57:04 -04:00
pnfs.h NFS: Fix an Oops in pnfs_mark_request_commit() 2021-10-20 18:09:53 -04:00
proc.c NFS: Default change_attr_type to NFS4_CHANGE_TYPE_IS_UNDEFINED 2021-10-03 20:49:06 -04:00
read.c NFS: Always provide aligned buffers to the RPC read layers 2021-08-30 13:21:38 -04:00
super.c NFSv4 introduce max_connect mount options 2021-08-27 16:37:17 -04:00
symlink.c nfs: pass the correct prototype to read_cache_page 2019-05-09 16:26:57 -04:00
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 NFS: Fix open coded versions of nfs_set_cache_invalid() 2021-03-08 16:13:55 -05:00
write.c NFS: Fix up commit deadlocks 2021-10-20 18:09:45 -04:00