IP Library › Granted Patent US 12,242,428
Granted Patent B2
US 12,242,428 · App. 18/514,529 · Granted Mar 4, 2025

Freeing pages within persistent memory

Inventors: Rupa Natarajan (Sunnyvale, CA); Ananthan Subramanian (San Ramon, CA)
Assignee: NetApp, Inc.
G06F16/1805G06F16/162G06F16/2246
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,242,428
App. No.
18/514,529
Granted
Mar 4, 2025
Kind
B2
Abstract

Techniques are provided for utilizing a log to free pages from persistent memory. A log is maintained to comprise a list of page block numbers of pages within persistent memory of a node to free. A page block number, of a page, within the log is identified for processing. A reference count, corresponding to a number of references to the page block number, is identified. In response to the reference count being greater than 1, the reference count is decremented and the page block number is removed from the log. In response to the reference count being 1, the page is freed from the persistent memory and the page block number is removed from the log.

Claims (52)

1. A computing device comprising:

a persistent memory file system;

a persistent memory into which the persistent memory file system stores data according to a byte-addressable format;

a frontend process that processes client operations directed to the data stored within the persistent memory, wherein the frontend process utilizes an application programming interface to:

insert, into a log, page block numbers of pages within the persistent memory based upon the pages storing data targeted by a delete operation, wherein the page block numbers are inserted into the log while the pages store the data to be deleted by the delete operation; and

in response to inserting the page block numbers into the log and before the pages have been freed from the persistent memory, transmit a response to a client that the delete operation was successfully performed, wherein the response is transmitted while the pages still store the data to be deleted by the delete operation; and

a backend worker that utilizes the log to determine whether to retain or free the pages from the persistent memory.

2. The computing device of claim 1 , wherein the frontend process:

in response to the computing device recovering from a failure, traverse a file system tree to reconstruct a current list of page block numbers of pages to free; and

utilize the current list of page block numbers to rebuild the log.

3. The computing device of claim 1 , wherein the frontend process:

implement the log as a doubly-linked list of page block numbers to be freed.

4. The computing device of claim 1 , wherein the frontend process:

inserts, into the log, a root page block number of a page in response to the root page block number being unlinked from an inofile.

5. The computing device of claim 1 , wherein the frontend process:

in response to a root page block number being unlinked from a file system information entry, inserts the root page block number of a page into the log.

6. The computing device of claim 1 , wherein the computing device hosts a persistent memory storage tier for managing the persistent memory and a storage file system tier for managing storage different than the persistent memory.

7. The computing device of claim 1 , wherein the frontend process:

in response to a root page block number being unlinked from a file system information entry, inserts the root page block number of a page into the log.

8. The computing device of claim 1 , wherein the frontend process:

inserts, into the log utilizing the API, a root page block number of a page in response to the root page block number being unlinked by a first node.

9. The computing device of claim 1 , wherein the frontend process:

inserts, into the log utilizing the API, a root page block number of a page in response to the root page block number being unlinked by a first node and an unlink command being mirrored to a second node for unlinking a corresponding root page block number within a filesystem maintained by the second node.

10. A method, comprising:

managing, by a persistent memory file system, a persistent memory for storing data according to a byte-addressable format; and

processing client operations directed to the data stored within the persistent memory by:

inserting, into a log, page block numbers of pages within the persistent memory based upon the pages storing data targeted by a delete operation, wherein the page block numbers are inserted into the log while the pages store the data to be deleted by the delete operation; and

in response to inserting the page block numbers into the log and before the pages have been freed from the persistent memory, transmitting a response to a client that the delete operation was successfully performed, wherein the response is transmitted while the pages still store the data to be deleted by the delete operation

utilizing the log to determine whether to retain or free the pages from the persistent memory.

11. The method of claim 10 , further comprising:

rebuilding the log by traversing a file system tree to reconstruct a current list of page block numbers of pages to free.

12. The method of claim 10 , further comprising:

inserting a batch of page block numbers into the log based upon the batch of page block numbers corresponding to pages of data targeted by an overwrite operation.

13. The method of claim 10 , further comprising:

inserting, into the log, a root page block number of a page in response to the root page block number being unlinked from an inofile.

14. The method of claim 10 , further comprising:

in response to a root page block number being unlinked from a file system information entry, inserting the root page block number of a page into the log.

15. The method of claim 10 , further comprising:

in response to a root page block number being unlinked, inserting the root page block number of a page into the log.

16. The method of claim 10 , further comprising:

inserting, into the log, a root page block number of a page in response to the root page block number being unlinked by a first node.

17. The method of claim 10 , further comprising:

