IP Library Granted Patent US 12,423,014
Granted Patent B2
US 12,423,014 · App. 18/237,296 · Granted Sep 23, 2025

Method and system for data consistency across failure and recovery of infrastructure

Inventors: Rushikesh Patil (Pune, IN); Vishal Thakur (Pune, IN); Sunil Hasbe (Shirur Anantpal, IN)
Assignee: Cohesity, Inc.
G06F3/0641G06F3/0619G06F3/064G06F3/065G06F3/0659G06F3/0673G06F11/1453G06F11/1469
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,423,014
App. No.
18/237,296
Granted
Sep 23, 2025
Kind
B2
Abstract

A method and system for data consistency across failure and recovery of infrastructure. In one embodiment of the method, copies of first data blocks stored in a source memory are sent to a target site via a data link. While sending one or more of the copies of the first data blocks to the target site, source hashes for second data blocks stored in the source memory are calculated, wherein the first data blocks are distinct from the second data blocks. While sending one or more of the copies of the first data blocks to the target site, target hashes of data blocks stored in a target memory of the target site are received. While sending one or more of the copies of the first data blocks to the target site, the source hashes are compared with the target hashes, respectively. After sending the first data blocks to the target site via the data link, copies of only those second data blocks are sent to the target site with source hashes that do not compare equally with respective target hashes.

Claims (78)

1. A method comprising:

receive a merged map with entries corresponding to respective data blocks in a target memory, the merged map including updated block information for an active map and a synchronization map that track data block activity in the target memory, wherein a positive indicator in either map results in a modified indicator for that respective data block;

set a variable to Z, wherein Z is an integer greater than one, and wherein Z represents a number of data blocks in the target memory;

determine whether an entry in the merged map corresponding to the variable is set to indicate a respective data block in the target memory has been modified; and

if the entry in the merged map corresponding to the variable is set to indicate that the respective data block in the target memory has been modified according to either the active map or the synchronization map in the target memory:

calculate a hash value for a data block corresponding to the variable in a source memory;

send the calculated hash value and the variable to a target site, wherein the target site comprises the target memory; and;

decrement the variable, wherein if the entry in the merged map corresponding to the variable indicates that the respective data block in the target memory has not been modified, the variable is decremented without calculating the hash value for the data block corresponding to the variable in the source memory.

2. The method of claim 1 further comprising:

determining whether an entry in the merged map corresponding to the decremented variable is set to indicate a data block in the target memory corresponding to the decremented variable is modified;

if the entry in the merged map corresponding to the decremented variable is set to indicate the data block in the target memory corresponding to the decremented variable is modified:

calculate a hash value for a data block corresponding to the decremented variable in the source memory;

send the calculated hash value for the data block corresponding to the decremented variable in the source memory and the decremented variable to the target site; and

decrement the decremented variable; and

if the entry in the merged map corresponding to the decremented variable is set to indicate that the data block corresponding to the decremented variable in the target memory is not modified, decrement the decremented variable without calculating the hash value for the data block corresponding to the decremented variable in the source memory.

3. The method of claim 1 :

wherein entries in the merged map are set to logical one to indicate when respective data blocks in the target memory are modified, and;

wherein entries in the merged map are set to logical zero to indicate when respective data blocks in the target memory are not modified.

4. The method of claim 1 :

wherein one entry in the merged map is set to indicate that a respective data block in the target memory is modified;

wherein another entry in the merged map is set to indicate that a respective data block in the target memory is not modified.

5. The method of claim 1 :

wherein the data blocks in the target memory are contiguous with each other

wherein the data blocks in the source memory are contiguous with each other.

6. The method of claim 1 further comprising replacing n data blocks in the source memory with the copies of n blocks, respectively, from the target memory.

7. The method of claim 6 wherein at least one of the n data blocks corresponds to an entry in the merged map that is set to indicate that its corresponding data block in the target memory is modified.

8. A non-transitory computer readable medium (CRM) comprising instructions that are executable on one or more processors to implement a method, the method comprising:

