Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a00dd6c0 authored by Jeff Layton's avatar Jeff Layton Committed by Trond Myklebust
Browse files

NFS: don't use FLUSH_SYNC on WB_SYNC_NONE COMMIT calls (try #2)



WB_SYNC_NONE is supposed to mean "don't wait on anything". That should
also include not waiting for COMMIT calls to complete.

WB_SYNC_NONE is also implied when wbc->nonblocking and
wbc->for_background are set, so we can replace those checks in
nfs_commit_unstable_pages with a check for WB_SYNC_NONE.

Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
Reviewed-by: default avatarWu Fengguang <fengguang.wu@intel.com>
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 5c78f58e
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -1431,15 +1431,17 @@ static int nfs_commit_unstable_pages(struct inode *inode, struct writeback_contr
	int flags = FLUSH_SYNC;
	int ret = 0;

	/* Don't commit yet if this is a non-blocking flush and there are
	 * lots of outstanding writes for this mapping.
	if (wbc->sync_mode == WB_SYNC_NONE) {
		/* Don't commit yet if this is a non-blocking flush and there
		 * are a lot of outstanding writes for this mapping.
		 */
	if (wbc->sync_mode == WB_SYNC_NONE &&
	    nfsi->ncommit <= (nfsi->npages >> 1))
		if (nfsi->ncommit <= (nfsi->npages >> 1))
			goto out_mark_dirty;

	if (wbc->nonblocking || wbc->for_background)
		/* don't wait for the COMMIT response */
		flags = 0;
	}

	ret = nfs_commit_inode(inode, flags);
	if (ret >= 0) {
		if (wbc->sync_mode == WB_SYNC_NONE) {