Prior to linux-2.6.33 only O_DSYNC semantics were implemented and they used the O_SYNC flag. As of linux-2.6.33 this behavior was properly split in to O_SYNC and O_DSYNC respectively.