IP Library Granted Patent US 11,010,100
Granted Patent B1
US 11,010,100 · App. 17/037,108 · Granted May 18, 2021

Systems and methods for asynchronous writing of synchronous write requests based on a dynamic write threshold

Inventors: Scot Gray (Culver City, CA); Sean Lee (Culver City, CA)
Assignee: Open Drives LLC
G06F3/0659G06F3/0604G06F3/0673G06F3/0613
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,010,100
App. No.
17/037,108
Granted
May 18, 2021
Kind
B1
Abstract

An asynchronous storage system may perform asynchronous writing of data from different sets of received non-consecutive synchronous write requests based on a dynamic write threshold that varies according to parameters of the storage device and/or synchronous write request patterns. The asynchronous writing may include coalescing data from a set of non-consecutive write requests in a plurality of received write requests that contain different data for a particular file, issuing a single asynchronous write request with the data that is coalesced from each write request of the set of non-consecutive write requests to the storage device instead of each write request of the set of non-consecutive write requests, and writing the data that is coalesced from each write request of the set of non-consecutive write requests to the storage device with a single write operation that is executed in response to the single asynchronous write request.

Claims (62)

1. A method comprising:

receiving, from at least one client device at a first time, a first write request to write first data to a storage device;

providing, at the first time, a first confirmation message to the client device prior to writing the first data to the storage device;

determining that the first data is insufficient to satisfy a write threshold for writing the first data to the storage device, wherein the write threshold is satisfied upon receiving a particular amount of coalesced data for a particular file;

cache the first data in a local cache without writing the first data to the storage device in response to determining that the first data is less than the particular amount of coalesced data for satisfying the write threshold;

receiving, from the client device at a second time that is after the first time, a second write request to write second data to the storage device, and a third write request to write third data to the storage device after receiving the first write request;

providing, at the second time, a second confirmation message to the client device in response to the second write request, and a third confirmation message to the client device in response to the third write request and prior to writing the first data or the third data to the storage device;

caching the second data and the third data in the local cache with the first data;

determining that the first data and the second data are sufficient to satisfy the write threshold based on the first data and the second data comprising data for a same file, and total data from the first data and the second data being equal to or greater than the particular amount of coalesced data for the particular file necessary to satisfy the write threshold, wherein the particular amount of coalesced data satisfying the write threshold is less than a size of the local cache, wherein the third data comprises data for a different file than the first data and the second data, and wherein the particular amount of coalesced data is defined independent of the size of the local cache; and

providing, to the storage device or a file system associated with the storage device, a single request with the first data and the second data in response to determining that the first data and the second data are sufficient to satisfy the write threshold, wherein said providing comprises issuing the single request in place of the first write request and the second write request.

2. The method of claim 1 further comprising:

writing the first data and the second data to the storage device with a single write operation that is executed in response to the single request, and wherein the particular amount of coalesced data for satisfying the write threshold corresponds to a total amount of data that the storage device writes with the single write operation.

3. The method of claim 1 further comprising:

coalescing the first data and the second data to the single request based on the first write request and the second write request comprising a first file identifier, that indicates the first data and the second data are part of a common first file, and based on the third write request comprising a different second file identifier, that indicates the third data is part of another second file; and

wherein caching the second data and the third data comprises buffering the third data to the local cache in response to determining that the third data and other received data for the second file are insufficient to satisfy the write threshold.

4. The method of claim 1 further comprising:

receiving a plurality of write requests that contain data for different files at the first time; and

determining that the first data from the first write request is for a first file, and that the data from the plurality of write requests are for files that are different than the first file.

5. The method of claim 4 further comprising:

coalescing data from a set of non-consecutive write requests in the plurality of write requests that contain data for a second file; and

issuing, to the storage device or the file system associated with the storage device, a different single request with the data that is coalesced from each write request of the set of non-consecutive write requests.

6. The method of claim 4 further comprising:

writing the data from the plurality of write requests to the storage device in a first order that is different than a second order at which the plurality of write requests are received, wherein the first order is based on the data from different subsets of the plurality of write requests being sufficient to satisfy the write threshold and being directed to a common file.

7. The method of claim 4 further comprising:

