In SCSI there are conditions when a command, including FLUSH
(SYNC_CACHE), failed which don't imply lost data. For them the caller
expected to retry the failed command. Most common cases are Unit
Attentions and TASK QUEUE FULL status.
ATA expects the command to be retried as well because a failed flush
indicates the specific sector is lost (unless the host still has a copy
of course - which is *very* likely although we don't use it) but the rest
of the flush transaction can be retried to continue to flush sectors
beyond the failed one.
Alan