[PATCH] xfs: only SetPageUptodate if all buffers are uptodate

Christoph Hellwig hch at infradead.org
Wed Apr 20 05:35:21 CDT 2011


On Tue, Apr 19, 2011 at 06:40:28AM -0500, Ben Myers wrote:
> xfs_vm_writepage and xfs_page_convert set a page uptodate if it is determined
> that all of the buffer_heads attached to that page are uptodate.
> 
> Currently we use the flag variable 'uptodate'.  The flag is initially set = 1
> and it is cleared if a !buffer_uptodate buffer is encountered.  In addition we
> check that bh == head in order to ensure that all of the buffer_heads have been
> checked.  However, it is possible to break out of the buffer_head loop early
> having processed only the first buffer.  This leaves uptodate == 1 and bh ==
> head, so the uptodate bit can be set on a page even if not all of the buffers
> have been checked.  This can lead to data corruption on platforms with > 1
> buffer per page.

Dou have a testcase to reproduce this issue?




More information about the xfs mailing list