grouping the plurality of write requests into different sets of write requests, wherein each set of write requests comprises write requests that contain data for a different file.

8. The method of claim 7 further comprising:

providing a single request to write collective data from each particular set of write requests with a single write operation in response to the collective data from the particular set of write requests satisfying the write threshold.

9. The method of claim 1 further comprising:

querying parameters of the storage device; and

configuring the write threshold based on the parameters of the storage device.

10. The method of claim 9 , wherein configuring the write threshold comprises:

setting the particular amount of coalesced data as a number of bytes of data from a common file at which the write threshold is satisfied.

11. The method of claim 10 , wherein configuring the write threshold further comprises:

setting an expiration time at which the write threshold is satisfied after receiving an initial write request containing data for a specific file and prior to receiving the number of bytes of data for the specific file.

12. The method of claim 1 further comprising:

removing the first data from the local cache in response to writing the first data and the second data to the storage device after providing the single request.

13. The method of claim 1 ,

wherein the single request with the first data and the second data is a first asynchronous write request,

wherein the third data of the third write request comprises data of a first file, and

wherein the first data of the first write request comprises data of a different second file; and

the method further comprising providing, to the storage device or the file system associated with the storage device, a second asynchronous write request with the third data after providing the first asynchronous write request in response to a time trigger, that starts upon receiving the third write request, being satisfied prior to collective data for the first file in at least the second asynchronous write request satisfying the write threshold.

14. The method of claim 1 further comprising:

modifying the write threshold in response to providing the single request with data that is coalesced from less than a specified number of write requests.

15. The method of claim 1 further comprising:

modifying the write threshold in response to providing the single request before a threshold amount of time since an earlier issued single request.

16. The method of claim 1 ,

wherein the first confirmation message is an indication to the client device that the first data has been stored prior to the first data being written to the storage device; and

wherein the second confirmation message is an indication to the client device that the second data has been stored prior to the second data being written to the storage device.

17. The method of claim 16 further comprising:

receiving a third confirmation message at a third time from the storage device, wherein the third confirmation message is an indication that the first data and the second data have been successfully stored to the storage device.

18. An asynchronous storage system comprising:

a local cache;

at least one storage device; and

one or more processors configured to:

receive, at a first time, a first write request to write first data to a storage device from at least one client device;

provide, at the first time, a first confirmation message to the client device prior to writing the first data to the storage device;

determine that the first data is insufficient to satisfy a write threshold for writing the first data to the storage device, wherein the write threshold is satisfied upon receiving a particular amount of coalesced data for a particular file;

cache the first data in the local cache without writing the first data to the at least one storage device in response to determining that the first data is less than the particular amount of coalesced data for satisfying the write threshold receive, at a second time that is after the first time, a second write request to write second data to the storage device from the client device, and a third write request to write third data to the storage device after receiving the first write request;

provide, at the second time, a second confirmation message to the client device in response to the second write request, and a third confirmation message to the client device in response to the third write request and prior to writing the first data or the third data to the storage device;

cache the second data and the third data in the local cache with the first data;

determine that the first data and the second data are sufficient to satisfy the write threshold based on the first data and the second data comprising data for a same file, and total data from the first data and the second data being equal to or greater than the particular amount of coalesced data for the particular file necessary to satisfy the write threshold, wherein the particular amount of coalesced data satisfying the write threshold is less than a size of the local cache, wherein the third data comprises data for a different file than the first data and the second data, and wherein the particular amount of coalesced data is defined independent of the size of the local cache; and

provide, to the storage device or a file system associated with the storage device, a single request with the first data and the second data in response to determining that the first data and the second data are sufficient to satisfy the write threshold, wherein said providing comprises issuing the single request in place of the first write request and the second write request.

Assignments (2)
CHANGE OF NAME Recorded Mar 31, 2021
From: OPEN DRIVES LLC
To: OPEN DRIVES, INC.
Reel/Frame 055792/0423 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2020
From: GRAY, SCOT; LEE, SEAN
To: OPEN DRIVES LLC
Reel/Frame 053922/0721 →
Continuity (1)
Continuation 16896062 · Jun 8, 2020
Cited By (1)
US 12,608,160