IP Library Granted Patent US 10,705,952
Granted Patent B2
US 10,705,952 · App. 15/157,371 · Granted Jul 7, 2020

User space data storage management

Inventors: Vishal Kanaujia (Bangalore, IN); Ramesh Chander (Bangalore, IN); Manavalan Krishnan (Fremont, CA); Brian W. O'Krafka (Austin, TX); Johann George (Sunnyvale, CA)
Assignee: SANDISK TECHNOLOGIES LLC
G06F12/0246G06F12/10G06F2212/7201
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 10,705,952
App. No.
15/157,371
Granted
Jul 7, 2020
Kind
B2
Abstract

Systems, methods, and/or devices are used to store metadata in a storage system. In one aspect, a first user space module sends a logical memory request to a memory management module of a kernel space module. The logical memory request includes data and metadata. A second user space module obtains the metadata of the logical memory request. A storage engine of the second user space module determines, in accordance with the obtained metadata, a location in non-volatile memory for the data. A second user space module generates a physical memory request including an indication of the non-volatile memory for the data. The second user space module transmits the physical memory request to the kernel space memory management module.

Claims (47)

1. A method for processing a physical memory request on a computer comprising a memory divided into a kernel space and a user space, the method comprising:

sending, by a first user space module implemented in the user space, a logical memory request to a kernel space memory management module of a kernel space module, implemented in the kernel space, wherein the logical memory request includes data and metadata;

obtaining, by a second user space module implemented in the user space, the metadata of the logical memory request;

determining, by a storage engine of the second user space module, in accordance with the obtained metadata, a location for the data in non-volatile memory of a storage device;

generating, by the second user space module, a physical memory request including an indication of the location in the non-volatile memory for the data; and

transmitting, by the second user space module, to the kernel space memory management module, the physical memory request.

2. The method of claim 1 , wherein the data is retained by the kernel space memory management module during the sending, obtaining, determining, generating, and transmitting.

3. The method of claim 1 , wherein the metadata includes a logical block address of the non-volatile memory.

4. The method of claim 1 , wherein:

the physical memory request is generated by the storage engine of the second user space module, wherein the physical memory request includes a piggybacked request, the piggybacked request including the indication of the location in the non-volatile memory for the data; and

the kernel space memory management module processes the piggybacked request of the physical memory request.

5. The method of claim 4 , wherein the kernel space memory management module transmits, to the first user space module, a response to the logical memory request.

6. The method of claim 1 , wherein:

the physical memory request is generated by a formatting module of the second user space module;

the physical memory request is transmitted to the kernel space memory management module by the formatting module; and

the kernel space memory management module processes the physical memory request.

7. The method of claim 6 , wherein the storage engine transmits, to the first user space module, a response to the logical memory request.

8. The method of claim 1 , wherein an intercept interface of the second user space module periodically polls the kernel space memory management module to determine when logical memory requests are available.

9. A computer system, comprising:

one or more processors; and

memory divided into a kernel space and a user space, the memory storing one or more programs, which when executed by the one or more processors cause the computer system to:

send, by a first user space module implemented in the user space, a logical memory request to a kernel space memory management module of a kernel space module implemented in the kernel space, wherein the logical memory request includes data and metadata;

obtain, by a second user space module implemented in the user space, the metadata of the logical memory request;

determine, by a storage engine of the second user space module, in accordance with the obtained metadata, a location for the data in non-volatile memory of a storage device;

generate, by the second user space module, a physical memory request including an indication of the location in the non-volatile memory for the data; and

transmit, by the second user space module, to the kernel space memory management module, the physical memory request.

10. The computer system of claim 9 , wherein the one or more programs include a block driver redirector, comprising the kernel space module that redirects logical memory requests, received from the first user space module, to the storage engine of the second user space module for determining physical memory locations in accordance with the logical memory requests.

11. The computer system of claim 10 , wherein the one or more programs include a physical device driver, and the block driver redirector is further for conveying resulting physical memory requests received from the storage engine of the second user space module to said non-volatile memory via the physical device driver.

12. The computer system of claim 9 , wherein the data is retained by the kernel space memory management module during the sending, obtaining, determining, generating, and transmitting.

13. The computer system of claim 9 , wherein the metadata includes a logical block address of the non-volatile memory.

14. The computer system of claim 9 , wherein:

the physical memory request is generated by the storage engine of the second user space module, wherein the physical memory request includes a piggybacked request, the piggybacked request including the indication of the location in the non-volatile memory for the data; and

the kernel space memory management module processes the piggybacked request of the physical memory request.

15. The computer system of claim 14 , wherein the kernel space memory management module transmits, to the first user space module, a response to the logical memory request.

16. The computer system of claim 9 , wherein:

the physical memory request is generated by a formatting module of the second user space module;

the physical memory request is transmitted to the kernel space memory management module by the formatting module; and

the kernel space memory management module processes the physical memory request.

17. The computer system of claim 16 , wherein the storage engine transmits, to the first user space module, a response to the logical memory request.

18. The computer system of claim 9 , wherein an intercept interface of the second user space module periodically polls the kernel space memory management module to determine when logical memory requests are available.

19. A non-transitory computer readable storage medium, storing one or more programs configured for execution by one or more processors of a computer system comprising a memory divided into a kernel space and a user space, the one or more programs including instructions that when executed by the one or more processors of the computer system, cause the computer system to:

send, by a first user space module implemented in the user space, a logical memory request to a kernel space memory management module of a kernel space module, implemented in the kernel space, wherein the logical memory request includes data and metadata;

obtain, by a second user space module, the metadata of the logical memory request;

determine, by a storage engine of the second user space module implemented in the user space, in accordance with the obtained metadata, a location for the data in non-volatile memory of a storage device;

generate, by the second user space module, a physical memory request including an indication of the location in the non-volatile memory for the data; and

transmit, by the second user space module, to the kernel space memory management module, the physical memory request.

20. The non-transitory computer readable storage medium of claim 19 , wherein the data is retained by the kernel space memory management module during the sending, obtaining, determining, generating, and transmitting.

Assignments (5)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 13, 2016
From: KANAUJIA, VISHAL; CHANDER, RAMESH; KRISHNAN, MANAVALAN; O'KRAFKA, BRIAN W.; GEORGE, JOHANN
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 039427/0119 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038812/0954 →
Continuity (2)
Provisional Application 62250839 · Nov 4, 2015
Related Publication 20170123971A1 · May 4, 2017
Cited By (1)
US 12,547,481