IP Library Granted Patent US 12,417,038
Granted Patent B2
US 12,417,038 · App. 18/528,556 · Granted Sep 16, 2025

Block allocation for persistent memory during aggregate transition

Inventors: Abdul Basit (Morrisville, NC); Ananthan Subramanian (San Ramon, CA); Ram Kesavan (Los Altos, CA); Matthew Fontaine Curtis-Maury (Apex, NC)
Assignee: NetApp, Inc.
G06F3/0631G06F3/0604G06F3/064G06F3/065G06F3/0679
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,417,038
App. No.
18/528,556
Granted
Sep 16, 2025
Kind
B2
Abstract

Techniques are provided for block allocation for persistent memory during aggregate transition. In a high availability pair including first and second nodes, the first node makes a determination that control of a first aggregate is to transition from the first node to the second node. A portion of available free storage space is allocated from a first persistent memory of the first node as allocated pages within the first persistent memory. Metadata information for the allocated pages is updated with an identifier of the first aggregate to create updated metadata information reserving the allocated pages for the first aggregate. The updated metadata information is mirrored to the second node, so that the second node also reserves those pages. Control of the first aggregate is transitioned to the second node. As a result, the nodes do not attempt allocating the same free pages to different aggregates during a transition.

Claims (54)

1. A method comprising:

maintaining pages within a persistent memory of a node, wherein the persistent memory includes a local partition utilized to service client I/O;

reclaiming unused pages of the persistent memory that are no longer referenced by at least one of an active file system of the node or a snapshot of the active file system, wherein the unused pages are reclaimed as free pages;

modifying metadata information with an aggregate identifier of an aggregate to reserve a set of pages as allocated pages available for subsequently storing data of the aggregate; and

utilizing the set of pages to store data of the client I/O directed to the aggregate.

2. The method of claim 1 , comprising:

constructing a list of the set of pages within the local partition that are available to allocate for storing data of the aggregate; and

evaluating the list of the set of pages to identify the set of pages to reserve.

3. The method of claim 1 , wherein the reserving further comprises:

tagging page block numbers of the set of pages to reserve the set of pages.

4. The method of claim 3 , comprising:

limiting new allocations, of pages, to the set of pages having the page block numbers tagged.

5. The method of claim 1 , wherein the reserving further comprises:

assigning the aggregate identifier of the aggregate to page block numbers of the set of pages to reserve the set of pages as the allocated pages for use by the aggregate.

6. The method of claim 1 , comprising:

maintaining a second node as a partner of the node according to a node pairing; and

mirroring data between persistent memories of the node and the second node based upon the node pairing.

7. The method of claim 6 , comprising:

mirroring the metadata information to the second node to cause the second node to build a second set of pages mirroring the set of pages.

8. The method of claim 7 , wherein the set of pages have the same page block numbers of pages maintained by the second node.

9. The method of claim 8 , comprising:

mirroring data between the set of pages of the node and the pages maintained by the second node.

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

maintain pages within a persistent memory of a node, wherein the persistent memory includes a local partition utilized to service client I/O;

reclaim unused pages of the persistent memory that are no longer referenced by at least one of an active file system of the node or a snapshot of the active file system, wherein the unused pages are reclaimed as pages;

modify metadata information with an aggregate identifier of an aggregate to reserve a set of pages as allocated pages available for subsequently storing data of the aggregate; and

utilize the set of pages to store data of the client I/O directed to the aggregate.

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

construct a list of the set of pages within the local partition that are available to allocate for storing data of the aggregate; and

evaluate the list of the set of pages to identify the set of pages to reserve.

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

tag page block numbers of the set of pages to reserve the set of pages.

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

limit new allocations, of pages, to the set of pages having the page block numbers tagged.

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

assign the aggregate identifier of the aggregate to page block numbers of the set of pages to reserve the set of pages as the allocated pages for use by the aggregate.

15. A node comprising: a persistent memory;

a memory comprising machine executable code for performing a method; and

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

maintain pages within the persistent memory, wherein the persistent memory includes a local partition utilized to service client I/O;

reclaim unused pages of the persistent memory that are no longer referenced by at least one of an active file system of the node or a snapshot of the active file system, wherein the unused pages are reclaimed as pages;

modify metadata information to reserve a set of pages available for subsequently storing data of an aggregate;

utilize the set of pages to store data of the client I/O directed to the aggregate; and

mirror the metadata information to a second node to cause the second node to build a second set of pages mirroring the set of pages.

16. The node of claim 15 , wherein the machine executable code causes the processor to:

construct a list of the set of pages within the local partition that are available to allocate for storing data of the aggregate; and

evaluate the list of the set of pages to identify the set of pages to reserve.

17. The node of claim 15 , wherein the machine executable code causes the processor to:

tag page block numbers of the set of pages to reserve the set of pages.

18. The node of claim 17 , wherein the machine executable code causes the processor to:

limit new allocations, of pages, to the set of pages having the page block numbers tagged.

19. The node of claim 16 , wherein the machine executable code causes the processor to:

assign an aggregate identifier of the aggregate to page block numbers of the set of pages to reserve the set of pages as allocated pages for use by the aggregate.

20. The node of claim 15 , wherein the set of pages have the same page block numbers of pages maintained by the second node.

Continuity (3)
Continuation 17750793 · May 23, 2022
Continuation 16911425 · Jun 25, 2020
Related Publication 20240103744A1 · Mar 28, 2024
References Cited (16)
US 10394485B1 · Chen et al. · 2019 [cited by applicant]
US 10459806B1 · He et al. · 2019 [cited by applicant]
US 11036677B1 · Grunwald et al. · 2021 [cited by applicant]
US 11340804B2 · Basit et al. · 2022 [cited by applicant]
US 11836363B2 · Basit et al. · 2023 [cited by applicant]
US 20110314219A1 · Ulrich et al. · 2011 [cited by applicant]
US 20120303685A1 · Ulrich et al. · 2012 [cited by applicant]
US 20170132091A1 · Leshinsky · 2017 [cited by examiner]
US 20170177448A1 · Muth · 2017 [cited by examiner]
US 20180046552A1 · Madhavarapu · 2018 [cited by examiner]
US 20180067662A1 · Leshinsky · 2018 [cited by examiner]
US 20180217756A1 · Liu et al. · 2018 [cited by applicant]
US 20200409583A1 · Kusters et al. · 2020 [cited by applicant]
US 20220283718A1 · Basit et al. · 2022 [cited by applicant]
Non final Office Action mailed Mar. 2, 2023 for U.S. Appl. No. 17/750,793, filed May 23, 2022, 9 pages. [cited by applicant]
Notice of Allowance mailed on Jul. 28, 2023 for U.S. Appl. No. 17/750,793, filed May 23, 2022, 7 pages. [cited by applicant]