inserting, into the log, a root page block number of a page in response to the root page block number being unlinked by a first node and an unlink command being mirrored to a second node for unlinking a corresponding root page block number within a filesystem maintained by the second node.

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

manage a persistent memory for storing data according to a byte-addressable format; and

insert, into a log, page block numbers of pages within the persistent memory based upon the pages storing data targeted by a delete operation, wherein the page block numbers are inserted into the log while the pages store the data to be deleted by the delete operation; and

in response to inserting the page block numbers into the log and before the pages have been freed from the persistent memory, transmit a response to a client that the delete operation was successfully performed, wherein the response is transmitted while the pages still store the data to be deleted by the delete operation; and

determine, using the log, whether to retain or free the pages from the persistent memory.

19. The non-transitory machine readable medium of claim 18 , wherein the instructions cause the machine to:

insert, into the log, a root page block number of a page in response to the root page block number being unlinked by a first node and an unlink command being mirrored to a second node for unlinking a corresponding root page block number within a filesystem maintained by the second node.

20. The non-transitory machine readable medium of claim 18 , wherein the instructions cause the machine to:

implement the log as a doubly-linked list of page block numbers to be freed.

Continuity (3)
Continuation 17958497 · Oct 3, 2022
Continuation 16852584 · Apr 20, 2020
Related Publication 20240086374A1 · Mar 14, 2024
References Cited (41)
US 5909540A · Carter · 1999 [cited by examiner]
US 7130983B1 · DeTar, Jr. et al. · 2006 [cited by applicant]
US 7921086B1 · Bromley et al. · 2011 [cited by applicant]
US 9223843B1 · Madhavarapu et al. · 2015 [cited by applicant]
US 9442955B1 · Pawar · 2016 [cited by examiner]
US 10360149B2 · Marathe et al. · 2019 [cited by applicant]
US 10452298B2 · Kurjanowicz · 2019 [cited by examiner]
US 10534768B2 · Madhavarapu et al. · 2020 [cited by applicant]
US 10552359B2 · Xue et al. · 2020 [cited by applicant]
US 10606803B2 · Golander · 2020 [cited by examiner]
US 10719479B2 · Golander · 2020 [cited by examiner]
US 10983955B2 · Golander · 2021 [cited by examiner]
US 11063601B1 · Kesavan et al. · 2021 [cited by applicant]
US 11461281B2 · Natarajan et al. · 2022 [cited by applicant]
US 11822520B2 · Natarajan et al. · 2023 [cited by applicant]
US 20070143352A1 · Dunn · 2007 [cited by examiner]
US 20090103364A1 · Pekny · 2009 [cited by examiner]
US 20130290263A1 · Beaverson · 2013 [cited by examiner]
US 20140143210A1 · Dey · 2014 [cited by examiner]
US 20150355981A1 · Booss · 2015 [cited by examiner]
US 20160110408A1 · Madhavarapu et al. · 2016 [cited by applicant]
US 20160171034A1 · Konik · 2016 [cited by examiner]
US 20160246814A1 · Picken et al. · 2016 [cited by applicant]
US 20160283498A1 · Beaverson · 2016 [cited by examiner]
US 20160371295A1 · Aronovich et al. · 2016 [cited by applicant]
US 20170235749A1 · Beaverson · 2017 [cited by examiner]
US 20170371889A1 · Golander · 2017 [cited by examiner]
US 20170371947A1 · Golander · 2017 [cited by examiner]
US 20180046552A1 · Madhavarapu et al. · 2018 [cited by applicant]
US 20180343131A1 · George · 2018 [cited by examiner]
US 20200104047A1 · Subbarao · 2020 [cited by examiner]
US 20200320036A1 · Golander · 2020 [cited by examiner]
US 20210326216A1 · Subramanian et al. · 2021 [cited by applicant]
US 20210326266A1 · Curtis-Maury et al. · 2021 [cited by applicant]
US 20210326309A1 · Natarajan et al. · 2021 [cited by applicant]
US 20210328593A1 · Kesavan et al. · 2021 [cited by applicant]
US 20210405854A1 · Ahlberg et al. · 2021 [cited by applicant]
US 20230024485A1 · Natarajan et al. · 2023 [cited by applicant]
Access control mechanisms in a distributed, persistent memory system, Lanfranco Lopriore, IEEE, 2002, pp. 1066-1083. [cited by applicant]
Condit J. et al., “Better I/O Through Byte-Addressable, Persistent Memory,” SOSP '09 Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles, 2009, pp. 133-146. [cited by applicant]
Notice of Allowance mailed on Jul. 12, 2023 for U.S. Appl. No. 17/958,497, filed Oct. 3, 2022, 10 pages. [cited by applicant]