A method for caching a block, which includes receiving a request to store
the block in a cache and determining whether the cache is able to expand.
If the cache is not able to expand, then determining whether evictable
blocks are present in the cache and, if evictable blocks are present in
the cache determining whether a total size of the evictable blocks is
greater than or equal to a size of the block, evicting a sufficient
number of the evictable blocks from the cache and storing the block in
the cache, if the total size of the evictable blocks is greater than or
equal to the size of the block, and activating a cache throttle, if the
total size of the evictable blocks is less than the size of the block.