IP Library › Granted Patent US 12,657,088
Granted Patent B2
US 12,657,088 · App. 18/809,170 · Granted Jun 16, 2026

Persistent memory file system reconciliation

Inventors: Matthew Fontaine Curtis-Maury (Apex, NC); Ram Kesavan (Los Altos, CA); Ananthan Subramanian (San Ramon, CA); Abdul Basit (Morrisville, NC); Vinay Devadas (Apex, NC); Yash Hetal Trivedi (Cary, NC)
Assignee: NetApp, Inc.
G06F11/1435G06F13/1668G06F16/183
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,657,088
App. No.
18/809,170
Granted
Jun 16, 2026
Kind
B2
Abstract

Techniques are provided for persistent memory file system reconciliation. As part of the persistent memory file system reconciliation, high level file system metadata associated with a persistent memory file system of persistent memory is reconciled. Client access to the persistent memory file system is inaccessible until reconciliation of the high level file system metadata has completed. A first scanner is executed to traverse pages of the persistent memory in order to fix local inconsistencies associated with the pages. A local inconsistency of a first set of metadata or data of a page is fixed using a second set of metadata or data of the page. The first scanner is executed asynchronously in parallel with processing client I/O directed to the persistent memory file system.

Claims (55)

1 . A computing device, comprising:

persistent memory managed by a persistent memory file system; and

a processor coupled to the persistent memory, the processor configured to execute machine executable code to cause the computing device to:

group one or more actions into a set of actions based upon a determination that the one or more actions can be persisted in any order to the persistent memory while allowing a consistent state of the persistent memory to be recovered during a reboot sequence;

generate an episode to include the set of actions;

execute the episode to persist the one or more actions to the persistent memory; and

perform the reboot sequence to fix inconsistencies of the persistent memory to recover the persistent memory into the consistent state.

2 . The computing device of claim 1 , wherein the machine executable code causes the computing device to:

create a plurality of episodes, wherein each episode includes actions that can be persisted in any order to the persistent memory while allowing the consistent state of the persistent memory to be recovered during a reboot sequence; and

serially commit each episode of the plurality of episodes to persist the actions to the persistent memory.

3 . The computing device of claim 1 , wherein the machine executable code causes the computing device to:

include a write action to write data to a page and a write action to update a checksum of the page into the episode.

4 . The computing device of claim 1 , wherein the machine executable code causes the computing device to:

include a write action to modify metadata within a per-page structure and a write action to update a checksum of the page into the episode.

5 . The computing device of claim 1 , wherein the machine executable code causes the computing device to:

persist the one or more actions in a non-guaranteed order to the persistent memory.

6 . The computing device of claim 1 , wherein the machine executable code causes the computing device to:

include a write action to modify metadata within a per-page structure and a write action to write data to a page.

7 . The computing device of claim 1 , wherein the machine executable code causes the computing device to:

maintain a state within a per-page structure associated with a page within the persistent memory to indicate whether a scanner has completed traversal of a page.

8 . The computing device of claim 1 , wherein the machine executable code causes the computing device to:

receive a client I/O operation directed to a page within the persistent memory; and

trigger execute of the scanner on-demand upon the page based upon receiving the client I/O operation.

9 . A method comprising:

grouping one or more actions into a set of actions based upon a determination that the one or more actions can be persisted in any order to persistent memory while allowing a consistent state of the persistent memory to be recovered during a reboot sequence;

generating an episode to include the set of actions;

executing the episode to persist the one or more actions to the persistent memory; and

performing the reboot sequence to fix inconsistencies of the persistent memory to recover the persistent memory into the consistent state.

10 . The method of claim 9 , comprising:

in response to receiving a client I/O operation directed to a page within the persistent memory, triggering execute of the scanner on-demand upon the page based upon receiving the client I/O operation.

11 . The method of claim 9 , comprising:

identifying a write action to write data to a page and a write action to update a checksum of the page as actions that can be persisted in any order to the persistent memory while allowing the consistent state of the persistent memory to be recovered during the reboot sequence.

12 . The method of claim 9 , comprising:

receiving a client I/O operation directed to a page within the persistent memory; and

triggering execute of the scanner on-demand upon the page based upon receiving the client I/O operation.

13 . The method of claim 9 , comprising:

identify a write action to modify metadata within a per-page structure and a write action to update a checksum of the page into the episode as actions that can be persisted in any order to the persistent memory while allowing the consistent state of the persistent memory to be recovered during the reboot sequence.

14 . The method of claim 9 , comprising:

maintain a state within a per-page structure associated with a page within the persistent memory to indicate whether a scanner has completed traversal of a page.

15 . A non-transitory machine readable medium comprising instructions, which when executed by a machine, causes the machine to:

group one or more actions into a set of actions based upon a determination that the one or more actions can be persisted in any order to persistent memory while allowing a consistent state of the persistent memory to be recovered during a reboot sequence;

generate an episode to include the set of actions;

execute the episode to persist the one or more actions to the persistent memory; and

perform the reboot sequence to fix inconsistencies of the persistent memory to recover the persistent memory into the consistent state.

16 . The non-transitory machine readable medium of claim 15 , wherein the takeover sequence comprises:

in response to receiving a client I/O operation directed to a page within the persistent memory, trigger execute of the scanner on-demand upon the page based upon receiving the client I/O operation.

17 . The non-transitory machine readable medium of claim 15 , wherein the takeover sequence comprises:

identify a write action to write data to a page and a write action to update a checksum of the page as actions that can be persisted in any order to the persistent memory while allowing the consistent state of the persistent memory to be recovered during the reboot sequence.

18 . The non-transitory machine readable medium of claim 15 , wherein the takeover sequence comprises:

receive a client I/O operation directed to a page within the persistent memory; and

trigger execute of the scanner on-demand upon the page based upon receiving the client I/O operation.

19 . The non-transitory machine readable medium of claim 15 , wherein the takeover sequence comprises:

identify a write action to modify metadata within a per-page structure and a write action to update a checksum of the page into the episode as actions that can be persisted in any order to the persistent memory while allowing the consistent state of the persistent memory to be recovered during the reboot sequence.

20 . The non-transitory machine readable medium of claim 15 , wherein the takeover sequence comprises:

maintain a state within a per-page structure associated with a page within the persistent memory to indicate whether a scanner has completed traversal of a page.

Continuity (3)
Continuation 18302212 · Apr 18, 2023
Division 17018176 · Sep 11, 2020
Related Publication 20240411645A1 · Dec 12, 2024
References Cited (21)
US 7552148B2 · Liu et al. · 2009 [cited by applicant]
US 8914344B1 · Anderson et al. · 2014 [cited by applicant]
US 9471435B2 · Michihata · 2016 [cited by examiner]
US 10635552B1 · Raju et al. · 2020 [cited by applicant]
US 11210184B1 · Gupta et al. · 2021 [cited by applicant]
US 11418555B1 · Cafaro et al. · 2022 [cited by applicant]
US 11630733B2 · Curtis-Maury et al. · 2023 [cited by applicant]
US 12066897B2 · Curtis-Maury · 2024 [cited by applicant]
US 20090182790A1 · Hluchyj et al. · 2009 [cited by applicant]
US 20160034370A1 · Nanduri et al. · 2016 [cited by applicant]
US 20160062856A1 · Mu et al. · 2016 [cited by applicant]
US 20160124812A1 · Sarkar et al. · 2016 [cited by applicant]
US 20160342479A1 · Chen et al. · 2016 [cited by applicant]
US 20190340083A1 · Ou-Yang · 2019 [cited by examiner]
US 20210073088A1 · Dharmadhikari et al. · 2021 [cited by applicant]
US 20230251932A1 · Curtis-Maury et al. · 2023 [cited by applicant]
Non-Final Office Action mailed on Dec. 21, 2023 for U.S. Appl. No. 18/302,212, filed Apr. 18, 2023, 12 pages. [cited by applicant]
Notice of Allowance mailed on Apr. 12, 2024 for U.S. Appl. No. 18/302,212, filed Apr. 18, 2023, 05 pages. [cited by applicant]
Restriction Requirement mailed on Apr. 28, 2022 for U.S. Appl. No. 17/018,176, 6 pages. [cited by applicant]
Non-Final Office Action mailed on Aug. 5, 2022 for U.S. Appl. No. 17/018,176, 11 pages. [cited by applicant]
Notice of Allowance mailed on Dec. 14, 2022 for U.S. Appl. No. 17/018,176, 6 pages. [cited by applicant]