IP Library › Granted Patent US 12,585,400
Granted Patent B2
US 12,585,400 · App. 18/594,982 · Granted Mar 24, 2026

Block write cache replication model

Inventors: Junxiang Wang (Shanghai, CN); Vadim Makhervaks (Bellevue, WA); Yingrui Tong (Shanghai, CN); Sijia Huang (Shenghai, CN); Yuxing Zhou (Shenghai, CN); Zhihao Liu (Shanghai, CN); Xigeng Sun (Shanghai, CN); Bangzhu Zhu (Kunming, CN)
Assignee: Microsoft Technology Licensing, LLC
G06F3/065G06F3/0604G06F3/0656G06F3/0683G06F9/45558G06F12/0802G06F12/0888G06F2009/45579G06F2009/45583
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,585,400
App. No.
18/594,982
Granted
Mar 24, 2026
Kind
B2
Abstract

Caching write input/output (I/O) operations in a replica-based storage system. A write I/O operation is received from a consumer, and a corresponding replica list is identified. A first replica set is selected from the replica list for caching the I/O operation, and a first log corresponding to the I/O operation is added to a primary ring buffer of the first replica set. When the first log cannot be replicated to a secondary ring buffer of the first replica set, a second replica set is selected from the replica list for caching the I/O operation. A second log corresponding to the I/O operation is added to a primary ring buffer of the second replica set. Once the second log has been replicated to a secondary ring buffer of the second replica set, the I/O operation is acknowledged to the consumer, and the second log is de-staged to a backing store.

Claims (78)

1 . A method implemented in a computer system that includes a processor system, comprising:

receiving a write input/output (I/O) operation from a consumer;

identifying a replica list associated with the consumer, the replica list specifying a first replica set and a second replica set;

selecting the first replica set for caching the write I/O operation;

adding a first log corresponding to the write I/O operation to a primary ring buffer of the first replica set, the primary ring buffer of the first replica set being stored in the computer system;

determining that the first log cannot be replicated to a secondary ring buffer of the first replica set, the secondary ring buffer of the first replica set being stored in a first secondary computer system;

selecting the second replica set for caching the write I/O operation, based on determining that the first log cannot be replicated to the secondary ring buffer of the first replica set;

adding a second log corresponding to the write I/O operation to a primary ring buffer of the second replica set, the primary ring buffer of the second replica set being stored in the computer system;

determining that the second log has been replicated to a secondary ring buffer of the second replica set, the secondary ring buffer of the second replica set being in a second secondary computer system; and

based on determining that the second log has been replicated to the secondary ring buffer of the second replica set,

acknowledging the write I/O operation to the consumer; and

de-staging the second log to a backing store.

2 . The method of claim 1 , wherein the consumer is a virtual machine (VM) or a container executing in the computer system.

3 . The method of claim 2 , wherein de-staging the second log to the backing store comprises de-staging the second log to a virtual disk corresponding to the VM or the container.

4 . The method of claim 1 , wherein,

the primary ring buffer of the first replica set is stored in a first persistent memory in the computer system;

the primary ring buffer of the second replica set is stored in the first persistent memory in the computer system;

the secondary ring buffer of the first replica set is stored in a second persistent memory in the first secondary computer system; and

the secondary ring buffer of the second replica set is stored in a third persistent memory in the second secondary computer system.

5 . The method of claim 1 , wherein determining that the first log cannot be replicated to the secondary ring buffer of the first replica set comprises:

determining that the first log cannot be replicated to all secondary ring buffers of the first replica set.

6 . The method of claim 1 , wherein determining that the second log has been replicated to the secondary ring buffer of the second replica set comprises:

determining that the second log has been replicated to all secondary ring buffers of the second replica set.

7 . The method of claim 1 , wherein the replica list is associated with a plurality of consumers.

8 . The method of claim 7 , wherein a remote management service associates the plurality of consumers with the replica list.

9 . The method of claim 1 , wherein,

the write I/O operation is a first write I/O operation,

the replica list also specifies a third replica set, and

the method further comprises:

receiving a second write I/O operation from the consumer;

selecting the second replica set for caching the write I/O operation;

determining that the primary ring buffer of the second replica set is full;

selecting the third replica set for caching the write I/O operation, based on determining that the primary ring buffer of the second replica set is full;

adding a third log corresponding to the second write I/O operation to a primary ring buffer of the third replica set, the primary ring buffer of the third replica set being stored in the computer system;

determining that the third log has been replicated to all secondary ring buffers of the third replica set; and

based on determining that the third log has been replicated to all secondary ring buffers of the third replica set,

acknowledging the second write I/O operation to the consumer; and

de-staging the third log to the backing store.

10 . A method implemented in a computer system that includes a processor system, comprising:

receiving an election as a de-stage primary host for a replica set, the replica set comprising a primary ring buffer and one or more secondary ring buffers stored across a plurality of hosts; and

based on receiving the election as the de-stage primary host for the replica set,

identifying a ring buffer for the replica set that is stored in the computer system, the ring buffer comprising a plurality of logs replicated from the primary ring buffer at a different host of the plurality of hosts, each log corresponding to a different cached write input/output (I/O) request; and

