--- /dev/null
+From b1a28f2eb9ea7a5a1763fe53fe699aa0feae4231 Mon Sep 17 00:00:00 2001
+From: Trond Myklebust <trond.myklebust@hammerspace.com>
+Date: Mon, 1 Aug 2022 14:16:51 -0400
+Subject: NFS: nfs_async_write_reschedule_io must not recurse into the writeback code
+
+From: Trond Myklebust <trond.myklebust@hammerspace.com>
+
+commit b1a28f2eb9ea7a5a1763fe53fe699aa0feae4231 upstream.
+
+It is not safe to call filemap_fdatawrite_range() from
+nfs_async_write_reschedule_io(), since we're often calling from a page
+reclaim context. Just let fsync() redrive the writeback for us.
+
+Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/nfs/write.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+--- a/fs/nfs/write.c
++++ b/fs/nfs/write.c
+@@ -1422,8 +1422,6 @@ static void nfs_async_write_error(struct
+ static void nfs_async_write_reschedule_io(struct nfs_pgio_header *hdr)
+ {
+ nfs_async_write_error(&hdr->pages, 0);
+- filemap_fdatawrite_range(hdr->inode->i_mapping, hdr->args.offset,
+- hdr->args.offset + hdr->args.count - 1);
+ }
+
+ static const struct nfs_pgio_completion_ops nfs_async_write_completion_ops = {
mm-unconditionally-close-vmas-on-error.patch
mm-refactor-arch_calc_vm_flag_bits-and-arm64-mte-handling.patch
mm-resolve-faulty-mmap_region-error-path-behaviour.patch
+nfs-nfs_async_write_reschedule_io-must-not-recurse-into-the-writeback-code.patch