IP Library Granted Patent US 10,360,176
Granted Patent B2
US 10,360,176 · App. 13/997,996 · Granted Jul 23, 2019

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

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 10,360,176
App. No.
13/997,996
Granted
Jul 23, 2019
Kind
B2
Abstract

Examples are disclosed for command validation for access to a storage device maintained at a server. In some examples, a network input/output device coupled to the server may receive the command from a client remote to the server. For these examples, elements or modules of the network input/output device may be capable of validating the command and reporting the status of the received command to the client. Other examples are described and claimed.

Claims (32)

1. An apparatus comprising:

circuitry for a network input/output device coupled to a server;

a receive module for execution by the circuitry to receive a command from a client, the client remote to the server, the command to provide the client access to a storage device controlled by a Non-Volatile Memory Express (NVMe) controller maintained at the server;

a validation module for execution by the circuitry to validate the command based, at least in part, on whether an operation code (Opcode) indicated in the command is supported by the network input/output device and on whether an index identifier indicated in the command associates the client with an NVMe Namespace Identifier allocated to the client, the index identifier included in an index that indicates allocated resources provided to the client by the server for access to the storage device, the allocated resources to include a buffer maintained by the server and a first queue pair accessible to the client that includes a command submission queue to the NVMe controller and a command completion queue from the NVMe controller; and

a report module for execution by the circuitry to indicate a status of the received command to the client, the status to include one of an invalid command or a completed command.

2. The apparatus of claim 1 , the network input/output device, the storage device and the NVMe controller arranged to operate in compliance with a second industry standard to include PCIe Base Specification, revision 3.0 or NVMe Specification, revision 1.1.

3. The apparatus of claim 1 , the command received in a packet compatible with a remote direct memory access (RDMA) protocol to include one of Internet Wide Area RDMA protocol (iWARP), Infinband or RDMA over Converged Ethernet (RoCE).

4. The apparatus of claim 1 , the Opcode included in the command includes one of a flush, a write, a read, a write uncorrectable or a compare.

5. The apparatus of claim 1 , the storage device to include a hard disk drive (HDD) or a solid state drive (SSD), the SSD having non-volatile memory comprising at least one of 3-dimensional cross-point memory, flash memory, ferroelectric memory, silicon-oxide-nitride-oxide-silicon (SONOS) memory, polymer memory, nanowire, ferroelectric transistor random access memory (FeTRAM or FeRAM), nanowire or electrically erasable programmable read-only memory (EEPROM).

6. The apparatus of claim 1 , the allocated resources to also include a second queue pair accessible to the NVMe controller that includes a second command submission queue to the NVMe controller and a second command completion queue from the NVMe controller.

7. The apparatus of claim 1 , the report module capable of indicating the status of the received command as a completed command via an indication in the command completion queue that indicates the received command to access the storage device was executed by the NVMe controller.

8. The apparatus of claim 1 , the allocated resources to include a portion of a memory capacity for the buffer, the validation module to also validate the command based on whether a transaction size to access the storage device indicated in the command exceeds the portion of the memory capacity.

9. The apparatus of claim 1 , the index identifier that associates the client with the NVMe Namespace Identifier also associates the client with a first transaction context assigned to the buffer, the validation module to also validate the command based on whether a second transaction context indicated in the received command matches the first transaction context.

10. The apparatus of claim 1 , the index identifier that associates the client with the NVMe Namespace Identifier also associates the NVMe Namespace Identifier with an Opcode, the validation module to also validate the command based on whether the Opcode indicated in the command is associated with the NVMe Namespace Identifier.

11. A method comprising:

receiving, at a network input/output device coupled to a server, a command for a client remote to the server to access a storage device controlled by a Non-Volatile Memory Express (NVMe) controller maintained at the server;

validating the command based on whether an operation code (Opcode) indicated in the command is supported by the network input/output device and on whether an index identifier indicated in the command associates the client with an NVMe Namespace Identifier allocated to the client, the index identifier included in an index that indicates allocated resources provided to the client by the server for access to the storage device, the allocated resources to include a buffer maintained by the server and a first queue pair accessible to the client that includes a command submission queue to the NVMe controller and a command completion queue from the NVMe controller; and

indicating a status of the received command to the client as one of an invalid command or a completed command.

12. The method of claim 11 , comprising the network input/output device, the storage device and the NVMe controller arranged to operate in compliance with a second industry standard to include PCIe Base Specification, revision 3.0 or NVMe Specification, revision 1.1.

13. The method of claim 11 , the command received in a packet compatible with a remote direct memory access (RDMA) protocol to include one of Internet Wide Area RDMA protocol (iWARP), Infinband or RDMA over Converged Ethernet (RoCE).

14. The method of claim 11 , the Opcode indicated in the command includes one of a flush, a write, a read, a write uncorrectable or a compare.

15. The method of claim 11 , the allocated resources to also include a second queue pair accessible to the NVMe controller that includes a second command submission queue to the NVMe controller and a second command completion queue from the NVMe controller.

16. The method of claim 11 , indicating the status of the received command as a completed command via a completion indication placed in the command completion queue, the completion indication to indicate that the received command to access the storage device was executed by the NVMe controller.

17. The method of claim 11 , the index that associates the client with the NVMe Namespace Identifier also associates the client with a first transaction context assigned to the buffer, validating the command to also include validating the command based on whether a second transaction context indicated in the received command matches the first transaction context.

18. The method of claim 11 , the storage device to include a hard disk drive (HDD) or a solid state drive (SSD), the SSD having non-volatile memory comprising at least one of 3-dimensional cross-point memory, flash memory, ferroelectric memory, silicon-oxide-nitride-oxide-silicon (SONOS) memory, polymer memory, nanowire, ferroelectric transistor random access memory (FeTRAM or FeRAM), nanowire or electrically erasable programmable read-only memory (EEPROM).

19. At least one machine readable medium comprising a plurality of instructions that in response to being executed on a network input/output device coupled to a server cause the network input/output device to:

receive a command for a client remote to the server to access a storage device controlled by a Non-Volatile Memory Express (NVMe) controller maintained at the server, the command received in a packet compatible with a remote direct memory access (RDMA) protocol to include one of Internet Wide Area RDMA protocol (iWARP), Infinband or RDMA over Converged Ethernet (RoCE);

validate the command based on whether an operation code (Opcode) indicated in the command is supported by the network input/output device and on whether an index identifier indicated in the command associates the client with an NVMe Namespace Identifier allocated to the client, the index identifier included in an index that indicates allocated resources provided to the client by the server for access to the storage device, the allocated resources to include a buffer maintained by the server and a first queue pair accessible to the client that includes a command submission queue to the NVMe controller and a command completion queue from the NVMe controller; and

indicate a status of the received command to the client as one of an invalid command or a completed command.

20. The at least one machine readable medium of claim 19 , the network input/output device, the storage device and the NVMe controller arranged to operate in compliance with a second industry standard to include PCIe Base Specification, revision 3.0 or NVMe Specification, revision 1.1.

21. The at least one machine readable medium of claim 19 , the allocated resources to also include a second queue pair accessible to the NVMe controller that includes a second command submission queue to the NVMe controller and a second command completion queue from the NVMe controller.

22. The at least one machine readable medium of claim 19 , the Opcode indicated in the command includes one of a flush, a write, a read, a write uncorrectable or a compare.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2022
From: INTEL CORPORATION
To: TAHOE RESEARCH, LTD.
Reel/Frame 061175/0176 →