Sequence number metadata which identifies an input/output (I/O) operation,
such as a full stripe write on a redundant array of independent disks
(RAID) mass storage system, and revision number metadata which identifies
an I/O operation such as a read modify write operation on user data
recorded in components of the stripe, are used in an error detection and
correction technique, along with parity metadata, to detect and correct
silent errors arising from inadvertent data path and drive data
corruption. An error arising after a full stripe write is detected by a
difference in sequence numbers for all of the components of user data in
the stripe. An error arising after a read modify write is detected by a
revision number which occurred before the correct revision number. The
errors in both cases are corrected by using the parity metadata for the
entire collection of user data and the correct information from the other
components of the user data and metadata, and applying this information to
an error correcting algorithm. The technique may be executed in
conjunction with a read I/O operation without incurring a substantial
computational overhead penalty.