Patent ID: 7478165

Claim:
One or more computer-readable storage media containing a program for reconstructing a data object on secondary storage, wherein the data object is transmitted from a remote source using a data carousel of erasure-encoded blocks, the erasure-encoded blocks being encoded in groups that represent contiguous data blocks of the data object, wherein the erasure-encoded blocks of respective groups are transmitted non-contiguously, the program comprising the following steps: allocating secondary storage for the data object and determining locations in the allocated secondary storage for the respective data blocks represented by sets of contiguous groups of erasure-encoded blocks; receiving the erasure-encoded blocks; buffering contiguously-received erasure-encoded blocks in a primary memory buffer as long as the contiguously-received erasure-encoded blocks are from a common set of groups; while receiving, repeatedly selecting one set of groups and writing the erasure-encoded blocks of said set from the primary memory buffer to the determined location in the allocated secondary storage for the contiguous data blocks represented by the selected set of groups; wherein the selecting step comprises: if possible, selecting a set of groups having at least a predefined number b of erasure-encoded blocks buffered in the primary memory buffer; after receiving and writing the erasure-encoded blocks for a particular set of groups, reading the particular set of groups group into primary memory from secondary storage; decoding the erasure-encoded blocks of the particular set of groups to produce the data blocks represented by the given set of groups; replacing the erasure-encoded blocks of the given set of groups group in secondary storage with the decoded blocks of the data object to construct the data object in the allocated secondary storage; and wherein the primary buffer memory buffer has a size of bc +b−c +1 blocks, where c is the number of groups in a set of groups.