From: Trond Myklebust Date: Mon, 1 Aug 2022 18:16:51 +0000 (-0400) Subject: NFS: nfs_async_write_reschedule_io must not recurse into the writeback code X-Git-Tag: v5.15.174~515 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=31545f4b7cdb6da6a0519120b8c96dc40f186aac;p=thirdparty%2Fkernel%2Fstable.git NFS: nfs_async_write_reschedule_io must not recurse into the writeback code 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 Signed-off-by: Greg Kroah-Hartman --- diff --git a/fs/nfs/write.c b/fs/nfs/write.c index 3d06bad2760da..bb401d37fe266 100644 --- a/fs/nfs/write.c +++ b/fs/nfs/write.c @@ -1422,8 +1422,6 @@ static void nfs_async_write_error(struct list_head *head, int error) 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 = {