]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
NFS: Add a cond_resched() to nfs_commit_release_pages()
authorTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 18 Dec 2017 19:39:13 +0000 (14:39 -0500)
committerSasha Levin <alexander.levin@microsoft.com>
Thu, 1 Mar 2018 03:09:51 +0000 (22:09 -0500)
[ Upstream commit 7f1bda447c9bd48b415acedba6b830f61591601f ]

The commit list can get very large, and so we need a cond_resched()
in nfs_commit_release_pages() in order to ensure we don't hog the CPU
for excessive periods of time.

Reported-by: Mike Galbraith <efault@gmx.de>
Cc: stable@vger.kernel.org
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
fs/nfs/write.c

index 51af4fff890f29c421630d4b5cbd91d9163433cd..209b39ef69dd0b2de113b5bad5305ac0ae2fb558 100644 (file)
@@ -1728,6 +1728,8 @@ static void nfs_commit_release_pages(struct nfs_commit_data *data)
                set_bit(NFS_CONTEXT_RESEND_WRITES, &req->wb_context->flags);
        next:
                nfs_unlock_and_release_request(req);
+               /* Latency breaker */
+               cond_resched();
        }
        nfss = NFS_SERVER(data->inode);
        if (atomic_long_read(&nfss->writeback) < NFS_CONGESTION_OFF_THRESH)