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-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html