A method of reading data comprises receiving a request for a stripe of
erasure coded data, sending read messages to at least a quorum of storage
devices, and receiving at least the quorum of reply messages from the
devices. The quorum of the reply messages includes at least a minimum
number of stripe blocks needed to decode the data. The quorum meets a
quorum condition of a number such that any two selections of the number
of the stripe blocks intersect in the minimum number of the stripe
blocks. A method of writing data comprises generating a timestamp,
encoding the data, sending query messages including the timestamp to the
storage devices, receiving query reply messages from each of at least the
quorum of the devices, sending write messages to the devices, and
receiving a write reply message from each of at least the quorum of the
devices.