Mike Snitzer
5ae31c54cf
NFS: fix nfs_release_folio() to not deadlock via kcompactd writeback
...
commit ce6d9c1c2b upstream.
Add PF_KCOMPACTD flag and current_is_kcompactd() helper to check for it so
nfs_release_folio() can skip calling nfs_wb_folio() from kcompactd.
Otherwise NFS can deadlock waiting for kcompactd enduced writeback which
recurses back to NFS (which triggers writeback to NFSD via NFS loopback
mount on the same host, NFSD blocks waiting for XFS's call to
__filemap_get_folio):
6070.550357] INFO: task kcompactd0:58 blocked for more than 4435 seconds.
{---
[58] "kcompactd0"
[<0>] folio_wait_bit+0xe8/0x200
[<0>] folio_wait_writeback+0x2b/0x80
[<0>] nfs_wb_folio+0x80/0x1b0 [nfs]
[<0>] nfs_release_folio+0x68/0x130 [nfs]
[<0>] split_huge_page_to_list_to_order+0x362/0x840
[<0>] migrate_pages_batch+0x43d/0xb90
[<0>] migrate_pages_sync+0x9a/0x240
[<0>] migrate_pages+0x93c/0x9f0
[<0>] compact_zone+0x8e2/0x1030
[<0>] compact_node+0xdb/0x120
[<0>] kcompactd+0x121/0x2e0
[<0>] kthread+0xcf/0x100
[<0>] ret_from_fork+0x31/0x40
[<0>] ret_from_fork_asm+0x1a/0x30
---}
[akpm@linux-foundation.org: fix build]
Link: https://lkml.kernel.org/r/20250225022002.26141-1-snitzer@kernel.org
Fixes: 96780ca55e ("NFS: fix up nfs_release_folio() to try to release the page")
Signed-off-by: Mike Snitzer <snitzer@kernel.org >
Cc: Anna Schumaker <anna.schumaker@oracle.com >
Cc: Trond Myklebust <trond.myklebust@hammerspace.com >
Cc: <stable@vger.kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2025-03-13 13:01:58 +01:00
..
2025-01-17 13:40:59 +01:00
2024-10-02 17:23:23 -04:00
2024-09-25 11:01:27 +02:00
2024-12-19 18:13:14 +01:00
2024-09-11 08:55:35 +00:00
2024-10-11 15:59:15 -07:00
2024-12-14 20:03:12 +01:00
2024-12-14 20:03:26 +01:00
2024-10-08 17:44:27 +02:00
2024-09-23 14:17:08 -07:00
2025-02-17 10:04:51 +01:00
2024-12-14 20:03:40 +01:00
2024-10-02 17:23:23 -04:00
2025-02-17 10:04:53 +01:00
2025-02-27 04:30:17 -08:00
2025-02-21 14:01:35 +01:00
2024-11-04 14:23:09 +01:00
2024-10-15 07:54:16 +02:00
2025-03-07 18:25:27 +01:00
2025-02-08 09:58:15 +01:00
2024-09-27 09:55:30 -07:00
2024-12-27 14:02:13 +01:00
2024-11-06 21:31:36 +01:00
2024-12-27 14:01:57 +01:00
2024-11-07 11:18:52 +00:00
2024-09-13 15:41:42 +02:00
2024-10-16 13:17:45 +02:00
2025-02-17 10:04:43 +01:00
2025-01-09 13:33:32 +01:00
2024-09-27 12:10:45 -07:00
2024-09-25 14:56:40 -07:00
2024-09-13 13:22:09 -06:00
2025-02-21 14:01:21 +01:00
2025-03-07 18:25:40 +01:00
2024-10-30 12:13:46 -07:00
2024-10-24 10:17:12 -07:00
2024-12-19 18:13:09 +01:00
2025-02-08 09:57:30 +01:00
2024-09-16 08:54:30 +02:00
2024-09-11 09:58:30 -07:00
2025-02-17 10:05:06 +01:00
2025-02-21 14:01:35 +01:00
2024-09-21 09:44:57 -07:00
2024-12-14 20:03:38 +01:00
2024-12-14 20:04:16 +01:00
2024-10-09 16:57:57 -04:00
2025-03-13 13:01:58 +01:00
2024-12-05 14:02:45 +01:00
2024-12-05 14:02:45 +01:00
2025-03-07 18:25:35 +01:00
2025-03-07 18:25:36 +01:00
2024-09-18 07:52:24 +02:00
2025-02-08 09:56:49 +01:00
2024-10-01 20:43:44 +02:00
2024-09-18 15:03:58 +02:00
2024-09-27 12:10:45 -07:00
2024-09-27 08:18:43 -07:00
2024-10-25 16:07:03 -05:00
2024-09-22 18:47:51 +02:00
2024-12-14 20:04:09 +01:00
2025-02-21 14:01:34 +01:00
2024-10-02 17:23:23 -04:00
2025-02-08 09:58:06 +01:00
2024-12-14 20:03:35 +01:00
2025-02-08 09:57:05 +01:00
2024-12-14 20:03:12 +01:00
2024-12-14 20:03:48 +01:00
2024-09-19 10:18:15 +02:00
2024-09-29 21:52:29 -04:00
2024-09-23 09:35:36 -07:00
2025-01-09 13:33:47 +01:00
2024-09-12 22:30:37 +09:00
2024-10-01 17:01:40 +02:00
2024-10-21 14:30:26 +02:00
2025-02-01 18:39:37 +01:00
2024-10-02 15:14:29 +02:00
2024-09-24 16:10:12 +02:00
2025-02-08 09:57:11 +01:00
2024-12-05 14:01:18 +01:00
2024-10-15 18:46:25 +02:00
2025-02-17 10:05:31 +01:00
2025-01-23 17:23:03 +01:00
2024-10-17 00:28:10 -07:00
2024-09-26 14:01:43 -07:00
2024-09-13 07:27:36 -07:00
2024-12-27 14:02:15 +01:00
2024-09-21 12:46:00 +02:00
2025-02-08 09:57:15 +01:00
2025-01-09 13:33:42 +01:00
2024-11-02 22:28:58 -07:00
2024-12-05 14:01:35 +01:00
2024-12-27 14:02:17 +01:00
2025-01-17 13:40:34 +01:00
2024-09-22 18:48:00 +02:00
2024-09-12 12:20:42 +02:00
2024-12-05 14:01:22 +01:00
2025-02-08 09:57:58 +01:00
2024-12-09 10:41:08 +01:00
2024-09-20 18:28:26 +03:00
2024-12-05 14:03:03 +01:00
2024-09-25 20:12:58 +09:00
2024-10-28 21:40:39 -07:00
2025-02-17 10:05:06 +01:00
2024-12-14 20:04:01 +01:00
2024-12-05 14:02:46 +01:00
2024-09-24 14:54:26 -07:00
2024-11-11 00:00:37 -08:00
2025-01-09 13:33:54 +01:00
2025-01-09 13:33:54 +01:00
2025-01-09 13:33:54 +01:00
2024-11-05 16:49:55 -08:00
2024-12-05 14:03:08 +01:00
2024-11-07 14:14:58 -08:00
2024-09-23 11:07:55 +02:00
2025-01-17 13:40:50 +01:00
2025-02-08 09:57:23 +01:00
2024-09-13 07:36:02 +02:00
2024-12-19 18:13:19 +01:00
2025-02-27 04:30:18 -08:00
2024-09-26 13:03:03 +02:00
2025-01-17 13:40:35 +01:00
2024-12-05 14:02:01 +01:00
2024-09-20 19:31:03 -04:00
2025-02-08 09:57:59 +01:00
2024-10-03 16:19:13 -04:00
2024-09-23 15:03:29 -04:00
2024-09-23 15:03:30 -04:00
2024-12-05 14:02:27 +01:00
2024-09-11 20:53:45 -07:00
2024-12-05 14:01:32 +01:00
2024-12-05 14:03:08 +01:00
2024-12-05 14:03:08 +01:00
2024-12-27 14:02:20 +01:00
2024-09-20 17:53:17 -07:00
2025-02-21 14:01:25 +01:00
2024-09-19 14:25:32 -05:00
2025-02-27 04:30:15 -08:00
2024-10-17 00:28:07 -07:00
2025-02-08 09:56:53 +01:00
2024-09-17 01:06:59 -07:00
2024-09-11 11:06:11 +01:00
2024-10-30 17:11:28 +01:00
2025-01-23 17:22:57 +01:00
2025-02-08 09:58:16 +01:00
2025-01-23 17:22:53 +01:00
2024-10-02 17:23:23 -04:00
2025-02-08 09:57:07 +01:00
2024-12-05 14:03:07 +01:00
2025-03-07 18:25:43 +01:00
2024-09-18 08:53:53 +02:00
2024-09-18 08:53:53 +02:00
2024-12-05 14:01:23 +01:00
2024-09-20 00:20:06 -06:00
2024-12-14 20:03:18 +01:00
2025-03-13 13:01:58 +01:00
2025-02-01 18:39:35 +01:00
2024-10-09 12:47:18 -07:00
2024-12-05 14:01:23 +01:00
2024-09-11 15:47:13 +02:00
2025-02-27 04:30:14 -08:00
2024-09-17 01:07:00 -07:00
2025-02-08 09:57:07 +01:00
2024-09-11 20:44:31 -07:00
2024-09-11 20:44:31 -07:00
2025-02-27 04:30:19 -08:00
2024-09-21 07:29:05 -07:00
2024-09-18 07:52:24 +02:00
2025-03-07 18:25:32 +01:00
2024-11-13 19:29:46 -08:00
2024-12-05 14:01:23 +01:00
2024-12-14 20:03:32 +01:00
2024-12-19 18:13:24 +01:00
2024-09-19 10:18:15 +02:00
2024-10-30 20:14:11 -07:00
2024-10-11 10:49:32 +02:00
2024-10-27 10:36:04 +01:00
2024-12-14 20:04:16 +01:00
2024-11-13 21:10:45 +02:00
2025-01-02 10:34:21 +01:00
2024-09-25 23:23:44 +09:00
2024-10-30 11:38:10 -10:00
2024-09-12 12:20:39 +02:00
2024-10-02 17:23:23 -04:00
2024-09-17 01:07:01 -07:00
2024-11-07 14:14:59 -08:00
2025-01-23 17:23:02 +01:00
2024-12-09 10:41:06 +01:00
2024-10-02 17:21:59 -07:00
2024-12-19 18:12:59 +01:00
2024-11-11 00:00:37 -08:00
2025-01-02 10:34:10 +01:00
2024-12-27 14:02:20 +01:00
2025-01-17 13:40:33 +01:00