Hierarchical queues within a storage array (RAID) controller
AssigneeECCS, Inc.
InventorBen H. McMillan, Jr.
Life of this patent
Estimating the term…
Abstract
A queuing architecture within a RAID controller that manages a multi-threaded SCSI environment. The architecture resides within a RAID controller that communicates with a plurality of independent, SCSI disk drives (or other storage elements). The RAID controller accepts disk I/O requests from one or more host computers. The architecture dynamically allocates multiple disk I/O requests to various request queues until the disk drive that will handle the request is available for access. Multiple requests are executed in parallel on various ones of the disk drives.
Claims12
A queue architecture for a storage element array containing a plurality of storage elements comprising:
- a volume manager for generating an input/output (I/O) request that specifies a particular storage element to be accessed;
- means, connected to said volume manager, for allocating said I/O request to a particular pending queue, where said particular pending queue is selected in accordance with the storage element specified within the I/O request;
- a staging queue, connected to said pending queue, for temporarily storing said I/O request until a communications channel is available to connect said staging queue to said storage element;
- a timeout queue, connected to said staging queue, for temporarily storing said I/O request after the I/O request is placed on the communications channel and for removing said I/O request when said communications channel returns information corresponding to the I/O request.
A method of accessing one of a plurality of storage elements in response to a request from a host computer, said method comprising the steps of:
- generating an I/O request within a volume manager;
- examining the I/O request to determine a particular storage element that the I/O request requires to access to fulfill the request from the host computer;
- if a staging queue corresponding to a communications channel to the particular storage element is empty, transferring the I/O request to the empty staging queue;
- otherwise, if a staging queue entry does not exists for the particular storage element in the staging queue, transferring the I/O request to the staging queue;
- otherwise, transferring the I/O request to a pending queue;
- and
- transferring an I/O request at the front of the staging queue to the communications channel leading to a specified storage element and, when the I/O request is accepted by the specified storage element, transferring the I/O request at the front the staging queue to a timeout queue.
Dependencies are inferred from the claim text.