Patent ID: 9740422
Date: 2017-08-22
CPC Classifications: G06F

Claim:
1. A computer-implemented method executed by a data storage system having a persistent storage, the method comprising: dividing first data into a first plurality of segments, wherein the first data includes a first block of data of a file that has been changed from a prior version of the file, wherein the first data is associated with a client application; generating a first plurality of fingerprints such that each segment of the first plurality of segments is associated with a respective fingerprint of the first plurality of fingerprints; identifying, in the persistent storage of the data storage system, a segment tree associated with second data based on an identifier associated with the client application, the second data is to be updated by the first data and a second plurality of fingerprints associated with the second data, wherein the second data is divided into a second plurality of segments, wherein the second data represents a second block of data of the prior version of the file corresponding to the first block of data; loading the identified second plurality of fingerprints from the persistent storage of the data storage system into a cache memory of the data storage system; determining, in the cache memory, whether a first segment of the first data updates the second data by comparing a first fingerprint associated with the first segment to the second plurality of fingerprints that is associated with the second data, wherein the first segment of the first data would update the second data if the first fingerprint does not match with any of fingerprints of the second plurality of segments, and would not update the second data if the first fingerprint matches at least one of the fingerprints of the second plurality of segments; replacing, in the persistent storage of the data storage system, a second segment of the second data with the first segment of the first data if the first fingerprint does not match with any of the fingerprints of the second plurality of segments, including modifying a segment reference of the segment tree associated with the second data to reference the first segment instead of the second segment; and removing the first segment of the first data from the data storage system if the first fingerprint matches at least one of the fingerprints of the second plurality of segments, including deleting the first segment of the first data and the first fingerprint associated with the first segment; wherein replacing the second segment of the second data with the first segment of the first data further includes logically replacing the second segment by updating the segment tree associated with the second data.