Patent ID: 7702954
Filing Date: 2010-04-20
Classification: G11B

Abstract:
1. A data storage apparatus that performs at least write processing for a storage medium on which data is allocated in units of a first block having a predetermined data length, the first block being allocated in units of a second block constituted by a plurality of first blocks, and a third block having the predetermined data length being allocated in correspondence with the second block, comprising: a calculation section that performs calculation for each bit position using data of all first blocks in an update target on the storage medium, the update target being a second block specified, and outputs a result of the calculation as calculation data; a write section that writes the calculation data output from the calculation section in a fourth block on the storage medium, the fourth block being a third block corresponding to the update target; and a read section that reads out data from a read target on the storage medium and, in the case where it is determined that a plurality of data can be read out from the read target, sets the read target as a duplication block, reads out data from first blocks on the storage medium other than the duplication block which belong to a second block including the read target so as to set the read out data as determination data, reads out data from a fifth block on the storage medium so as to set the read out data as redundant data, sets one of the plurality of data that can be read out from the duplication block as selection data, and determines whether the selection data is correct data using the determination data, redundant data, and selection data, the read target being a first block specified, the fifth block being a third block corresponding to the read target, wherein the calculation section initializes the calculation data, sequentially sets the respective first blocks in the update target as input data of the calculation, performs calculation for each bit position using the input data and calculation data, stores a result of the calculation as new calculation data, and repeats the calculation and storage for all the input data to output the calculation data.