de-staging the plurality of logs from the ring buffer to a backing store.

11 . The method of claim 10 , wherein receiving the election as the de-stage primary host for the replica set comprises receiving the election from a management service.

12 . The method of claim 10 , wherein receiving the election as the de-stage primary host for the replica set comprises receiving the election from one or more secondary hosts.

13 . The method of claim 10 , wherein the ring buffer is stored in a persistent memory in the computer system.

14 . The method of claim 10 , wherein,

receiving the election as the de-stage primary host for the replica set comprises receiving an election as a de-stage primary host for a plurality of replica sets, and

the method further comprises:

based on receiving the election as the de-stage primary host for the plurality of replica sets,

identifying a plurality of ring buffers stored in the computer system, each ring buffer corresponding to one of the plurality of replica sets and comprising a corresponding plurality of logs replicated from a corresponding primary ring buffer at a different host of the plurality of hosts, each log corresponding to a different cached write I/O request; and

de-staging the corresponding plurality of logs from each of the plurality of ring buffers to the backing store.

15 . The method of claim 10 , wherein the election as the de-stage primary host for the replica set is received after a failure of another host of the plurality of hosts to de-stage logs as a prior de-stage primary host.

16 . The method of claim 10 , wherein the method further comprises:

sending a notification to a management service after de-staging the plurality of logs from the ring buffer to the backing store.

17 . The method of claim 10 , wherein the method further comprises:

sending a notification to one or more of the plurality of hosts, after de-staging the plurality of logs from the ring buffer to the backing store.

18 . A computer system, comprising:

a processor system; and

a computer storage medium that stores computer-executable instructions that are executable by the processor system to at least:

receive a write input/output (I/O) operation from a consumer;

select a first replica set for caching the write I/O operation from a replica list;

add a first log corresponding to the write I/O operation to a primary ring buffer of the first replica set;

determine that the first log cannot be replicated to a secondary ring buffer of the first replica set;

select a second replica set for caching the write I/O operation from the replica list;

add a second log corresponding to the write I/O operation to a primary ring buffer of the second replica set;

determine that the second log has been replicated to a secondary ring buffer of the second replica set; and

based on determining that the second log has been replicated to the secondary ring buffer of the second replica set,

acknowledge the write I/O operation to the consumer; and

de-stage the second log to a backing store.

19 . The computer system of claim 18 , wherein,

the consumer is a virtual machine (VM) or a container executing in the computer system; and

de-staging the second log to the backing store comprises de-staging the second log to a virtual disk corresponding to the VM or the container.

20 . The computer system of claim 18 , wherein,

the primary ring buffer of the first replica set is stored in a first persistent memory in the computer system;

the primary ring buffer of the second replica set is stored in the first persistent memory in the computer system;

the secondary ring buffer of the first replica set is stored in a second persistent memory in a first secondary computer system; and

