> It might be expected behaviour with async direct IO. > Two threads writing with O_DIRECT io to the same address could result in > different data on the two devices. This doesn't seem to me to be a > credible use-case though. Why would you ever want to do that in > practice? May be as a method to generate a file with random data? Why wouldn't somebody just run fio on a file and then expect it to stay the same, as long as it is just being read. Or some key-value or object database, where the same key is updated periodically and the user doesn't care which update goes first, but he would expect to read out only the same value, as long as there are no writes. Say just store temperature of a sensor for some time. Then stop updating it - only read it. Wouldn't it be surprising, that suddenly the value changes, if one leg of the underlying raid1 breaks? Databases use AIO and direct on top of a file - do they need to consider that they need additional precautions just for the case there is a raid1 underneath the filesystem they are sitting on?