IP Library Granted Patent US 11,544,007
Granted Patent B2
US 11,544,007 · App. 17/216,869 · Granted Jan 3, 2023

Forwarding operations to bypass persistent memory

Inventors: Ananthan Subramanian (San Ramon, CA); Matthew Fontaine Curtis-Maury (Apex, NC); Vinay Devadas (Apex, NC); Bulli Venkata Rajesh Vipperla (Morrisville, NC)
Assignee: NetApp, Inc.
G06F3/0659G06F3/064G06F3/067G06F3/0619G06F15/17331
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 11,544,007
App. No.
17/216,869
Granted
Jan 3, 2023
Kind
B2
Abstract

Techniques are provided for forwarding operations to bypass persistent memory. A modify operation, targeting an object, may be received at a persistent memory tier of a node. If a forwarding policy indicates that forwarding is not enabled for the modify operation and the target object, then the modify operation is executed through a persistent memory file system. If the forwarding policy indicates that forwarding is enabled for the modify operation and the target object, then the modify operation is forwarded to a file system tier as a forwarded operation for execution through a storage file system.

Claims (54)

1. A method comprising:

receiving, at a persistent memory tier of a node, a modify operation to write data to a target object;

in response to a forwarding policy indicating that forwarding is not enabled for the modify operation and the target object, executing the modify operation through a persistent memory file system of the persistent memory tier; and

in response to the forwarding policy indicating that forwarding is enabled for the modify operation and the target object, forwarding the modify operation as a forwarded operation to a file system tier of the node for execution through a storage file system, wherein the execution includes:

logging the forwarded operation into a log of the node;

writing the data to the target object within the storage file system; and

in response to the forwarded operation being logged in the log, removing a stale copy of the target object from the persistent memory file system.

2. The method of claim 1 , comprising:

in response to removing the stale copy of the target object, acknowledging the modify operation as complete to a client.

3. The method of claim 1 , comprising:

defining the forwarding policy to enable forwarding of modify operations targeting the target object until a forwarding duration timespan ends.

4. The method of claim 1 , comprising:

in response to the forwarding duration timespan ending after the modify operation has been forwarded to the file system tier as the forwarded operation and before completion of the forwarded operation, completing execution of the forwarded operation through the storage file system.

5. The method of claim 1 , comprising:

defining the forwarding policy to enable forwarding of modify operations having at least one of a hole punch operation type or a partial write operation type that target non-tiered blocks not maintained within the persistent memory file system or a multi-block sequential write operation type.

6. The method of claim 1 , comprising:

in response to determining that a first modify operation spans a plurality of objects and that a subset of the plurality of objects satisfy the forwarding policy to enable forwarding, performing forwarding for the first modify operation with respect to the plurality of objects.

7. The method of claim 1 , wherein the removing the stale copy comprises:

invoking a remote direct memory access transfer to a remote node that is partnered with the node, wherein the remote direct memory access transfer indicates that the stale copy of the target object is being removed from the persistent memory file system.

8. The method of claim 1 , comprising:

blocking the node from implementing a consistency point to flush data from the storage file system to storage until pending remote direct memory access transfers from the node to a remote node are complete.

9. The method of claim 1 , comprising:

maintaining a count of the pending remote direct memory access transfers from the node to a remote node; and

blocking the node from implementing a consistency point to flush data from the storage file system to storage until the count indicates that there are no pending remote direct memory access transfers relevant to the consistency point.

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

receive, at a persistent memory tier of a node, a modify operation to write data to a target object;

determine that a forwarding policy specifies that the modify operation is to be forwarded as a forwarded operation to a file system tier of the node for execution through a storage file system; and

in response to identifying a pending framing operation that is to notify the storage file system that more up-to-date data of a block resides within a persistent memory file system compared to a corresponding block within the storage file system, synchronize the forwarded operation and the pending framing operation by either suspending the forwarded operation or causing the pending framing operation to skip the target object.

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

perform a framing technique to identify blocks within the persistent memory file system that comprise more up-to-date data than corresponding blocks within the storage file system;

transmit framing operations, including the pending framing operation, to the storage file system to notify the storage file system that the corresponding blocks are stale, wherein the framing operations comprise file block numbers of the blocks comprising the more up-to-date data; and

utilize, by the storage file system, the file block numbers to retrieve the more up-to-date data from the blocks within the persistent memory file system to overwrite the corresponding blocks in the storage file system.

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

suspend the forwarded operation based upon a determination that the pending framing operation is directed to a subset of file block numbers targeted by the forwarded operation.

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

suspend the forwarded operation based upon a file block number targeted by the forwarded operation corresponding to a dirty block associated with a current consistency point that is to store the dirty block to storage.

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

transition the forwarded operation from a frame dirty state for a next consistency point to a real dirty state.

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

modify execution of framing operations to skip file block numbers targeted by a pending forwarded operation.

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

modify execution of framing operations to skip file block numbers that have been forwarded and removed from the persistent memory file system while framing was in progress.

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

compare a first generation count, maintained by the persistent memory file system and associated with a framing operation, to a second generation count maintained by the storage file system for an object targeted by the framing operation to determine whether the first generation count and the second generation count are valid.

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

determine whether to suspend the forwarded operation or cause the pending framing operation to skip the target object based upon an internal state associated with a bit mask within a buffer header of the storage file system.

19. A computing device comprising:

a memory comprising machine executable code; and

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

log operations, executed by a partner node and mirrored from the partner node to the computing device, into a log;

determine that the partner node has failed; and

selectively replay the operations within the log at the computing device, wherein forwarded operations within the log are replayed to modify a storage file system of the computing device, and wherein forwarded operations targeting file blocks numbers with unknown block states are replayed upon a persistent memory file system of the computing device.

20. The computing device of claim 19 , wherein the machine executable code causes the computing device to:

during the selective replay of the operations, skip forwarded operations that target file block numbers having block states within the persistent memory file system that are known.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2021
From: SUBRAMANIAN, ANANTHAN; CURTIS-MAURY, MATTHEW FONTAINE; DEVADAS, VINAY; VIPPERLA, BULLI VENKATA RAJESH
To: NETAPP INC.
Reel/Frame 055763/0524 →
Continuity (1)
Related Publication 20220317921A1 · Oct 6, 2022
Cited By (1)
US 12,474,873