IP Library Granted Patent US 12,379,953
Granted Patent B2
US 12,379,953 · App. 18/083,361 · Granted Aug 5, 2025

Systems and methods for continuous data protection comprising storage of completed I/O requests intercepted from an I/O stream using touch points

Inventors: Benjamin Travis Meadowcroft (San Jose, CA); Li Ding (Cupertino, CA); Shaomin Chen (San Jose, CA); Hardik Vohra (Sunnyvale, CA); Arijit Banerjee (Bangalore, IN); Abhay Mitra (Santa Clara, CA); Kushaagra Goyal (Mountain View, CA); Arnav Gautum Mishra (San Jose, CA); Samir Rishi Chaudhry (Saratoga, CA); Suman Swaroop (Bengaluru, IN); Kunal Sean Munshani (Fremont, CA); Mudit Malpani (Mountain View, CA)
Assignee: Rubrik, Inc.
G06F9/45558G06F11/0712G06F11/1464G06F2009/45579G06F2009/45587G06F2009/45595G06F11/1448G06F11/1469G06F11/1471G06F11/2023G06F11/2038G06F11/2097G06F2201/815G06F2201/84
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,379,953
App. No.
18/083,361
Granted
Aug 5, 2025
Kind
B2
Abstract

Example embodiments relate generally to systems and methods for continuous data protection (CDP) and more specifically to an input and output (I/O) filtering framework and log management system to seek a near-zero recovery point objective (RPO).

Claims (53)

1. A method, comprising:

accessing, in an input/output (I/O) path between a virtual machine (VM) and a virtualization server, an I/O stream comprising records of completed I/O requests and records of uncompleted I/O requests that are exchanged between the VM and the virtualization server;

configuring an I/O touchpoint in the I/O stream, the I/O touchpoint associated with I/O request cancellation;

filtering out one or more records of one or more canceled I/O requests detected using the I/O touchpoint associated with I/O request cancellation, wherein only the records of the completed I/O requests in the I/O stream are captured based at least in part on filtering out the one or more canceled I/O requests; and

forming, based at least in part on the filtering, a snapshot-log chain by associating only the records of the captured completed I/O requests with a snapshot.

2. The method of claim 1 , wherein the I/O touchpoint associated with I/O request cancellation is configured in the I/O stream prior to capturing only the records of the completed I/O requests.

3. The method of claim 1 , further comprising:

storing, from among the records of the completed I/O requests and the records of the uncompleted I/O requests, only the records of the completed I/O requests at a backup site based at least in part on the capturing.

4. The method of claim 3 , wherein the snapshot is stored at the backup site.

5. The method of claim 1 , wherein capturing only the records of the completed I/O requests comprises:

filtering I/O requests in the I/O stream to intercept only the records of the completed I/O requests.

6. The method of claim 1 , further comprising:

establishing, at an interception point in the I/O path, a filter framework comprising an I/O stack and an I/O filter.

7. The method of claim 6 , wherein the filter framework further comprises a filter driver, and the method further comprises:

configuring the filter driver to intercept only the completed I/O requests in the I/O stream using the I/O touchpoint, wherein only the records of the completed I/O requests are captured based at least in part on configuring the filter driver.

8. The method of claim 6 , wherein:

the I/O request cancellation is a distributed I/O request cancellation of a plurality of I/O requests comprising a first set of completed I/O requests and a second set of uncompleted I/O requests, and

the method further comprises managing the distributed I/O request cancellation at the I/O stack of the filter framework.

9. The method of claim 1 , further comprising:

receiving, after forming the snapshot-log chain, a request for recoverable data; and

sending, in response to the request for recoverable data, data to a replication target based at least on a portion of the snapshot-log chain.

10. An apparatus, comprising:

at least one processor; and

memory storing instructions that are executable by the at least one processor to cause the apparatus to:

access, in an input/output (I/O) path between a virtual machine (VM) and a virtualization server, an I/O stream comprising records of completed I/O requests and records of uncompleted I/O requests that are exchanged between the VM and the virtualization server;

