On Thu, Aug 21, 2014 at 03:09:12PM +1000, Dave Chinner wrote: > From: Dave Chinner <dchinner@xxxxxxxxxx> > > Now we are not doing silly things with dirtying buffers beyond EOF > and using invalidation correctly, we can finally reduce the ranges of > writeback and invalidation used by direct IO to match that of the IO > being issued. > > Bring the writeback and invalidation ranges back to match the > generic direct IO code - this will greatly reduce the perturbation > of cached data when direct IO and buffered IO are mixed, but still > provide the same buffered vs direct IO coherency behaviour we > currently have. > > Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx> > --- Reviewed-by: Brian Foster <bfoster@xxxxxxxxxx> > fs/xfs/xfs_file.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c > index 19917fa..de5368c 100644 > --- a/fs/xfs/xfs_file.c > +++ b/fs/xfs/xfs_file.c > @@ -291,7 +291,7 @@ xfs_file_read_iter( > if (inode->i_mapping->nrpages) { > ret = filemap_write_and_wait_range( > VFS_I(ip)->i_mapping, > - pos, -1); > + pos, pos + size - 1); > if (ret) { > xfs_rw_iunlock(ip, XFS_IOLOCK_EXCL); > return ret; > @@ -303,7 +303,8 @@ xfs_file_read_iter( > * happen on XFS. Warn if it does fail. > */ > ret = invalidate_inode_pages2_range(VFS_I(ip)->i_mapping, > - pos >> PAGE_CACHE_SHIFT, -1); > + pos >> PAGE_CACHE_SHIFT, > + (pos + size - 1) >> PAGE_CACHE_SHIFT); > WARN_ON_ONCE(ret); > ret = 0; > } > @@ -641,7 +642,7 @@ xfs_file_dio_aio_write( > > if (mapping->nrpages) { > ret = filemap_write_and_wait_range(VFS_I(ip)->i_mapping, > - pos, -1); > + pos, pos + count - 1); > if (ret) > goto out; > /* > @@ -650,7 +651,8 @@ xfs_file_dio_aio_write( > * happen on XFS. Warn if it does fail. > */ > ret = invalidate_inode_pages2_range(VFS_I(ip)->i_mapping, > - pos >> PAGE_CACHE_SHIFT, -1); > + pos >> PAGE_CACHE_SHIFT, > + (pos + count - 1) >> PAGE_CACHE_SHIFT); > WARN_ON_ONCE(ret); > ret = 0; > } > -- > 2.0.0 > > _______________________________________________ > xfs mailing list > xfs@xxxxxxxxxxx > http://oss.sgi.com/mailman/listinfo/xfs _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs