Patent ID: 8359430

Claim:
A method comprising: identifying, by a filesystem process in a data storage server, a first plurality of optimizable data blocks during a read operation on a related data block; identifying, by the filesystem process, a second plurality of optimizable data blocks during a write operation on a related data block; posting, by the filesystem process, a plurality of read requests to a queue, the read requests prepared by the filesystem process to read a third plurality of data blocks into a cache memory from a mass storage device, the third plurality of data blocks comprising a subset of the first plurality of optimizable data blocks identified during the read operation and a subset of the second plurality of optimizable data blocks identified during the write operation; retrieving, by a reading process in the data storage server, a read request from the queue; delivering, by the reading process, data blocks corresponding to the retrieved read request to the cache memory; and writing, by a writing process in the data storage server, a fourth plurality of data blocks to a mass storage device as a result of a cache flush, the fourth plurality of data blocks comprising a subset of the third plurality of data blocks that had been delivered to the cache memory prior to the cache flush, wherein if fewer than all of the second plurality of data blocks have been delivered to the cache memory before the cache flush, then the fourth plurality of data blocks does not include any of the second plurality of data blocks.