On Tue, Aug 13, 2019 at 07:35:40AM -0700, Darrick J. Wong wrote: > On Tue, Aug 13, 2019 at 10:58:42PM +1000, Matthew Bobrowski wrote: > > On Mon, Aug 12, 2019 at 10:34:29PM +0530, RITESH HARJANI wrote: > > > > + > > > > + if (ret >= 0 && iov_iter_count(from)) { > > > > + overwrite ? inode_unlock_shared(inode) : inode_unlock(inode); > > > > + return ext4_buffered_write_iter(iocb, from); > > > > + } > > > should not we copy code from "__generic_file_write_iter" which does below? > > > > > > 3436 /* > > > 3437 * We need to ensure that the page cache pages are > > > written to > > > 3438 * disk and invalidated to preserve the expected > > > O_DIRECT > > > 3439 * semantics. > > > 3440 */ > > > > Hm, I don't see why this would be required seeing as though the page cache > > invalidation semantics pre and post write are handled by iomap_dio_rw() and > > iomap_dio_complete(). But, I could be completely wrong here, so we may need to > > wait for some others to provide comments on this. > > iomap_dio_rw is supposed to zap the page cache before the write and > again afterwards (and whine if someone is racing buffered and direct > writes to the same file location), so ext4 shouldn't need to do that > itself. Thanks for confirming Darrick! I thought that was the case. --M