configure an I/O touchpoint in the I/O stream, the I/O touchpoint associated with I/O request cancellation;

filter out one or more records of one or more canceled I/O requests detected using the I/O touchpoint associated with I/O request cancellation, wherein the instructions are executable by the at least one processor to cause the apparatus to capture only the records of the completed I/O requests in the I/O stream based at least in part on filtering out the one or more canceled I/O requests; and

form, based at least in part on the filtering, a snapshot-log chain by associating only the records of the captured completed I/O requests with a snapshot.

11. The apparatus of claim 10 , wherein the instructions are executable by the at least one processor to cause the apparatus to:

configure the I/O touchpoint associated with I/O request cancellation in the I/O stream prior to capturing only the records of the completed I/O requests.

12. The apparatus of claim 10 , wherein the instructions are further executable by the at least one processor to cause the apparatus to:

store, from among the records of the completed I/O requests and the records of the uncompleted I/O requests, only the records of the completed I/O requests at a backup site based at least in part on the capturing.

13. The apparatus of claim 10 , wherein, to capture only the records of the completed I/O requests, the instructions are further executable by the at least one processor to cause the apparatus to:

filter I/O requests in the I/O stream to intercept only the records of the completed I/O requests.

14. The apparatus of claim 10 , wherein the instructions are further executable by the at least one processor to cause the apparatus to:

establish, at an interception point in the I/O path, a filter framework comprising an I/O stack and an I/O filter.

15. The apparatus of claim 10 , wherein the instructions are further executable by the at least one processor to cause the apparatus to:

receive, after forming the snapshot-log chain, a request for recoverable data; and

send, in response to the request for recoverable data, data to a replication target based at least on a portion of the snapshot-log chain.

16. A non-transitory, computer-readable medium that stores instructions that are executable by at least one processor of an electronic device to cause the electronic device to:

access, in an input/output (I/O) path between a virtual machine (VM) and a virtualization server, an I/O stream comprising records of completed I/O requests and records of uncompleted I/O requests that are exchanged between the VM and the virtualization server;

configure an I/O touchpoint in the I/O stream, the I/O touchpoint associated with I/O request cancellation;

filter out one or more records of one or more canceled I/O requests detected using the I/O touchpoint associated with I/O request cancellation, wherein the instructions are executable by the at least one processor to cause the electronic device to capture only the records of the completed I/O requests in the I/O stream based at least in part on filtering out the one or more canceled I/O requests; and

form, based at least in part on the filtering, a snapshot-log chain by associating only the records of the captured completed I/O requests with a snapshot.

17. The non-transitory, computer-readable medium of claim 16 , wherein the instructions are further executable by the at least one processor to cause the electronic device to:

store, from among the records of the completed I/O requests and the records of the uncompleted I/O requests, only the records of the completed I/O requests at a backup site based at least in part on the capturing.

18. The non-transitory, computer-readable medium of claim 16 , wherein, to capture only the records of the completed I/O requests, the instructions are executable by the at least one processor to cause the electronic device to:

filter I/O requests in the I/O stream to intercept only the records of the completed I/O requests.

19. The non-transitory, computer-readable medium of claim 16 , wherein the instructions are further executable by the at least one processor to cause the electronic device to:

establish, at an interception point in the I/O path, a filter framework comprising an I/O stack and an I/O filter.

20. The non-transitory, computer-readable medium of claim 16 , wherein the instructions are further executable by the at least one processor to cause the electronic device to:

receive, after forming the snapshot-log chain, a request for recoverable data; and

send, in response to the request for recoverable data, data to a replication target based at least on a portion of the snapshot-log chain.

