Re: [PATCH v5 00/22] Rewrite XIP code and add XIP support to ext4
From: Ross Zwisler
Date: Fri Jan 31 2014 - 00:45:36 EST
On Fri, 31 Jan 2014, Dave Chinner wrote:
> The read/write path is broken, Willy. We can't map arbitrary byte
> ranges to the DIO subsystem. I'm now certain that the data
> corruptions I'm seeing are in sub-sector regions from unaligned IOs
> from userspace. We still need to use the buffered IO path for non
> O_DIRECT IO to avoid these problems. I think I've worked out a way
> to short-circuit page cache lookups for the buffered IO path, so
> stay tuned....
Hi Dave,
I found an issue that would cause reads to return bad data earlier this week,
and sent a response to "[PATCH v5 22/22] XIP: Add support for unwritten
extents". Just wanted to make sure you're not running into that issue.
I'm also currently chasing a write corruption where we lose the data that we
had just written because ext4 thinks the portion of the extent we had just
written needs to be converted from an unwritten extent to a written extent, so
it clears the data to all zeros via:
xip_clear_blocks+0x53/0xd7
ext4_map_blocks+0x306/0x3d9 [ext4]
jbd2__journal_start+0xbd/0x188 [jbd2]
ext4_convert_unwritten_extents+0xf9/0x1ac [ext4]
ext4_direct_IO+0x2ca/0x3a5 [ext4]
This bug can be easily reproduced by fallocating an empty file up to a page,
and then writing into that page. The first write is essentially lost, and the
page remains all zeros. Subsequent writes succeed.
I'm still in the process of figuring out exactly why this is happening, but
unfortunately I won't be able to look at again until next week. I don't know
if it's related to the corruption that you're seeing or not, just wanted to
let you know.
- Ross
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/