Re: [PATCH 2/7] xfs: don't zero partial page cache pages during O_DIRECT writes

Christoph Hellwig
2014-08-29T00:39:35Z

On Thu, Aug 28, 2014 at 09:49:06PM +1000, Dave Chinner wrote:
> From: Chris Mason <clm@fb.com>
>
> xfs is using truncate_pagecache_range to invalidate the page cache
> during DIO reads. This is different from the other filesystems who
> only invalidate pages during DIO writes.
>
> truncate_pagecache_range is meant to be used when we are freeing the
> underlying data structs from disk, so it will zero any partial
> ranges in the page. This means a DIO read can zero out part of the
> page cache page, and it is possible the page will stay in cache.
>
> buffered reads will find an up to date page with zeros instead of
> the data actually on disk.
>
> This patch fixes things by using invalidate_inode_pages2_range
> instead. It preserves the page cache invalidation, but won't zero
> any pages.
>
> [dchinner: catch error and warn if it fails. Comment.]

Looks good,

Reviewed-by: Christoph Hellwig <hch@lst.de>