Assignments (3)
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 64659/0236 Recorded Jun 13, 2025
From: GOLDMAN SACHS BDC, INC., AS COLLATERAL AGENT
To: RUBRIK, INC.
Reel/Frame 071566/0187 →
GRANT OF SECURITY INTEREST IN PATENT RIGHTS Recorded Aug 21, 2023
From: RUBRIK, INC.
To: GOLDMAN SACHS BDC, INC., AS COLLATERAL AGENT
Reel/Frame 064659/0236 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 15, 2023
From: MEADOWCROFT, BENJAMIN TRAVIS; DING, LI; CHEN, SHAOMIN; VOHRA, HARDIK; BANERJEE, ARIJIT; MITRA, ABHAY; GOYAL, KUSHAAGRA; MISHRA, ARNAV GAUTUM; CHAUDHRY, SAMIR RISHI; SWAROOP, SUMAN; MUNSHANI, KUNAL SEAN; MALPANI, MUDIT
To: RUBRIK, INC.
Reel/Frame 062713/0083 →
Continuity (2)
Continuation 16398649 · Apr 30, 2019
Related Publication 20230125719A1 · Apr 27, 2023
References Cited (91)
US 8364648B1 · Sim-Tang · 2013 [cited by applicant]
US 8464254B1 · Vohra et al. · 2013 [cited by applicant]
US 8495304B1 · Natanzon et al. · 2013 [cited by applicant]
US 8515911B1 · Zhou et al. · 2013 [cited by applicant]
US 8554734B1 · Chatterjee et al. · 2013 [cited by applicant]
US 8762347B1 · Gokhale et al. · 2014 [cited by applicant]
US 8904081B1 · Kulkarni · 2014 [cited by applicant]
US 8924607B1 · Nanduri et al. · 2014 [cited by applicant]
US 9015121B1 · Salamon et al. · 2015 [cited by applicant]
US 9032160B1 · Natanzon et al. · 2015 [cited by applicant]
US 9330156B2 · Satapathy · 2016 [cited by applicant]
US 9563517B1 · Natanzon et al. · 2017 [cited by applicant]
US 9588847B1 · Natanzon et al. · 2017 [cited by applicant]
US 9619350B1 · Ambat et al. · 2017 [cited by applicant]
US 9632881B1 · Natanzon · 2017 [cited by applicant]
US 9946603B1 · Kumar et al. · 2018 [cited by applicant]
US 9959061B1 · Natanzon et al. · 2018 [cited by applicant]
US 9965306B1 · Natanzon et al. · 2018 [cited by applicant]
US 10133874B1 · Natanzon et al. · 2018 [cited by applicant]
US 10198321B1 · Gordon · 2019 [cited by applicant]
US 10235061B1 · Natanzon et al. · 2019 [cited by applicant]
US 10255137B1 · Panidis et al. · 2019 [cited by applicant]
US 10592128B1 · Natanzon et al. · 2020 [cited by applicant]
US 10853182B1 · Vig et al. · 2020 [cited by applicant]
US 10901768B1 · Mandadi et al. · 2021 [cited by applicant]
US 11061601B2 · Meadowcroft et al. · 2021 [cited by applicant]
US 11086727B2 · Meadowcroft et al. · 2021 [cited by applicant]
US 11106545B2 · Meadowcroft et al. · 2021 [cited by applicant]
US 11126508B2 · Meadowcroft et al. · 2021 [cited by applicant]
US 11151000B2 · Meadowcroft et al. · 2021 [cited by applicant]
US 11500664B2 · Meadowcroft et al. · 2022 [cited by applicant]
US 20030074600A1 · Tamatsu · 2003 [cited by applicant]
US 20070005542A1 · Echeverria et al. · 2007 [cited by applicant]
US 20070198602A1 · Ngo et al. · 2007 [cited by applicant]
US 20080028009A1 · Ngo · 2008 [cited by applicant]
US 20090119302A1 · Palmer et al. · 2009 [cited by applicant]
US 20100011178A1 · Feathergill · 2010 [cited by applicant]
US 20100030983A1 · Gupta et al. · 2010 [cited by applicant]
US 20100049930A1 · Pershin et al. · 2010 [cited by applicant]
US 20100115332A1 · Zheng et al. · 2010 [cited by applicant]
US 20100185583A1 · Berinde et al. · 2010 [cited by applicant]
US 20100299368A1 · Hutchins et al. · 2010 [cited by applicant]
US 20100318812A1 · Auradkar et al. · 2010 [cited by applicant]
US 20110004586A1 · Cherryholmes et al. · 2011 [cited by applicant]
US 20110029821A1 · Chow et al. · 2011 [cited by applicant]
US 20110153697A1 · Nickolov et al. · 2011 [cited by applicant]
US 20120254893A1 · Pope et al. · 2012 [cited by applicant]
US 20120278652A1 · Dawkins et al. · 2012 [cited by applicant]
US 20120284234A1 · Mashtizadeh et al. · 2012 [cited by applicant]
US 20130024722A1 · Kotagiri et al. · 2013 [cited by applicant]
US 20130103650A1 · Natanzan et al. · 2013 [cited by applicant]
US 20130227559A1 · Tsirkin · 2013 [cited by applicant]
US 20140201735A1 · Kannan et al. · 2014 [cited by applicant]
US 20140258241A1 · Chen et al. · 2014 [cited by applicant]
US 20150052108A1 · Volk et al. · 2015 [cited by applicant]
US 20150112933A1 · Satapathy · 2015 [cited by applicant]
US 20150248407A1 · Tatebe · 2015 [cited by applicant]
US 20150378636A1 · Yadav et al. · 2015 [cited by applicant]
US 20150378847A1 · Tarasuk-Levin et al. · 2015 [cited by applicant]
US 20160004618A1 · Chambliss · 2016 [cited by examiner]
US 20160070335A1 · Mitrea et al. · 2016 [cited by applicant]
US 20160110408A1 · Madhavarapu et al. · 2016 [cited by applicant]
US 20160127492A1 · Malwankar · 2016 [cited by examiner]
US 20160147607A1 · Dornemann et al. · 2016 [cited by applicant]
US 20160344834A1 · Das · 2016 [cited by applicant]
US 20160357460A1 · Muramatsu · 2016 [cited by applicant]
US 20170060449A1 · Zucca et al. · 2017 [cited by applicant]
US 20180189339A1 · Ananthakrishnan · 2018 [cited by applicant]
US 20190045028A1 · Wysocki et al. · 2019 [cited by applicant]
US 20190220444A1 · Guo et al. · 2019 [cited by applicant]
US 20190243725A1 · Bade et al. · 2019 [cited by applicant]
US 20190250997A1 · Karasev et al. · 2019 [cited by applicant]
US 20190311047A1 · Guerra Delgado et al. · 2019 [cited by applicant]
US 20190347029A1 · Ramachandran et al. · 2019 [cited by applicant]
US 20200348842A1 · Meadowcroft et al. · 2020 [cited by applicant]
US 20200348955A1 · Meadowcroft et al. · 2020 [cited by applicant]
US 20200348956A1 · Meadowcroft et al. · 2020 [cited by applicant]
US 20200349018A1 · Meadowcroft et al. · 2020 [cited by applicant]
US 20200349021A1 · Meadowcroft et al. · 2020 [cited by applicant]
US 20200349022A1 · Meadowcroft et al. · 2020 [cited by applicant]
US 20200349028A1 · Meadowcroft et al. · 2020 [cited by applicant]
US 20200349029A1 · Meadowcroft et al. · 2020 [cited by applicant]
US 20200349030A1 · Meadowcroft et al. · 2020 [cited by applicant]
US 20200349031A1 · Meadowcroft et al. · 2020 [cited by applicant]
US 20210073082A1 · Dalai et al. · 2021 [cited by applicant]
US 20210326215A1 · Meadowcroft et al. · 2021 [cited by applicant]
US 20210334172A1 · Meadowcroft et al. · 2021 [cited by applicant]
US 20210342068A1 · Meadowcroft et al. · 2021 [cited by applicant]
WO WO2020223112A1 · 2020 [cited by applicant]
EP/ISA, International Search Report, PCT Application No. PCT/US2020/029641, Aug. 17, 2020, 5 pages. [cited by applicant]
EP/ISA, Written Opinion, PCT Application No. PCT/US2020/029641, Aug. 17, 2020, 6 pages. [cited by applicant]