IP Library Granted Patent US 10,599,477
Granted Patent B1
US 10,599,477 · App. 16/395,638 · Granted Mar 24, 2020

Methods and apparatus for command list processing in performing parallel IO operations

Inventors: Ziya Aral (Fort Lauderdale, FL); Nicholas C. Connolly (Purley, GB); Robert Bassett (Pensacola, FL); Roni J. Putra (Pompano Beach, FL)
Assignee: DataCore Software Corporation
G06F9/5038G06F9/5005G06F3/061G06F3/0659G06F9/50
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,599,477
App. No.
16/395,638
Granted
Mar 24, 2020
Kind
B1
Abstract

Command list processing in performing parallel IO operations is disclosed. In one example, handling IO requests directed to an operating system having an IO scheduling component entails allocating a command to a thread in association with an IO request. The command is allocated from one of a plurality of command lists accessible in parallel, and the command is also linked to one of a plurality of active command lists that are accessible in parallel. The command lists can be arranged as per-CPU command lists, with each per-CPU command list corresponding to one of a plurality of CPUs on a multi-core processing platform on which the IO requests are processed. Similarly, each of the active command lists can respectively correspond to one of the plurality of CPUs on the multi-core processing platform. Per-volume queues can also be implemented for respective volumes presented to applications.

Claims (20)

1. A method for handling IO requests directed to an operating system having an IO scheduling component, the method comprising:

allocating a command to a thread in association with one of the IO requests, the command being allocated from one of a plurality of command lists accessible in parallel;

linking the command to one of a plurality of active command lists that are accessible in parallel;

returning a success indication to the thread, unlinking the command from the one of the plurality of active command lists, and freeing the command to one of the plurality of command lists following a cache hit corresponding to the one of the IO requests,

wherein each of the active command lists respectively corresponds to one of a plurality of CPUs on a multi-core processing platform on which the IO requests are processed.

2. The method of claim 1 , wherein each of the active command lists includes a cell, a singly linked list, and a doubly linked list.

3. A non-transitory computer readable medium storing program code for handling IO requests directed to an operating system having an IO scheduling component, the program code being executable by a processor to perform operations comprising:

allocating a command to a thread in association with one of the IO requests, the command being allocated from one of a plurality of command lists accessible in parallel;

linking the command to one of a plurality of active command lists that are accessible in parallel;

returning a success indication to the thread, unlinking the command from the one of the plurality of active command lists, and freeing the command to one of the plurality of command lists following a cache hit corresponding to the one of the IO requests,

wherein each of the active command lists respectively corresponds to one of a plurality of CPUs on a multi-core processing platform on which the IO requests are processed.

4. The computer readable medium of claim 3 , wherein each of the active command lists includes a cell, a singly linked list, and a doubly linked list.

5. An apparatus for handling IO requests directed to an operating system having an IO scheduling component, the apparatus comprising:

a processor; and

a memory, the memory storing program code executable by the processor to perform operations comprising:

allocating a command to a thread in association with one of the IO requests, the command being allocated from one of a plurality of command lists accessible in parallel;

linking the command to one of a plurality of active command lists that are accessible in parallel;

returning a success indication to the thread, unlinking the command from the one of the plurality of active command lists, and freeing the command to one of the plurality of command lists following a cache hit corresponding to the one of the IO requests,

wherein each of the active command lists respectively corresponds to one of a plurality of CPUs on a multi-core processing platform on which the IO requests are processed.

6. The apparatus of claim 5 , wherein each of the active command lists includes a cell, a singly linked list, and a doubly linked list.

Assignments (3)
SECURITY INTEREST Recorded May 29, 2024
From: DATACORE SOFTWARE CORPORATION
To: VISTARA TECHNOLOGY GROWTH FUND V MASTER, LP
Reel/Frame 067563/0884 →
SECURITY INTEREST Recorded Oct 28, 2021
From: DATACORE SOFTWARE CORPORATION
To: STIFEL BANK
Reel/Frame 057969/0086 →
SECURITY INTEREST Recorded Aug 4, 2020
From: DATACORE SOFTWARE CORPORATION
To: SILICON VALLEY BANK
Reel/Frame 053394/0285 →
Continuity (1)
Continuation 15601319 · May 22, 2017
Cited By (1)
US 12,242,749