[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