]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
NFS: nfs_async_write_reschedule_io must not recurse into the writeback code
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 1 Aug 2022 18:16:51 +0000 (14:16 -0400)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Tue, 2 Aug 2022 20:03:12 +0000 (16:03 -0400)
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>
fs/nfs/write.c

index 16d166bc4099d835cf06ca3f16311c05027abb57..4adf2b488da18f9f2029c4f685ba117e750316a5 100644 (file)
@@ -1444,8 +1444,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 = {