Patent ID: 8655919

Claim:
A storage system, comprising: a processing unit; a storage device for storing data files; a storage controller for controlling the storage device; an integrity protection controller for providing integrity protection for a data file utilizing a hash tree computed based on said data file, the hash tree includes a plurality of hash values corresponding to a plurality of data blocks of said data file; wherein: the integrity protection controller is provided with a look-up table; the look-up table comprises predefined updating intervals; the look-up table comprises a x-axis dependency on a current processing load and a y-axis dependency on a current frequency of block updates; the integrity protection controller is provided with a cluster detector; the cluster detector comprises a first shift register and a second shift register which enqueues references to updated data; wherein the integrity protection controller is configured for: determining an updating for the hash tree based on one of: update intervals in the look-table corresponding to the current processing load and the current frequency of the block updates determined by the integrity controller; and a comparison of the first newly written data in the shift registers to the first previously written data in the shift register performed by the cluster detector; adding the a parent node to a second shift register in response to determining the first newly written data and the first previously written data have the same first parent node; comparing second newly written data in the shift registers to second previously written data in the shift register with the cluster detector; adding a second parent node to a second shift register in response to determining the second newly written data and the second previously written data have the same second parent node; triggering an update in response to determining the first parent data in the second shift register and the second parent data in the second shift register have the same parent node; and in response to an update: marking the hash value of a leaf node as dirty when the corresponding data block is updated; marking all nodes on a path between the dirty leaf node and a root node as dirty; determining the updating frequency for the hash tree based on the number of dirty nodes of the hash tree relative to a total number of nodes of the hash tree; and receiving feedback about updates to said hash tree, said feedback comprising information indicating said updates are at least one of redundant, unnecessary or sub-optimal.