That is possible, but since flash uses ECC the controller should notice corruption.
Also, does the OP know whether any write buffering is going on?
There shouldn't be, since he's already using O_DIRECT.
why some writes took much longer than others
That's probably caused by erasing and data copying, since one erase is required for every ~1MB of data written.
If y'all are really interested in this topic, there are some good academic papers.
http://nvsl.ucsd.edu/ftest/
That is possible, but since flash uses ECC the controller should notice corruption.
Also, does the OP know whether any write buffering is going on?
There shouldn't be, since he's already using O_DIRECT.
why some writes took much longer than others
That's probably caused by erasing and data copying, since one erase is required for every ~1MB of data written.
If y'all are really interested in this topic, there are some good academic papers.
http://nvsl.ucsd.edu/ftest/