Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

NFSv4.1/pnfs: Ensure that writes respect the O_SYNC flag when doing O_DIRECT

If the caller does not specify the O_SYNC flag, then it is legitimate
to return from O_DIRECT without doing a pNFS layoutcommit operation.
However if the file is opened O_DIRECT|O_SYNC then we'd better get it
right.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>

+3
+1
fs/nfs/direct.c
··· 1034 1034 if (i_size_read(inode) < iocb->ki_pos) 1035 1035 i_size_write(inode, iocb->ki_pos); 1036 1036 spin_unlock(&inode->i_lock); 1037 + generic_write_sync(file, pos, result); 1037 1038 } 1038 1039 } 1039 1040 nfs_direct_req_release(dreq);
+1
fs/nfs/file.c
··· 281 281 282 282 trace_nfs_fsync_enter(inode); 283 283 284 + nfs_inode_dio_wait(inode); 284 285 do { 285 286 ret = filemap_write_and_wait_range(inode->i_mapping, start, end); 286 287 if (ret != 0)
+1
fs/nfs/nfs4file.c
··· 104 104 105 105 trace_nfs_fsync_enter(inode); 106 106 107 + nfs_inode_dio_wait(inode); 107 108 do { 108 109 ret = filemap_write_and_wait_range(inode->i_mapping, start, end); 109 110 if (ret != 0)