Error recovery from submission queue fetching errors
AssigneeWestern Digital Technologies, Inc.
InventorShay Benisty
Life of this patent
Estimating the term…
Abstract
An apparatus includes a non-volatile memory media and a storage controller. The storage controller is configured to fetch a storage command from a submission queue of a host. The submission queue has a submission queue identifier (SQID). The storage controller then determines a submission queue fetch error in response to receiving a Transport Layer Packet (TLP) error as a result of fetching the storage command. Next, the storage controller is configured to determine a command identifier (CID) for the storage command associated with the submission queue fetch error. The storage controller then sends a completion message to the host. The completion message uniquely identifies the storage command of the submission queue associated with the submission queue fetch error using the SQID and CID.
Claims17
An apparatus, comprising:
- a non-volatile memory media;
- and
- a storage controller configured to:
- fetch a storage command from a submission queue in a host, the submission queue having a submission queue identifier (SQID);
- determine a submission queue fetch error in response to receiving a Transport Layer Packet (TLP) error as a result of fetching the storage command;
- determine a command identifier (CID) for the storage command associated with the submission queue fetch error based on a command identifier allocation model, wherein the command identifier allocation model is provided to the storage controller by the host prior to the storage controller fetching the storage command;
- and
- send a completion message to the host, the completion message comprising the SQID and the CID to uniquely identify the storage command of the submission queue associated with the submission queue fetch error, wherein the completion message indicates to the host that the storage command is to be either:
- retired;
- or
- resubmitted to the submission queue for the controller to fetch.
A system, comprising:
- a host having a submission queue;
- a Peripheral Component Interconnect Express (PCIe) bus;
- a storage device coupled to the host by way of the PCIe bus, the storage device comprising:
- non-volatile memory media;
- and
- a storage controller configured to communicate with the host over the PCIe bus using a Non-Volatile Memory express (NVMe) protocol, the storage controller comprising:
- a PCIe medium access control (MAC) and physical layer (PHY) interface;
- a command fetcher configured to fetch a storage command from the submission queue in the host;
- a queue manager configured to manage a submission queue identifier (SQID) and to determine a submission queue fetch error in response to receiving a Transport Layer Packet (TLP) error as a result of fetching the storage command;
- a command identifier tracker configured to determine a command identifier (CID) for the storage command associated with the submission queue fetch error, the command identifier based on a command identifier allocation model, wherein the command identifier allocation model is provided to the storage controller by the host prior to the command fetcher fetching the storage command;
- and
- wherein the queue manager is configured to post a completion message to the host, the completion message comprising the SQID and the CID and configured to uniquely identify the storage command of the submission queue associated with the submission queue fetch error, wherein the completion message indicates to the host that the storage command is to be either:
- retired;
- or
- resubmitted to the submission queue for the controller to fetch.
A method, comprising:
- attempting to fetch a storage command from a submission queue in a host, the submission queue having a submission queue identifier (SQID);
- receiving a storage command from the host, the storage command configured to set up the submission queue and a completion queue as a submission completion queue pair for storage operations between the host and a storage device and wherein the storage command comprises a command identifier allocation model for use in allocating command identifiers for storage commands for the submission completion queue pair;
- detecting a submission queue fetch error as a result of attempting to fetch the storage command;
- determining a command identifier (CID) for the storage command associated with the submission queue fetch error based on the command identifier model;
- and
- posting a completion message to the host, the completion message comprising the SQID and the CID to uniquely identify the storage command of the submission queue associated with the submission queue fetch error, wherein the completion message indicates to the host that the storage command is to be either:
- retired;
- or
- resubmitted to the submission queue for to be re-fetched.
Dependencies are inferred from the claim text.