"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."
Ok, so I think what's happening here is
1) Write data
2) Busy filesystem or something makes the write of the
extent delayed
3) An update to that data attempts to get written
4) The delayed extent gets replaced with new data, but then marked as written here
instead of when it hits the platters
5) Now data loss has happened because there are no
delayed buffers
I might be wrong with this breakdown. It's hard to tell. It seems that the management of delayed extents is not as robust as it should be.
edit: this type of problem wouldn't affect a COW filesystem because when you overwrite existing data you aren't actually overwriting it, you're writing new data and updating the map of where to find the entire file contents.
Ok, so I think what's happening here is
I might be wrong with this breakdown. It's hard to tell. It seems that the management of delayed extents is not as robust as it should be.http://www.spinics.net/lists/linux-ext4/msg47782.html
edit: this type of problem wouldn't affect a COW filesystem because when you overwrite existing data you aren't actually overwriting it, you're writing new data and updating the map of where to find the entire file contents.