IP Library › Granted Patent US 11,755,527
Granted Patent B2
US 11,755,527 · App. 17/888,433 · Granted Sep 12, 2023

Techniques for command validation for access to a storage device by a remote client

Inventors: Eliezer Tamir (Bait Shemesh, IL); Vadim Makhervaks (Austin, TX); Ben-Zion Friedman (Jerusalem, IL); Phil Cayton (Warren, OR); Theodore L. Willke (Portland, OR)
Assignee: Tahoe Research, Ltd.
G06F15/17331G06F3/061G06F3/0611G06F3/0655G06F3/0659G06F3/0683G06F3/0688G06F13/4282G06F15/167G06F21/44G06F21/79G06F21/80H04L67/1097H04L69/12G06F2213/0026Y02D10/00
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,755,527
App. No.
17/888,433
Granted
Sep 12, 2023
Kind
B2
Abstract

Examples are disclosed for access to a storage device maintained at a server. In some examples, a network input/output device coupled to the server may allocate, in a memory of the server, a buffer, a doorbell, and a queue pair accessible to a client remote to the server. For these examples, the network input/output device may assign an Non-Volatile Memory Express (NVMe) namespace context to the client. For these examples, indications of the allocated buffer, doorbell, queue pair, and namespace context may be transmitted to the client. Other examples are described and claimed.

Claims (39)

1 . An apparatus comprising:

processing circuitry configured to:

communicate with a plurality of clients remote to the apparatus;

allocate, to each client of the plurality of clients,a buffer, an input/output (I/O) queue pair comprising an I/O command submission queue and an I/O command completion queue, and a Non-Volatile Memory Express (NVMe) queue pair comprising an NVMe command submission queue and an NVMe command completion queue, operable to access storage controlled by an NVMe controller;

exchange, using a network input/output (I/O) device, information with each of the clients of the plurality of clients using the I/O queue pair allocated to the client; and

validate, using the network I/O device, commands received from one or more of the clients of the plurality of clients, wherein, upon successful validation of a command, the network I/O device communicates the command to the NVMe command submission queue, whereby the storage controller by the NVMe controller is not directly accessible to the plurality of clients.

2 . The apparatus according to claim 1 , wherein the processing circuitry is further configured to selectively provide each of the clients of the plurality of clients with access to the storage controlled by the NVMe controller.

3 . The apparatus according to claim 2 , wherein the commands are commands to access the storage.

4 . The apparatus according to claim 1 , wherein the network I/O device is operable to store a command received from a client of the plurality of clients in the buffer allocated to the client prior to validating the command.

5 . The apparatus according to claim 1 , wherein the network I/O device is operable to store command received from a client of the plurality of clients following validation of the command, but prior to communicating the command to the NVMe command submission queue, in the buffer allocated to the client.

6 . The apparatus according to claim 1 , wherein each of the clients of the plurality of clients can directly access the I/O queue pair allocated to that client.

7 . The apparatus according to claim 1 , wherein the processing circuitry is further configured to assign an NVMe namespace context to each of the clients.

8 . The apparatus according to claim 1 , wherein validating a command comprises, in part, comparing a memory capacity of the buffer allocated to the client with an amount of buffer memory requested or required by the command.

9 . A method of operating an apparatus, the method comprising:

communicating with a plurality of clients remote to the apparatus;

allocating, to each client of the plurality of clients, a buffer, an input/output (I/O) queue pair comprising an I/O command submission queue and an I/O command completion queue, and a Non-Volatile Memory Express (NVMe) queue pair comprising an NVMe command submission queue and an NVMe command completion queue, operable to access storage controlled by an NVMe controller;

exchanging, using a network input/output (I/O) device, information with each of the clients of the plurality of clients using the I/O queue pair allocated to the client; and

validating, using the network I/O device, commands received from one or more of the clients of the plurality of clients, wherein, upon successful validation of a command, the network I/O device communicates the command to the NVMe command submission queue, whereby the storage controller by the NVMe controller is not directly accessible to the plurality of clients.

10 . The method according to claim 9 , further comprising:

selectively providing each of the clients of the plurality of clients with access to the storage controlled by NVMe controller.

11 . The method according to claim 10 , wherein the commands are commands to access the storage.

12 . The method according to claim 9 , wherein the network I/O device is operable to store a command received from a client of the plurality of clients in the buffer allocated to the client prior to validating the command.

13 . The method according to claim 9 , wherein the network I/O device is operable to store command received from a client of the plurality of clients following validation of the command, but prior to communicating the command to the N VMe command submission queue, in the buffer allocated to the client.

14 . The method according to claim 9 , wherein each of the clients of the plurality of clients can directly access the I/O queue pair allocated to that client.

15 . The method according to claim 9 , further comprising:

assigning an NVMe namespace context to each of the clients.

16 . The method according to claim 9 , wherein validating a command comprises, in part, comparing a memory capacity of the buffer allocated to the client with an amount of buffer memory requested or required by the command.

17 . A non-transitory computer-readable medium comprising instructions, which, when executed by processing circuitry coupled to the computer-readable medium, cause the processing circuitry to:

communicate with a plurality of clients remote to the processing circuitry;

allocate, to each client of the plurality of clients, a buffer, an input/output (I/O) queue pair comprising an I/O command submission queue and an I/O command completion queue, and a Non-Volatile Memory Express (NVMe) queue pair comprising an NVMe command submission queue and an NVMe command completion queue, operable to access storage controlled by an NVMe controller;

exchange, using a network input/output (I/O) device, information with each of the clients of the plurality of clients using the I/O queue pair allocated to the client; and

validate, using the network I/O device, commands received from one or more of the clients of the plurality of clients, wherein, upon successful validation of a command, the network I/O device communicates the command to the NVMe command submission queue, whereby the storage controller by the NVMe controller is not directly accessible to the plurality of clients.

18 . The non-transitory computer-readable medium according to claim 17 , wherein the instructions, when executed by the processing circuitry, further cause the processing circuitry to selectively provide each of the clients of the plurality of clients with access to the storage controlled by the NVMe controller.

19 . The non-transitory computer-readable medium according to claim 18 , wherein the commands are commands to access the storage.

20 . The non-transitory computer-readable medium according to claim 17 , wherein the network I/O device is operable to store a command received from a client of the plurality of clients in the buffer allocated to the client prior to validating the command.

21 . The non-transitory computer-readable medium according to claim 17 , wherein the network I/O device is operable to store command received from a client of the plurality of clients following validation of the command, but prior to communicating the command to the NVMe command submission queue, in the buffer allocated to the client.

22 . The non-transitory computer-readable medium according to claim 17 , wherein each of the clients of the plurality of clients can directly access the I/O queue pair allocated to that client.

23 . The non-transitory computer-readable medium according to claim 17 , wherein the instructions, when executed by the processing circuitry, further cause the processing circuitry to cause the processing circuitry to assign an NVMe namespace context to each of the clients.

24 . The non-transitory computer-readable medium according to claim 17 , wherein validating a command comprises, in part, comparing a memory capacity of the buffer allocated to the client with an amount of buffer memory requested or required by the command.

Continuity (5)
Continuation 17466371 · Sep 3, 2021
Continuation 16426685 · May 30, 2019
Continuation 13997996 · Jun 25, 2013
Provisional Application 61587541 · Jan 17, 2012
Related Publication 20230185759A1 · Jun 15, 2023
Cited By (1)
US 12,625,996