receiving a merged map with entries corresponding to respective data blocks in a target memory, the merged map including updated block information for an active map and a synchronization map that track data block activity in the target memory, wherein a positive indicator in either map results in a modified indicator for that respective data block;

setting a variable to Z, wherein Z is an integer greater than one, and wherein Z represents a number of data blocks in the target memory;

determining whether an entry in the merged map corresponding to the variable is set to indicate that a respective data block in the target memory is modified according to either the active map or the synchronization map in the target memory;

if the entry in the map corresponding to the variable is set to indicate the respective data block in the target memory is modified:

calculating a hash value for a data block corresponding to the variable in a source memory;

sending the calculated hash value and the variable to a target site, wherein the target site comprises the target memory, and

decrementing the variable, wherein if the entry in the merged map corresponding to the variable is set to indicate the respective data block in the target memory is not modified, the variable is decremented without calculating the hash value for the data block corresponding to the variable in the source memory.

9. The non-transitory CRM of claim 8 wherein the method further comprises:

determining whether an entry in the merged map corresponding to the decremented variable is set to indicate a data block in the target memory corresponding to the decremented variable is modified;

if the entry in the merged map corresponding to the decremented variable is set to indicate the data block in the target memory corresponding to the decremented variable is modified:

calculate a hash value for a data block corresponding to the decremented variable in the source memory;

send the calculated hash value for the data block corresponding to the decremented variable in the source memory and the decremented variable to the target site, and;

decrement the decremented variable;

if the entry in the merged map corresponding to the decremented variable is set to indicate that the data block corresponding to the decremented variable in the target memory is not modified, decrement the decremented variable without calculating the hash value for the data block corresponding to the decremented variable in the source memory.

10. The non-transitory CRM of claim 8 :

wherein entries in the merged map are set to logical one to indicate when respective data blocks in the target memory are modified, and;

wherein entries in the merged map are set to logical zero to indicate when respective data blocks in the target memory are not modified.

11. The non-transitory CRM of claim 8 :

wherein one entry in the merged map is set to indicate that a respective data block in the target memory is modified;

wherein another entry in the merged map is set to indicate that a respective data block in the target memory is not modified.

12. The non-transitory CRM of claim 8 :

wherein the data blocks in the target memory are contiguous with each other

wherein the data blocks in the source memory are contiguous with each other.

13. The non-transitory CRM of claim 8 wherein the method further comprises replacing n data blocks in the source memory with the copies of n blocks, respectively, from the target memory.

14. The method of claim 13 wherein at least one of the n data blocks corresponds to an entry in the merged map that is set to indicate that its corresponding data block in the target memory is modified.

15. A computer system comprising:

one or more processors;

a computer-readable storage medium coupled to the one or more processors; and

a plurality of instructions, encoded in the computer-readable storage medium, wherein a method is implemented in response to executing the instructions, the method comprising:

receiving a merged map with entries corresponding to respective data blocks in a target memory, the merged map including updated block information for an active map and a synchronization map that track data block activity in the target memory, wherein a positive indicator in either map results in a modified indicator for that respective data block;

setting a variable to Z, wherein Z is an integer greater than one, and wherein Z represents a number of data blocks in the target memory;

determining whether an entry in the merged map corresponding to the variable is set to indicate a respective data block in the target memory is modified; and

if the entry in the merged map corresponding to the variable is set to indicate that the respective data block in the target memory is modified according to either the active map or the synchronization map in the target memory:

calculating a hash value for a data block corresponding to the variable in a source memory;

sending the calculated hash value and the variable to a target site, wherein the target site comprises the target memory; and

decrementing the variable, wherein if the entry in the merged map corresponding to the variable is set to indicate the respective data block in the target memory is not modified, the variable is decremented without calculating the hash value for the data block corresponding to the variable in the source memory.

16. The computer system of claim 15 wherein the method further comprises:

determining whether an entry in the merged map corresponding to the decremented variable is set to indicate a data block in the target memory corresponding to the decremented variable is modified;

if the entry in the merged map corresponding to the decremented variable is set to indicate the data block in the target memory corresponding to the decremented variable is modified:

calculate a hash value for a data block corresponding to the decremented variable in the source memory;

send the calculated hash value for the data block corresponding to the decremented variable in the source memory and the decremented variable to the target site, and;

decrement the decremented variable;

if the entry in the merged map corresponding to the decremented variable is set to indicate that the data block corresponding to the decremented variable in the target memory is not modified, decrement the decremented variable without calculating the hash value for the data block corresponding to the decremented variable in the source memory.

17. The computer system of claim 15 wherein:

wherein entries in the merged map are set to logical one to indicate when respective data blocks in the target memory are modified, and;

wherein entries in the merged map are set to logical zero to indicate when respective data blocks in the target memory are not modified.

18. The computer system of claim 15 wherein:

wherein the data blocks in the target memory are contiguous with each other

wherein the data blocks in the source memory are contiguous with each other.

19. The computer system of claim 15 wherein the method further comprises replacing n data blocks in the source memory with the copies of n blocks, respectively, from the target memory.

20. The computer system of claim 19 wherein at least one of the n data blocks corresponds to an entry in the merged map that is set to indicate that its corresponding data block in the target memory is modified.

