A method for storing a data block, involving storing the data block in a
storage pool, obtaining a data block location, determining a checksum
function for the data block, calculating a data block checksum using the
checksum function for the data block, and 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.