On Thu, Jul 09, 2020 at 10:10:38AM -0700, Darrick J. Wong wrote: > On Thu, Jul 09, 2020 at 06:05:19PM +0100, Matthew Wilcox wrote: > > On Thu, Jul 09, 2020 at 09:09:26AM -0700, Darrick J. Wong wrote: > > > On Thu, Jul 09, 2020 at 12:25:27PM +1000, Dave Chinner wrote: > > > > - */ > > > > - ret = invalidate_inode_pages2_range(mapping, > > > > - pos >> PAGE_SHIFT, end >> PAGE_SHIFT); > > > > - if (ret) > > > > - dio_warn_stale_pagecache(iocb->ki_filp); > > > > - ret = 0; > > > > + if (iov_iter_rw(iter) == WRITE) { > > > > + /* > > > > + * Try to invalidate cache pages for the range we're direct > > > > + * writing. If this invalidation fails, tough, the write will > > > > + * still work, but racing two incompatible write paths is a > > > > + * pretty crazy thing to do, so we don't support it 100%. > > > > + */ > > > > + ret = invalidate_inode_pages2_range(mapping, > > > > + pos >> PAGE_SHIFT, end >> PAGE_SHIFT); > > > > + if (ret) > > > > + dio_warn_stale_pagecache(iocb->ki_filp); > > > > + ret = 0; > > > > > > > > - if (iov_iter_rw(iter) == WRITE && !wait_for_completion && > > > > - !inode->i_sb->s_dio_done_wq) { > > > > - ret = sb_init_dio_done_wq(inode->i_sb); > > > > - if (ret < 0) > > > > - goto out_free_dio; > > > > + if (!wait_for_completion && > > > > + !inode->i_sb->s_dio_done_wq) { > > > > + ret = sb_init_dio_done_wq(inode->i_sb); > > > > + if (ret < 0) > > > > + goto out_free_dio; > > ...and yes I did add in the closing brace here. :P Doh! I forgot to refresh the patch after fixing that. :/ Thanks! Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx