IP Library Granted Patent US 10,592,160
Granted Patent B1
US 10,592,160 · App. 16/185,645 · Granted Mar 17, 2020

Systems and methods for monitoring data synchronization progress in a multi-hop data recovery system

Inventors: Anish Vaidya (Pleasanton, CA); Sunil Hasbe (Anantpal, IN); Om Prakash Agarwal (Fremont, CA); Rushikesh Patil (Jalgaon, IN); Ashit Kumar (Muzaffarpur, IN); Venkata Sreenivasa Rao Nagineni (Mountain View, CA)
Assignee: Veritas Technologies LLC
G06F3/065G06F3/067G06F3/0619
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 10,592,160
App. No.
16/185,645
Granted
Mar 17, 2020
Kind
B1
Abstract

The disclosed computer-implemented method for monitoring data synchronization progress in a multi-hop data recovery system may include (i) calculating a number of data blocks to be synchronized, (ii) setting each element of a synchronization data structure to dirty, (iii) determining a dirty bytes counter, (iv) transmitting a portion of the data blocks to be synchronized, (v) receiving an acknowledgement corresponding to the transmitted portion of the data blocks, (vi) setting a set of elements within the synchronization data structure corresponding to the transmitted portion of the data blocks to clean, (vii) determining a pending dirty bytes counter that indicates a current number of elements within the synchronization data structure that are set to dirty, and (viii) transmitting the dirty bytes counter and the pending dirty bytes counter. Various other methods, systems, and computer-readable media are also disclosed.

Claims (71)

1. A computer-implemented method for monitoring data synchronization progress in a multi-hop data recovery system, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

calculating, by a computing device, a number of data blocks to be synchronized;

setting each element of a synchronization data structure to dirty;

determining a dirty bytes counter, wherein the dirty bytes counter indicates a number of elements of the synchronization data structure that are set to dirty;

transmitting a portion of the data blocks to be synchronized;

receiving an acknowledgement corresponding to the transmitted portion of the data blocks;

setting a set of bits of the synchronization data structure corresponding to the transmitted portion of the data blocks to clean;

determining a pending dirty bytes counter, wherein the pending dirty bytes counter indicates a current number of elements of the synchronization data structure that are set to dirty; and

transmitting the dirty bytes counter and the pending dirty bytes counter.

2. The computer-implemented method of claim 1 , further comprising:

receiving an indication to initiate a full synchronization of data.

3. The computer-implemented method of claim 1 , further comprising:

merging the synchronization data structure and an active data structure, wherein the active data structure corresponds to new data blocks from an application of the computing device.

4. The computer-implemented method of claim 1 , further comprising:

receiving, by a gateway, the dirty bytes counter, the pending dirty bytes counter, and a synchronization start time.

5. The computer-implemented method of claim 4 , further comprising:

calculating an estimated time of arrival (ETA) of the data blocks to be synchronized using the dirty bytes counter, the pending dirty bytes counter, and the synchronization start time.

6. The computer-implemented method of claim 4 , further comprising:

calculating a synchronization progress of the data blocks to be synchronized using the dirty bytes counter and the pending dirty bytes counter.

7. The computer-implemented method of claim 1 , further comprising:

transmitting another portion of the data blocks to be synchronized;

receiving another acknowledgement corresponding to the other portion of the data blocks;

setting another set of elements of the synchronization data structure corresponding to the other portion of the data blocks to clean;

updating the pending dirty bytes counter to an updated number of elements of the synchronization data structure set to dirty based on the other portion of the data blocks; and

transmitting the dirty bytes counter and the pending dirty bytes counter.

8. A system for monitoring data synchronization progress in a multi-hop data recovery system, the system comprising:

a computing device comprising at least one physical processor; and

physical memory comprising computer-executable instructions that, when executed by the at least one physical processor, cause the computing device to:

calculate a number of data blocks to be synchronized;

set each element of a synchronization data structure to dirty;

determine a dirty bytes counter, wherein the dirty bytes counter indicates a number of elements of the synchronization data structure that are set to dirty;

transmit a portion of the data blocks to be synchronized;

