IP Library Granted Patent US 11,599,481
Granted Patent B2
US 11,599,481 · App. 16/712,730 · Granted Mar 7, 2023

Error recovery from submission queue fetching errors

Inventor: Shay Benisty (Beer Sheva, IL)
Assignee: Western Digital Technologies, Inc.
G06F13/1668G06F3/0604G06F3/0659G06F3/0679G06F11/1068G06F11/1474G06F13/4282G06F2201/82G06F2213/0026
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,599,481
App. No.
16/712,730
Granted
Mar 7, 2023
Kind
B2
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.

Claims (45)

1. 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.

2. The apparatus of claim 1 , wherein storage controller is further configured to derive the command identifier allocation model based on a storage command history.

3. The apparatus of claim 1 , wherein storage controller is further configured to predict the command identifier allocation model.

4. 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.

5. The system of claim 4 , wherein the host defines the command identifier allocation model when the host sets up a submission queue and a completion queue with the storage device.

6. The system of claim 4 , wherein the command identifier tracker defines the command identifier allocation model as a default command identifier allocation model in response to the host failing to define the command identifier allocation model.

7. The system of claim 4 , wherein the command identifier tracker is configured to derive the command identifier allocation model based on a storage command history.

8. The system of claim 4 , wherein the Transport Layer Packet (TLP) error comprises an uncorrectable packet error.

9. The system of claim 4 , wherein the queue manager is configured to retry fetching the storage command in response to the submission queue fetch error.

10. The system of claim 4 , wherein the command identifier tracker is configured to monitor a plurality of storage commands and to validate the command identifier allocation model by comparing command identifiers of the plurality of storage commands with corresponding command identifier based on the command identifier allocation model.

11. The system of claim 4 , wherein the submission queue fetch error comprises a PCIe Express Transport Layer Protocol fetch error.

12. 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.

13. The method of claim 12 , wherein determining the command identifier based on the command identifier model comprises deriving the command identifier based on a storage command history.

14. The method of claim 12 , wherein determining the command identifier based on the command identifier model comprises forecasting the command identifier based on an industry convention.

15. The method of claim 12 , further comprising:

associating a default command identifier allocation model with the submission completion queue pair, in response to the host failing to designate the command identifier allocation model.

16. The method of claim 12 , wherein determining the command identifier for the storage command comprises determining the storage command based on the command identifier allocation model provided by the host.

17. The method of claim 12 , wherein the completion message comprises a completion identifier and the method further comprises generating the completion identifier using the CID and the SQID.

Assignments (11)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 052025 FRAME 0088 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058965/0699 →
SECURITY INTEREST Recorded Feb 26, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052025/0088 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2020
From: BENISTY, SHAY
To: WESTERN DIGITAL TECHNOLOGIES INC.
Reel/Frame 051637/0301 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 14, 2020
From: BENISTY, SHAY
To: WESTERN DIGITAL TECHNOLOGIES INC.
Reel/Frame 051581/0950 →