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

Commit aa5accea authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFS: Ensure that buffered writes wait for O_DIRECT writes to complete



The O_DIRECT code will grab the inode->i_mutex and flush out buffered
writes, before scheduling a read or a write. However there is no
equivalent in the buffered write code to wait for O_DIRECT to complete.

Fixes a reported issue in xfstests generic/133, when first performing an
O_DIRECT write followed by a buffered write.

Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
Tested-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent be36e185
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -372,6 +372,10 @@ static int nfs_write_begin(struct file *file, struct address_space *mapping,
				 nfs_wait_bit_killable, TASK_KILLABLE);
	if (ret)
		return ret;
	/*
	 * Wait for O_DIRECT to complete
	 */
	nfs_inode_dio_wait(mapping->host);

	page = grab_cache_page_write_begin(mapping, index, flags);
	if (!page)