A data storage subsystem that includes three data storage units, three
check storage units, and an array controller coupled to the three data
and three check storage units can tolerate failure of any three data and
check storage units failures can be occur before data stored on the data
storage subsystem is lost. Information is stored on the data storage
subsystem as a symmetric Maximum Distance Separation code, such as a
Winograd code, a Reed Solomon code, an EVENODD code or a derivative of an
EVENODD code. The array controller determines the contents of the check
storage units so that any three erasures of the data storage units and
the check storage units can be corrected by the array controller. The
array controller updates a block of data contained in any one of the data
storage units and the check storage units using only six IO operations.