IP Library Granted Patent US 10,282,103
Granted Patent B1
US 10,282,103 · App. 15/141,744 · Granted May 7, 2019

Method and apparatus to delete a command queue

Inventors: Chris Randall Stone (Elgin, TX); Shashank Nemawarkar (Austin, TX); Balakrishnan Sundararaman (Austin, TX); Charles Edward Peet (Austin, TX)
Assignee: Seagate Technology LLC
G06F3/061G06F3/0659G06F3/0679G06F13/24
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,282,103
App. No.
15/141,744
Granted
May 7, 2019
Kind
B1
Abstract

Systems and methods are disclosed to delete a command queue, in accordance with certain embodiments of the present disclosure. An apparatus may comprise a circuit configured to receive a queue deletion indicator from a host device, including a queue identifier for a selected command queue to be deleted. The circuit may abort each command associated with the selected command queue and pending at the apparatus based on the queue identifier. Commands associated with the selected queue may be identified in a command table and flagged with an abort bit, which may signal an I/O processing pipeline to abort the command when encountered. The circuit may verify that no commands associated with the selected command queue remain pending at the apparatus, and send a completion indicator to notify the host device that the selected command queue is deleted.

Claims (114)

1. An apparatus comprising:

a circuit having an input/output (I/O) pipeline configured to process commands via sequential components of the I/O pipeline, including:

a receiving unit configured to receive commands from a plurality of command queues located at a host device;

a plurality of processing engines configured to execute commands in sequence, with each command progressing from one processing engine to a next processing engine;

a completion unit distinct from the receiving unit configured to receive a notification once processing of a command completes and to notify the host device that processing on the command has completed;

the circuit configured to:

receive a queue deletion indicator from the host device via the receiving unit, the queue deletion indicator including a queue identifier for a selected command queue from the plurality of command queues to be deleted;

locate and abort each command associated with the selected command queue and pending at the apparatus based on the queue identifier, including:

directing the receiving unit to stop receiving commands from the selected command queue to prevent receipt of any new commands from the selected command queue;

directing the completion unit to abort any command received at the completion unit that is associated with the selected command queue to prevent the completion of any commands from the selected command queue;

setting an abort bit to “true” for each command associated with the selected command queue in a command table, which the processing engines are configured to check when commands are received along the I/O pipeline at the processing engines, and abort any command with an abort bit set to “true”;

verify that no commands associated with the selected command queue remain pending at the apparatus; and

send a completion indicator to notify the host device that the selected command queue is deleted.

2. The apparatus of claim 1 , further comprising:

the circuit further configured to:

store a first abort tracking indicator to a first register of the receiving unit of the circuit, the first abort tracking indicator identifying the selected command queue; and

the receiving unit configured to stop receiving commands from the selected command queue based on the first abort tracking indicator.

3. The apparatus of claim 2 , further comprising:

the circuit further configured to:

store a second abort tracking indicator to a second register of the completion unit of the circuit, the second abort tracking indicator identifying the selected command queue;

the completion unit configured to abort commands associated with the selected command queue, including:

receive a command that has been executed at the apparatus;

compare a command queue identifier associated with the command to the selected command queue based on the second abort tracking indicator; and

abort the command when the command queue identifier matches the selected command queue.

4. The apparatus of claim 3 , further comprising:

aborting each command includes:

identify commands associated with the selected command queue by comparing the queue identifier against command queue identifiers of commands in the command table stored to a memory accessible by the circuit; and

set the abort bit to “true” for each command associated with the selected command queue.

5. The apparatus of claim 4 , further comprising:

a host interface to communicate with the host device external to the apparatus;

a nonvolatile memory;

the circuit includes a data storage controller configured to execute input/output (I/O) operations to the nonvolatile memory, further including:

a controller interface to communicate with the host interface;

a central processing unit (CPU) configured to:

store the first abort tracking indicator to the first register;

store the second abort tracking indicator to the second register; and

verify that no commands associated with the selected command queue remain pending at the apparatus.

6. The apparatus of claim 5 , further comprising:

the completion unit and the processing engines further configured to generate an abort notification after aborting a command;

verifying that no commands associated with the selected command queue remain pending includes:

maintain a command counter to indicate a number of commands associated with the selected command queue that remain pending at the apparatus;

decrease the command counter for each abort notification; and

determine that no commands associated with the selected command queue remain pending when the command counter reaches 0.

7. The apparatus of claim 1 further comprising:

the circuit further configured to:

receive commands from a plurality of command queues including the selected command queue; and

abort each command associated with the selected command queue without interrupting performance of commands associated with other command queues from the plurality of command queues.

8. An apparatus comprising:

a host interface to connect to a host device;

a storage control circuit having an input/output (I/O) pipeline configured to process commands via sequential components of the I/O pipeline, including:

a receiving unit configured to receive commands from a plurality of command queues located at the host device;

a plurality of processing engines configured to execute commands in sequence, with each command progressing from one processing engine to a next processing engine;

a completion unit distinct from the receiving unit configured to receive a notification once processing of a command completes and to notify the host device that processing on the command has completed;

the storage control circuit configured to:

receive a queue deletion command from the host device via the host interface, the queue deletion command including a queue identifier for a selected command queue from the plurality of command queues to be deleted;

abort each command associated with the selected command queue and pending at the apparatus based on the queue identifier, including:

directing the receiving unit to stop receiving commands from the selected command queue;

directing the completion unit to abort any command received at the completion unit that is associated with the selected command queue;

setting an abort flag to “true” for each command associated with the selected command queue in a command table, and the processing engines are configured to check the command table when commands are received for processing and abort any command with an abort flag set to “true”; and

send a completion indicator to notify the host device that the selected command queue is deleted after every command associated with the selected command queue is aborted.

9. The apparatus of claim 8 , further comprising:

the storage control circuit further configured to:

store an abort tracking indicator to a register of the receiving unit of the storage control circuit, the abort tracking indicator identifying the selected command queue; and

the receiving unit configured to check the register of the receiving unit and stop receiving commands from the selected command queue based on the abort tracking indicator.

10. The apparatus of claim 8 , further comprising:

the storage control circuit further configured to:

store an abort tracking indicator to the completion unit of the storage control circuit, the abort tracking indicator identifying the selected command queue;

the completion unit configured to abort commands associated with the selected command queue, including:

receive a command that has been executed at the apparatus;

compare a command queue identifier associated with the command to the selected command queue based on the abort tracking indicator; and

abort the command when the command queue identifier matches the selected command queue.

11. The apparatus of claim 8 , further comprising:

aborting each command includes:

identify commands associated with the selected command queue by comparing the queue identifier against command queue identifiers of commands in the command table; and

set the abort flag to “true” for each command associated with the selected command queue.

12. The apparatus of claim 8 , comprising the storage circuit further configured to:

verify that no commands associated with the selected command queue remain pending, including:

maintain a command counter to track a number of commands associated with the selected command queue that remain pending at the apparatus;

decrease the command counter as each command is aborted; and

determine that no commands associated with the selected command queue remain pending when the command counter reaches 0.

13. The apparatus of claim 8 , the storage controller circuit further configured to:

maintain a separate command counter for each command queue from the plurality of command queues;

increase a selected command counter for a particular command queue from the plurality of command queues when a command is received from the particular command queue;

decrease the selected command counter for a particular command queue when an abort notification is generated for a command associated with the particular command queue; and

abort each command associated with the selected command queue without interrupting performance of commands associated with other command queues from the plurality of command queues.

14. A method comprising:

receiving commands from a host device via a data storage device having an input/output (I/O) pipeline configured to process commands via sequential components of the I/O pipeline, that includes:

a receiving unit configured to receive commands from a plurality of command queues located at the host device via a receiving unit;

a plurality of processing engines configured to execute commands in sequence, with each command progressing from one processing engine to a next processing engine;

a completion unit distinct from the receiving unit configured to receive a notification once processing of a command completes and to notify the host device that processing on the command has completed;

receiving a queue deletion command at a controller circuit of the data storage device from the host device via the receiving unit, the queue deletion command including a queue identifier for a selected command queue among the plurality of command queues to be deleted;

aborting each command associated with the selected command queue and pending at the controller circuit based on the queue identifier, including:

directing the receiving unit to stop receiving commands from the selected command queue;

directing the completion unit to abort any command received at the completion unit that is associated with the selected command queue;

setting an abort bit to “true” for each command associated with the selected command queue in a command table, and the processing engines are configured to check the command table when commands are received for processing and abort any command with an abort bit set to “true”; and

sending a completion indicator to notify the host device that the selected command queue is deleted after each command associated with the selected command queue is aborted.

15. The method of claim 14 further comprising:

storing an abort tracking indicator to a register of the receiving unit, the abort tracking indicator identifying the selected command queue; and

stopping receipt of commands from the selected command queue at the receiving unit based on storing the abort tracking indicator to the register of the receiving unit.

16. The method of claim 14 further comprising:

storing an abort tracking indicator to the completion unit, the abort tracking indicator identifying the selected command queue for which associated commands are to be aborted;

receiving a command at the completion unit that has been executed at the controller circuit;

comparing a command queue identifier associated with the command to the selected command queue based on the abort tracking indicator; and

aborting the command when the command queue identifier matches the selected command queue.

17. The method of claim 14 further comprising:

identifying commands associated with the selected command queue by comparing the queue identifier against command queue identifiers of commands in a command table; and

setting an abort flag to “true” for each command associated with the selected command queue.

18. The method of claim 14 further comprising:

verifying that no commands associated with the selected command queue remain pending including:

maintaining a command counter to track a number of commands associated with the selected command queue that remain pending at the controller circuit;

decreasing the command counter as each command is aborted; and

determining that no commands associated with the selected command queue remain pending when the command counter reaches 0.

19. The method of claim 14 further comprising:

aborting each command associated with the selected command queue without interrupting performance of commands associated with other command queues from the plurality of command queues.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 27, 2016
From: STONE, CHRIS RANDALL; NEMAWARKAR, SHASHANK; SUNDARARAMAN, BALAKRISHNAN; PEET, CHARLES EDWARD
To: SEAGATE TECHNOLOGY LLC
Reel/Frame 039865/0468 →
Continuity (1)
Continuation In Part 14936573 · Nov 9, 2015
Cited By (12)
US 12,282,684 US 12,327,137 US 12,399,779 US 12,443,370 US 12,443,546 US 12,468,453 US 12,579,036 US 12,619,432 US 12,632,263 US 12,645,392 US 12,681,663 US 12,699,566