Assignments (3)
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
Continuity (3)
Continuation 16836288 · Mar 31, 2020
Provisional Application 62859092 · Jun 8, 2019
Related Publication 20230393771A1 · Dec 7, 2023
References Cited (66)
US 5649152A · Ohran et al. · 1997 [cited by applicant]
US 5835953A · Ohran · 1998 [cited by applicant]
US 5875479A · Blount et al. · 1999 [cited by applicant]
US 5915098A · Palmer et al. · 1999 [cited by applicant]
US 6073222A · Ohran · 2000 [cited by applicant]
US 6085298A · Ohran · 2000 [cited by applicant]
US RE37601E · Eastridge et al. · 2002 [cited by applicant]
US 6728898B2 · Tremblay et al. · 2004 [cited by applicant]
US 6732245B2 · Kaiya et al. · 2004 [cited by applicant]
US 6779093B1 · Gupta · 2004 [cited by applicant]
US 7103796B1 · Kekre et al. · 2006 [cited by applicant]
US 7386752B1 · Rakic et al. · 2008 [cited by applicant]
US 7987368B2 · Zhu · 2011 [cited by applicant]
US 8577850B1 · Genda · 2013 [cited by applicant]
US 8874508B1 · Mittal · 2014 [cited by applicant]
US 9087088B1 · Bose · 2015 [cited by applicant]
US 9442806B1 · Bardale · 2016 [cited by applicant]
US 9509697B1 · Salehpour · 2016 [cited by applicant]
US 9575789B1 · Rangari · 2017 [cited by applicant]
US 9740422B1 · Ozdemir · 2017 [cited by applicant]
US 10394485B1 · Chen · 2019 [cited by applicant]
US 10496494B1 · Haloi · 2019 [cited by applicant]
US 10592149B1 · Jenkins · 2020 [cited by applicant]
US 20030014433A1 · Teloh et al. · 2003 [cited by applicant]
US 20030061366A1 · Musante et al. · 2003 [cited by applicant]
US 20030126388A1 · Yamagami · 2003 [cited by applicant]
US 20030158869A1 · Micka · 2003 [cited by applicant]
US 20040049365A1 · Keller et al. · 2004 [cited by applicant]
US 20070185937A1 · Prahlad et al. · 2007 [cited by applicant]
US 20080279204A1 · Pratt, Jr. · 2008 [cited by applicant]
US 20090187923A1 · McKinney · 2009 [cited by applicant]
US 20100070447A1 · Pfunter et al. · 2010 [cited by applicant]
US 20100169720A1 · Lumpp et al. · 2010 [cited by applicant]
US 20110126099A1 · Anderson et al. · 2011 [cited by applicant]
US 20120259825A1 · Tashiro · 2012 [cited by applicant]
US 20120324446A1 · Fries · 2012 [cited by examiner]
US 20130054523A1 · Anglin · 2013 [cited by applicant]
US 20140108345A1 · Brown · 2014 [cited by examiner]
US 20140229440A1 · Venkatesh · 2014 [cited by examiner]
US 20150169613A1 · Bshara · 2015 [cited by applicant]
US 20150278395A1 · Ben Jemaa · 2015 [cited by applicant]
US 20150280999A1 · Chart et al. · 2015 [cited by applicant]
US 20160306560A1 · Maranna et al. · 2016 [cited by applicant]
US 20160371007A1 · Shani · 2016 [cited by applicant]
US 20170286690A1 · Chari · 2017 [cited by applicant]
US 20170289187A1 · Noel · 2017 [cited by applicant]
US 20170300244A1 · Crawford · 2017 [cited by examiner]
US 20180109425A1 · Chart et al. · 2018 [cited by applicant]
US 20180285201A1 · Bangalore · 2018 [cited by applicant]
US 20180295029A1 · Shivaana · 2018 [cited by applicant]
US 20190138995A1 · Currin · 2019 [cited by applicant]
US 20200097198A1 · Bansal · 2020 [cited by applicant]
CN 109154905 · 2020 [cited by applicant]
JP 2020047107 · 2020 [cited by applicant]
WO 2017014814 · 2017 [cited by applicant]
EP Application No. 18 707 994.2-1223, EP Examination Report dated Sep. 6, 2021, 9 pages. [cited by applicant]
International Search Report and Written Opinion in related International Application PCT/US2021/024850 mailed Aug. 2, 2021, 14 pages. [cited by applicant]
International Search Report and Written Opinion in related International Application PCT/US2021/015379 mailed May 12, 2021, 12 pages. [cited by applicant]
International Search Report and Written Opinion in related International Application PCT/US2021/015384 mailed Apr. 13, 2021, 12 pages. [cited by applicant]
Bandopadhyay, Tushar et al.; “System and Method to Propagate Information Across a Connected Set of Entities Irrespective of the Specific Entity Type”; U.S. Appl. No. 15/857,577, filed Dec. 28, 2017; consisting of Specif… [cited by applicant]
Bandopadhyay, Tushar et al.; “Method and System for Dependency Analysis of Workloads for Orchestration”; U.S. Appl. No. 15/844,359, filed Dec. 15, 2017; consisting of Specification, Claims, Abstract, and Drawings; 77 pa… [cited by applicant]
Patil, Rushikesh et al.; “Methods and Systems for Data Resynchronization in a Replication Environment”; U.S. Appl. No. 16/805,294, filed Feb. 28, 2020; consisting of Specification, Claims, Abstract, and Drawings; 67 pag… [cited by applicant]
Patil, Rushikesh Patil et al.; “Methods and Systems for Data Resynchronization in a Replication Environment”; U.S. Appl. No. 16/805,292, filed Feb. 28, 2020; consisting of Specification, Claims, Abstract, and Drawings; … [cited by applicant]
Zhang, Shuangmin et al.; “Optimize Backup from Universal Share”; U.S. Appl. No. 16/835,657, filed Mar. 31, 2020; consisting of Specification, Claims, Abstract, and Drawings; 28 pages. [cited by applicant]
Alferes, Jose Julio et al.; “Chapter 3—Evolution and Reactivity in the Semantic Web”; F. Bry and J. Maluszynski (Eds.): Semantic Techniques for the Web; Lecture Notes in Computer Science—5500; Sep. 29, 2009; pp. 161-200. [cited by applicant]
Deng, Li et al., “vMerger: Server Consolidation in Virtualized Environment,” 2013 IEEE 11th Int'l Conference on Dependable, Autonomic and Secure Computing, pp. 606-612. [cited by applicant]