IP Library Granted Patent US 9,405,682
Granted Patent B2
US 9,405,682 · App. 13/531,510 · Granted Aug 2, 2016

Storage device access using unprivileged software code

Inventors: Dmitry Meshchaninov (Maple Valley, WA); Dexter Paul Bradshaw (Duvall, WA); Suyash Sinha (Kirkland, WA)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
G06F12/0623G06F12/109G06F12/1458G06F12/1491G06F12/0238G06F13/102G06F2212/1016
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,405,682
App. No.
13/531,510
Granted
Aug 2, 2016
Kind
B2
Abstract

A method and system for establishing more direct access to a storage device from unprivileged code are described. Using a storage infrastructure mechanism to discover and enumerate storage architecture component(s), a user mode application requests a portion of the storage device to store application-related data. That portion is mapped to an address space representing the application-related data. The storage infrastructure mechanism determines whether the user mode application is authorized to access the storage device and if satisfied, the storage infrastructure mechanism configures at least one path for the user mode application to perform block-level input/output between the storage device and an unprivileged storage architecture component. A completion notification mechanism may be selected or established for returning information related to input/output requests.

Claims (28)

1. In a computing environment, a method performed at least in part on at least one processor, comprising, establishing access to a storage device using an unprivileged storage architecture component, including, processing request data for initiating input/output activity associated with the storage device, the request data corresponding to at least one portion of the storage device, addressing of the at least one portion to substantially match an address space associated with application-related data that corresponds to the input/output activity, and configuring at least one path for the input/output activity between the at least one portion of the storage device and the unprivileged storage architecture component, the unprivileged storage architecture component to execute the input/output activity using the address space.

2. The method of claim 1 , wherein configuring the at least one path further comprises comparing the request data with policy information and if the request data satisfies the policy information, mapping the at least one portion of the storage device to an address space corresponding to the unprivileged storage architecture component.

3. The method of claim 2 , wherein comparing the request data with the policy information further comprises in response to the request data, verifying an application requesting discovery of the unprivileged storage architecture component.

4. The method of claim 1 , wherein configuring the at least one path further comprises establishing a first path between the unprivileged storage architecture component and a privileged storage architecture component associated with the storage device, establishing a second path between the privileged storage architecture component and the at least one portion of the storage device and coupling the first path and the second path to form the at least one path for the input/output activity between the at least one portion of the storage device and the unprivileged storage architecture component.

5. The method of claim 1 , wherein configuring the at least one path further comprises loading a privileged storage architecture component associated with the storage device, the privileged storage architecture component initiating file system operations on an unprivileged virtual address space representing the at least one portion of the storage device.

6. The method of claim 1 , wherein configuring the at least one path further comprises authorizing generation of an interface for directly accessing the storage device via a processor.

7. The method of claim 1 , wherein configuring the at least one path further comprises generating at least one virtual function corresponding to the unprivileged storage architecture component in which each virtual function corresponds to a region of the storage device.

8. The method of claim 1 , wherein configuring the at least one path further comprises establishing a path between at least one allocated region of the storage device and a user mode memory buffer.

9. The method of claim 8 , wherein establishing the path further comprises flushing the user mode memory buffer to the storage device.

10. A system comprising:

at least one processing unit; and

system memory hardware communicatively coupled to the at least one processing unit and including components comprising:

a storage infrastructure mechanism, executing on the at least one processing unit, to run as a privileged component in a provider-based storage architecture and configured to load at least one unprivileged component of the provider-based storage architecture that is configured to execute input/output requests on user mode application-related data that is stored in a memory of a storage device, the storage infrastructure mechanism being further configured to map regions of the memory of the storage device to an address space representing at least a portion of the user mode application-related data and establish at least one path for the at least one unprivileged component to communicate the input/output requests to the regions of the memory of the storage device.

11. The system of claim 10 , wherein the at least one unprivileged component is further configured to perform input/output activity with the storage device and maintain consistency between the regions of the storage device and corresponding regions of the address space representing the user mode application-related data.

12. The system of claim 11 , wherein the input/output activity comprises at least one of asynchronous file system operations, synchronous file system operations and block-level operations.

13. The system of claim 10 , wherein the at least one unprivileged component is further configured to present an interface through which a user mode application initiates the input/output requests and the storage device returns input/output completion notifications.

14. The system of claim 10 , wherein the at least one unprivileged component is further configured to select a completion notification mechanism based on a rate associated with input/output activity.

15. The system of claim 10 , wherein the at least one unprivileged component is further configured to directly communicate the input/output requests to mapped regions of the storage device based upon corresponding regions of an unprivileged virtual address space.

16. The system of claim 15 , wherein the at least one unprivileged component is further configured to store the user mode application-related data into the regions of the storage device.

17. The system of claim 10 , wherein the at least one unprivileged component comprises a user mode provider configured to poll the storage device for completion notifications.

18. The system of claim 17 , wherein the at least one unprivileged component is further configured to pause input/output activity in response to an interrupt from a kernel mode driver configured to communicate the interrupt in response to unacknowledged completion notifications.

19. Computer-readable system memory hardware having computer-executable instructions stored thereon, which in response to execution by a computer, cause the computer to perform steps comprising:

allocating memory regions of a hardware-accelerated storage device for storing user mode application-related data and handling input/output activity corresponding to the user mode application-related data;

mapping the memory regions to match a virtual address space for the user mode application-related data, the virtual address space representing a logical arrangement of the memory regions in different locations of the hardware-accelerated storage device; and

coupling the memory regions with a user mode provider configured to use hardware-accelerated signaling to communicate the input/output activity to the memory regions.

20. The computer-readable system memory hardware of claim 19 having further computer-executable instructions, which in response to execution by the computer, cause the computer to perform further steps comprising:

communicating input/output requests, via at least one processor, to the hardware-accelerated storage device, wherein the input/output requests are directed to one or more of the memory regions; and

establishing a completion notification mechanism for returning information related to the input/output requests.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0541 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2012
From: MESHCHANINOV, DMITRY; BRADSHAW, DEXTER PAUL; SINHA, SUYASH
To: MICROSOFT CORPORATION
Reel/Frame 028431/0860 →
Continuity (1)
Related Publication 20130346718A1 · Dec 26, 2013