the secondary ring buffer of the second replica set is stored in a third persistent memory in a second secondary computer system.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 7, 2024
From: WANG, JUNXIANG; MAKHERVAKS, VADIM; TONG, YINGRUI; HUANG, SIJIA; ZHOU, YUXING; LIU, ZHIHAO; SUN, XIGENG; ZHU, BANGZHU
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 067656/0703 →
Continuity (2)
Provisional Application 63598426 · Nov 13, 2023
Related Publication 20250156104A1 · May 15, 2025
References Cited (67)
US 10831684B1 · Kamran · 2020 [cited by applicant]
US 11086524B1 · Sun · 2021 [cited by examiner]
US 11886427B1 · Shveidel · 2024 [cited by examiner]
US 12117938B1 · Derzhavetz · 2024 [cited by examiner]
US 12182421B1 · Vankamamidi · 2024 [cited by examiner]
US 12204457B1 · Vankamamidi · 2025 [cited by examiner]
US 12271625B1 · Astolfi · 2025 [cited by applicant]
US 20090138625A1 · Lee et al. · 2009 [cited by applicant]
US 20120054381A1 · Craddock et al. · 2012 [cited by applicant]
US 20120124294A1 · Atkisson · 2012 [cited by examiner]
US 20120278511A1 · Alatorre · 2012 [cited by applicant]
US 20160092118A1 · Kumar · 2016 [cited by examiner]
US 20160306580A1 · Pinto · 2016 [cited by applicant]
US 20170052723A1 · Voigt · 2017 [cited by applicant]
US 20170308298A1 · Vyshetsky · 2017 [cited by applicant]
US 20180150397A1 · Gupta · 2018 [cited by examiner]
US 20180316760A1 · Chernin · 2018 [cited by applicant]
US 20190317906A1 · Adavi · 2019 [cited by applicant]
US 20200034475A1 · Venkatesan · 2020 [cited by examiner]
US 20200097419A1 · Xing · 2020 [cited by applicant]
US 20200379925A1 · Andrus · 2020 [cited by applicant]
US 20200409583A1 · Kusters · 2020 [cited by examiner]
US 20210117333A1 · Qureshi · 2021 [cited by applicant]
US 20210216459A1 · Benhanokh · 2021 [cited by applicant]
US 20220019362A1 · Badiger · 2022 [cited by applicant]
US 20230013913A1 · Zinger · 2023 [cited by applicant]
US 20230195751A1 · Sun · 2023 [cited by applicant]
US 20230333777A1 · Shveidel · 2023 [cited by examiner]
US 20230342087A1 · He · 2023 [cited by applicant]
US 20240106754A1 · Meng · 2024 [cited by applicant]
US 20240232020A1 · Shveidel · 2024 [cited by examiner]
US 20240256190A1 · Shveidel · 2024 [cited by examiner]
US 20250103490A1 · Seibel · 2025 [cited by examiner]
US 20250156322A1 · Tong · 2025 [cited by applicant]
US 20250156333A1 · Wang · 2025 [cited by applicant]
US 20250156353A1 · Jin · 2025 [cited by applicant]
US 20250156360A1 · Jin · 2025 [cited by applicant]
US 20250159043A1 · Tong · 2025 [cited by applicant]
“Notification Port Example”, Retrieved From: https://learn.microsoft.com/en-us/previous-versions/windows/desktop/mscs/notification-port-example, May 31, 2018, 4 Pages. [cited by applicant]
“Receiving Cluster Events”, Retrieved From: https://learn.microsoft.com/en-us/previous-versions/windows/desktop/mscs/receiving-cluster-events, May 31, 2018, 1 Page. [cited by applicant]
Gugnani, et al., “Arcadia: A Fast and Reliable Persistent Memory Replicated Log”, arXiv:2206.12495v1, Jun. 24, 2022, pp. 1-14. [cited by applicant]
International Search Report and Written Opinion received for PCT Application No. PCT/US2024/051682, Feb. 11, 2025, 14 pages. [cited by applicant]
International Search Report and Written Opinion received for PCT Application No. PCT/US2024/052172, Jan. 29, 2025, 14 Pages. [cited by applicant]
Lee, et al., “X-SSD: A Storage System with Native Support for Database Logging and Replication”, IEEE, Computer Society Press, Jun. 12, 2022, pp. 988-1002. [cited by applicant]
Ruan, et al., “Persistent Memory Disaggregation for Cloud-Native Relational Databases”, International conference on Automotive User Interfaces and Interactive Vehicular Applications, Mar. 25, 2023, pp. 498-512. [cited by applicant]
Yang, et al., “Orion: A Distributed File System for Non-Volatile Main Memories and RDMA-Capable Networks”, Feb. 26, 2019, pp. 221-234. [cited by applicant]
U.S. Appl. No. 63/598,420, filed Nov. 13, 2023. [cited by applicant]
U.S. Appl. No. 63/598,426, filed Nov. 13, 2023. [cited by applicant]
U.S. Appl. No. 63/598,429, filed Nov. 13, 2023. [cited by applicant]
U.S. Appl. No. 63/598,438, filed Nov. 13, 2023. [cited by applicant]
Notice of Allowance mailed on Mar. 26, 2025, in U.S. Appl. No. 18/595,061, 09 pages. [cited by applicant]
Notice of Allowance mailed on Jun. 18, 2025, in U.S. Appl. No. 18/595,061, 08 pages. [cited by applicant]
Non-Final Office Action mailed on Jun. 30, 2025, in U.S. Appl. No. 18/592,026, 15 pages. [cited by applicant]
Non-Final Office Action mailed on Aug. 8, 2025, in U.S. Appl. No. 18/592,046, 16 pages. [cited by applicant]
Notice of Allowance mailed on Aug. 22, 2025, in U.S. Appl. No. 18/595,061, 08 pages. [cited by applicant]
Non-Final Office Action mailed on Aug. 27, 2025, in U.S. Appl. No. 18/587,247, 12 pages. [cited by applicant]
Notice of Allowability mailed on Sep. 2, 2025, in U.S. Appl. No. 18/595,061, 05 pages. [cited by applicant]
Notice of Allowance mailed on Sep. 30, 2025, in U.S. Appl. No. 18/592,026, 7 Pages. [cited by applicant]
Notice of Allowance mailed on Dec. 9, 2025, in U.S. Appl. No. 18/592,046, 07 pages. [cited by applicant]
U.S. Appl. No. 18/595,061, filed Mar. 4, 2024. [cited by applicant]
U.S. Appl. No. 18/587,247, filed Feb. 26, 2024. [cited by applicant]
U.S. Appl. No. 18/587,258, filed Feb. 26, 2024. [cited by applicant]
U.S. Appl. No. 18/592,046, filed Feb. 29, 2024. [cited by applicant]
U.S. Appl. No. 18/592,026, filed Feb. 29, 2024. [cited by applicant]
U.S. Appl. No. 19/385,793, filed Nov. 11, 2025. [cited by applicant]
U.S. Appl. No. 19/545,619, filed Feb. 20, 2026. [cited by applicant]
Final Office Action mailed on Feb. 4, 2026, in U.S. Appl. No. 18/587,247, 13 pages. [cited by applicant]