IP Library Granted Patent US 11,194,706
Granted Patent B2
US 11,194,706 · App. 16/561,798 · Granted Dec 7, 2021

System and method for split storage stack

Inventors: Andrew M. Rogers (Bellevue, WA); Bernhard Poess (Redmond, WA); Gleb Kurtsov (San Jose, CA)
Assignee: Facebook Technologies, LLC
G06F12/023G06F9/545G06F12/0653G06F12/1433G06F9/544G06F2209/548
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,194,706
App. No.
16/561,798
Granted
Dec 7, 2021
Kind
B2
Abstract

In certain embodiments, a method includes starting an application as a first process within a user space of an operating system. The application instantiates a data storage system associated with the operating system. The method also includes starting a block device service as a second process within the user space of the operating system, the block device service being configured to manage a persistent storage device of the computing device. In addition, the method includes receiving, by a kernel of the operating system, a system call request from the application to communicate with the block device service, the system call request is generated by the application using the data storage system and comprises an access request to access the persistent storage device. The method further includes providing the application, in response to the system call request, access to the block device service through the IPC channel.

Claims (47)

1. A method comprising, by an operating system executing on a computing device:

starting an application as a first process within a user space of the operating system, wherein the application instantiates a data storage system associated with the operating system wherein the data storage system is located within the application;

starting a block device service as a second process within the user space of the operating system, the block device service being configured to manage a persistent storage device of the computing device;

receiving, by a kernel of the operating system, a system call request to communicate with the block device service through an inter process communication (IPC) channel, wherein the system call request is generated by the application using the data storage system and comprises an access request to access the persistent storage device; and

providing the application, in response to the system call request, access to the block device service through the IPC channel.

2. The method of claim 1 , wherein the data storage system is a file system library or a key value store.

3. The method of claim 1 , further comprising:

sending, by the kernel in response to the system call request, the access request to the block device service.

4. The method of claim 1 , further comprising:

reading or writing data on a data block of the persistent storage device based on the access provided to the block device service.

5. The method of claim 1 , further comprising:

sending a request to a logical volume service during set-up of the application; and

receiving at the application an allocation of one or more data blocks at the persistent storage device of the computing device.

6. The method of claim 5 , wherein the logical volume service informs the block device service of the allocation of the one or more data blocks at the persistent storage device.

7. The method of claim 5 , wherein the logical volume service coordinates the one or more data blocks of the application with and one or more other data blocks allocated to another application operating as a third process within the user space of the operating system.

8. The method of claim 5 , wherein the logical volume service allocates the one or more data blocks to the application and another application, wherein the application and the another application share the one or more data blocks.

9. The method of claim 8 , further comprising:

reallocating the one or more data blocks at the persistent storage device to the application after the another application writes or reads the data block.

10. The method of claim 1 , further comprising:

receiving another access request by another application to access the persistent storage device; and

determining to grant or deny the another access request based on an allocation of one or more data blocks at the persistent storage device.

11. The method of claim 1 , wherein the block device service is secure to interface with hardware of the computing device.

12. The method of claim 5 , further comprising:

sending an additional access request to the logical volume service; and

receiving at the application an additional allocation of one or more additional data blocks at the persistent storage device of the computing device.

13. One or more computer-readable non-transitory storage media embodying software that is operable when executed to:

start an application as a first process within a user space of an operating system, wherein the application instantiates a data storage system associated with the operating system, wherein the data storage system is located within the application;

start a block device service as a second process within the user space of the operating system, the block device service being configured to manage a persistent storage device of the computing device;

receive, by a kernel of the operating system, a system call request to communicate with the block device service through an inter process communication (IPC) channel, wherein the system call request is generated by the application using the data storage system and comprises an access request to access the persistent storage device; and

provide the application, in response to the system call request, access to the block device service through the IPC channel.

14. The media of claim 13 , wherein the data storage system is a file system library or a key value store.

15. The media of claim 13 , further comprising:

send, by the kernel in response to the system call request, the access request to the block device service.

16. The media of claim 13 , further comprising:

read or write data on a data block of the persistent storage device based on the provided access to the block device service.

17. The media of claim 13 , further comprising:

send a request to a logical volume service during set-up of the application; and

receive at the application an allocation of one or more data blocks at the persistent storage device of the computing device.

18. The media of claim 17 , wherein the logical volume service informs the block device service of the allocation of the one or more data blocks at the persistent storage device.

19. A system comprising:

one or more processors; and

one or more computer-readable non-transitory storage media coupled to one or more of the processors and comprising instructions operable when executed by one or more of the processors to cause the system to:

start an application as a first process within a user space of an operating system, wherein the application instantiates a data storage system associated with the operating system, wherein the data storage system is located within the application;

start a block device service as a second process within the user space of the operating system, the block device service being configured to manage a persistent storage device of the computing device;

receive, by a kernel of the operating system, a system call request from the application to communicate with the block device service through an inter process communication (IPC) channel, wherein the system call request is generated by the application using the data storage system and comprises an access request to access the persistent storage device; and

provide the application, in response to the system call request, access to the block device service through the IPC channel.

20. The system of claim 19 , wherein the data storage system is a file system library or a key value store.

Assignments (2)
CHANGE OF NAME Recorded Jul 6, 2022
From: FACEBOOK TECHNOLOGIES, LLC
To: META PLATFORMS TECHNOLOGIES, LLC
Reel/Frame 060591/0848 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2019
From: ROGERS, ANDREW M.; POESS, BERNHARD; KURTSOV, GLEB
To: FACEBOOK TECHNOLOGIES, LLC
Reel/Frame 050319/0466 →
Continuity (1)
Related Publication 20210073116A1 · Mar 11, 2021