“The short version of events is that an apparent silent data corruption bug was discovered, which is kind of the worst case scenario for a data storage system.”
The bug lived in the dirty check for lseek(). It asked whether a dnode was on the dirty list, not whether it was dirty. For a window of tens of CPU instructions, a file copy could see holes that were not there and write zeroes into the copy. The filesystem sold on never losing your data shipped a race that silently did exactly that.