On Thu, May 07, 2009 at 04:09:29PM +0530, Aneesh Kumar K.V wrote: > ext4_get_blocks_wrap does a block lookup requesting to > allocate new blocks. A lookup of blocks in prealloc area > result in setting the unwritten flag in buffer_head. So > a write to an unwritten extent will cause the buffer_head > to have unwritten and mapped flag set. Clear hte unwritten > buffer_head flag before requesting to allocate blocks. > > Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxxxxxxx> I've rewritten the commit changelog to this, which I believe more accurately describes the patch. Comments, please? ext4: Clear the unwritten buffer_head flag after the extent is initialized From: "Aneesh Kumar K.V" <aneesh.kumar@xxxxxxxxxxxxxxxxxx> The BH_Unwritten flag indicates that the buffer is allocated on disk but has not been written; that is, the disk was part of a persistent preallocation area. That flag should only be set when a get_blocks() function is looking up a inode's logical to physical block mapping. When ext4_get_blocks_wrap() is called with create=1, the uninitialized extent is converted into an initialized one, so the BH_Unwritten flag is no longer appropriate. Hence, we need to make sure the BH_Unwritten is not left set, to avoid the ensuing confusion and hilarty. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxxxxxxx> Signed-off-by: "Theodore Ts'o" <tytso@xxxxxxx> - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html