receive an acknowledgement corresponding to the transmitted portion of the data blocks;

set a set of elements of the synchronization data structure corresponding to the transmitted portion of the data blocks to clean;

determine a pending dirty bytes counter, wherein the pending dirty bytes counter indicates a current number of elements of the synchronization data structure that are set to dirty; and

transmit the dirty bytes counter and the pending dirty bytes counter.

9. The system of claim 8 , wherein the computer-executable instructions further cause the computing device to:

receive an indication to initiate a full synchronization of data.

10. The system of claim 8 , wherein the computer-executable instructions further cause the computing device to:

merge the synchronization data structure and an active data structure, wherein the active data structure corresponds to new data blocks from an application of the computing device.

11. The system of claim 8 , wherein the computer-executable instructions further cause the computing device to:

receive, by a gateway, the dirty bytes counter, the pending dirty bytes counter, and a synchronization start time.

12. The system of claim 11 , wherein the computer-executable instructions further cause the computing device to:

calculate an estimated time of arrival (ETA) of the data blocks to be synchronized using the dirty bytes counter, the pending dirty bytes counter, and the synchronization start time.

13. The system of claim 11 , wherein the computer-executable instructions further cause the computing device to:

calculate a synchronization progress of the data blocks to be synchronized using the dirty bytes counter and the pending dirty bytes counter.

14. The system of claim 8 , wherein the computer-executable instructions further cause the computing device to:

transmit another portion of the data blocks to be synchronized;

receive another acknowledgement corresponding to the other portion of the data blocks;

set another set of elements of the synchronization data structure corresponding to the other portion of the data blocks to clean;

update the pending dirty bytes counter to an updated number of elements of the synchronization data structure set to dirty based on the other portion of the data blocks; and

transmit the dirty bytes counter and the pending dirty bytes counter.

15. A non-transitory computer-readable medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

calculate a number of data blocks to be synchronized;

set each element of a synchronization data structure to dirty;

determine a dirty bytes counter, wherein the dirty bytes counter indicates a number of elements within the synchronization data structure that are set to dirty;

transmit a portion of the data blocks to be synchronized;

receive an acknowledgement corresponding to the transmitted portion of the data blocks;

set a set of elements of the synchronization data structure corresponding to the transmitted portion of the data blocks to clean;

determine a pending dirty bytes counter, wherein the pending dirty bytes counter indicates a current number of elements within the synchronization data structure that are set to dirty; and

transmit the dirty bytes counter and the pending dirty bytes counter.

16. The non-transitory computer-readable medium of claim 15 , wherein the computer-executable instructions further cause the computing device to:

receive an indication to initiate a full synchronization of data.

17. The non-transitory computer-readable medium of claim 15 , wherein the computer-executable instructions further cause the computing device to:

merge the synchronization data structure and an active data structure, wherein the active data structure corresponds to new data blocks from an application of the computing device.

18. The non-transitory computer-readable medium of claim 15 , wherein the computer-executable instructions further cause the computing device to:

receive, by a gateway, the dirty bytes counter, the pending dirty bytes counter, and a synchronization start time.

19. The non-transitory computer-readable medium of claim 18 , wherein the computer-executable instructions further cause the computing device to:

calculate an estimated time of arrival (ETA) of the data blocks to be synchronized using the dirty bytes counter, the pending dirty bytes counter, and the synchronization start time.

20. The non-transitory computer-readable medium of claim 18 , wherein the computer-executable instructions further cause the computing device to:

calculate a synchronization progress of the data blocks to be synchronized using the dirty bytes counter and the pending dirty bytes counter.

Assignments (12)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 7, 2026
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 075377/0130 →
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 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069697/0238 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 052426/0001 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 054535/0565 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Apr 16, 2020
From: VERITAS TECHNOLOGIES, LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 052426/0001 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Mar 18, 2020
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 052189/0311 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2018
From: VAIDYA, ANISH; HASBE, SUNIL; AGARWAL, OM PRAKASH; PATIL, RUSHIKESH; KUMAR, ASHIT; NAGINENI, VENKATA SREENIVASA RAO
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 047463/0464 →