[PATCH 2/7] xfs: don't zero partial page cache pages during O_DIRECT writes
Christoph Hellwig
hch at infradead.org
Thu Aug 28 19:39:34 CDT 2014
On Thu, Aug 28, 2014 at 09:49:06PM +1000, Dave Chinner wrote:
> From: Chris Mason <clm at 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 at lst.de>
More information about the xfs
mailing list