IP Library Granted Patent US 9,778,879
Granted Patent B2
US 9,778,879 · App. 14/921,044 · Granted Oct 3, 2017

Flushless transactional layer

Inventor: Marcus Eduardo Markiewicz (Mercer Island, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F3/0659G06F3/061G06F3/0619G06F3/0676G06F12/0868G06F2212/1016G06F2212/1032G06F2212/21G06F2212/281G06F2212/311
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 9,778,879
App. No.
14/921,044
Granted
Oct 3, 2017
Kind
B2
Abstract

Writing data to storage utilizing a diverged thread for asynchronous write operations is provided. On a first thread, an analysis engine analyzes and identifies changed information to write to storage and an I/O manager copies the writes into buffers and places the buffers into a queue, while on a second thread, a flushless transactional layer (FTL) drive executes the writes to storage. By allowing the analysis to continue and enqueue writes on a first thread while the writes are written to storage on a second thread, the CPU and I/O of the system are utilized in parallel. Accordingly, efficiency of the computing device is improved.

Claims (49)

1. A computer-implemented method for writing data to storage, comprising:

receiving a write request at an I/O manager to write data to a storage device;

establishing a divergence point by the I/O manager from a first thread to a second thread based on the write request;

on the first thread, processing the write request and storing one or more writes of data in a queue;

on the second thread, a flushless transaction layer manager executing the one or more writes of data to the storage device, wherein the second thread executes the one or more writes of data to the storage device asynchronously while the first thread continues to process the write request and store writes of data in the queue; and

receiving by the I/O manager an indication of a completion of executing the one or more writes of data to the storage device, wherein the indication of the completion establishes a convergence of the first thread and the second thread.

2. The computer-implemented method of claim 1 , wherein processing the write request comprises analyzing the data for identifying one or more pieces of changed information.

3. The computer-implemented method of claim 2 , wherein storing one or more writes of data in a queue comprises:

copying the one or more pieces of changed information in one or more buffers; and

placing the one or more buffers in the queue.

4. The computer-implemented method of claim 3 , wherein executing the one or more writes of data to the storage device comprises:

determining whether the queue is empty; and

when the queue is not empty, issuing a command to a storage device controller to write the changed information in the buffer to a storage medium.

5. The computer-implemented method of claim 1 , wherein after convergence of the first thread and the second thread, reading the stored data into a cache.

6. A system for writing data to storage, comprising:

one or more processors for executing programmed instructions;

memory, coupled to the one or more processors, for storing program instruction steps for execution by the one or more processors;

an I/O manager operable to:

receive a write request to write data to a storage device;

establish a divergence point from a first thread to a second thread;

process the write request; and

store one or more writes of data in a queue; and

a flushless transactional layer drive operable to execute the one or more writes of data to the storage device on the second thread and further operable to execute the one or more writes of data to the storage device asynchronously while the I/O manager continues to process the write request and store writes of data in the queue.

7. The system of claim 6 , wherein the I/O manager is further operable to receive an indication of a completion of executing the one or more writes of data to the storage device.

8. The system of claim 7 , wherein the indication of the completion establishes a convergence of the first thread and the second thread.

9. The system of claim 6 , wherein in processing the write request, the I/O manager is operable to call an analysis engine to analyze the data for identifying one or more pieces of changed information.

10. The system of claim 9 , wherein in storing one or more writes of data in a queue, the I/O manager is operable to:

copy the one or more pieces of changed information in one or more buffers; and

place the one or more buffers in a queue.

11. The system of claim 10 , wherein in executing the one or more writes of data to the storage device, the flushless transactional layer drive is operable to:

determine whether the queue is empty; and

when the queue is not empty, issue a command to a storage device controller to write the changed information in the buffer to a storage medium.

12. The system of claim 6 , wherein after convergence of the first thread and the second thread, the I/O manager is further operable to read the stored data into a cache.

13. One or more computer storage media storing computer-usable instructions that, when used by one or more computing devices, cause the one or more computing devices to perform a method for writing data to storage, the method comprising:

receiving a write request to write data to a storage device;

establishing a divergence point from a first thread to a second thread based on the write request;

on the first thread, the one or more computing devices:

analyzing the data for identifying changed information from a last-saved version;

copying the changed information into one or more empty buffers; and

enqueuing the one or more buffers in a queue; and

on the second thread, the one or more computing devices:

executing writes of the changed information from the one or more buffers to the storage device,

wherein the second thread executes writes of the changed information from the one or more buffers to the storage device asynchronously while the first thread continues to process the write request and enqueue changed information.

14. The one or more computer storage media of claim 13 , further comprising executing writes of the changed information from the one or more buffers to the storage device, wherein the indication of the completion establishes a convergence of the first thread and the second thread.

15. The one or more computer storage media of claim 14 , wherein after convergence of the first thread and the second thread, reading the stored data into a cache.

16. The one or more computer storage media of claim 13 , wherein executing writes of the changed information from the one or more buffers to the storage device comprises:

determining whether the queue is empty; and

when the queue is not empty, issuing a command to a storage device controller to write the changed information in the buffer to a storage medium.

17. The one or more computer storage media of claim 13 , wherein executing writes of the changed information from the one or more buffers to the storage device comprises writing the changed information to a disk drive to store on a disk.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2015
From: MARKIEWICZ, MARCUS EDUARDO
To: MICROSOFT TECHNOLOGY LICENSING, LLC.
Reel/Frame 036864/0924 →
Continuity (1)
Related Publication 20170115931A1 · Apr 27, 2017