NFS: Fix up commit deadlocks
[ Upstream commit 133a48abf6ecc535d7eddc6da1c3e4c972445882 ]
If O_DIRECT bumps the commit_info rpcs_out field, then that could lead
to fsync() hangs. The fix is to ensure that O_DIRECT calls
nfs_commit_end().
Fixes: 723c921e7d
("sched/wait, fs/nfs: Convert wait_on_atomic_t() usage to the new wait_var_event() API")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
91e43a8500
commit
10f2108717
@@ -620,7 +620,7 @@ static void nfs_direct_commit_complete(struct nfs_commit_data *data)
|
||||
nfs_unlock_and_release_request(req);
|
||||
}
|
||||
|
||||
if (atomic_dec_and_test(&cinfo.mds->rpcs_out))
|
||||
if (nfs_commit_end(cinfo.mds))
|
||||
nfs_direct_write_complete(dreq);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user