Patent ID: 7415653

Claim:
A method for storing a data block, comprising: storing the data block in a storage pool; obtaining a data block location associated with the data block; determining a checksum function for the data block; calculating a data block checksum using the checksum function for the data block; storing a first indirect block in the storage pool, wherein the first indirect block comprises the data block location, the data block checksum, and a checksum function ID corresponding to the checksum function for the data block; determining a checksum function for the first indirect block, wherein the checksum function for the first indirect block is associated with a checksum function ID corresponding to the checksum function for the first indirect block; calculating a first indirect block checksum using the checksum function for the first indirect block; obtaining a first indirect block location associated with the first indirect block; and storing a second indirect block in the storage pool, wherein the second indirect block comprises the first indirect block location, the first indirect block checksum, and the checksum function ID corresponding to the checksum function for the first indirect block.