Hello, Ive just read:
https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg886512.html
Can we expect any update tu CL Kernel in the near future? (We don see an update to kernel since months)
Thank you
https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg886512.html
Code:
Currently it is possible to lose whole file system block worth of data when we hit the specific interaction with unwritten and delayed extents in status extent tree. The problem is that when we ins ert delayed extent into extent status tree the only way to get rid of it is when we write out delayed buffer. However there is a limitation in the extent status tree implementation so that when inserting unwritten extent should there be even a single delayed block the whole unwritten extent would be marked as delayed. At this point, there is no way to get rid of the delayed extents, because there are no delayed buffers to write out. So when a we write into said unwritten extent we will convert it to written, but it still remains delayed. When we try to write into that block later ext4_da_map_blocks() will set the buffer new and delayed and map it to invalid block which causes the rest of the block to be zeroed loosing already written data. For now we can fix this by simply not allowing to se t delayed status on written extent in the extent status tree. Also add WARN_ON() to make sure that we notice if this happens in the future.
Thank you
Comment