Task control for high level commands in disk drives
AssigneeInternational Business Machines Corporation
InventorPaul Hodges
Life of this patent
Estimating the term…
Abstract
High level commands for a disk drive are processed by a task manager program that parses them into low level subcommands (e.g., SCSI commands). The low level subcommands are. then presented to the command execution means of the disk drive for execution. The parsing or sub tasking of a high level command into a number of low level commands permits the efficient handling of subcommands that must be deferred until other subcommands are executed and of third party XOR operations.
Claims36
A method of operating a disk drive controller for processing high level commands provided by a host computer, at least one of said high level commands requiring a read and/or a write of data to a local disk drive and a peer disk drive, each of said disk drives including a command execution means for executing low level commands, said method comprising:
- (a) forming a task control block for each of said high level commands received from said host computer, each of said high level commands containing command information that includes a high level command type, each of said task control blocks enabling access to low level subcommands for the high level command type, wherein each of said task control blocks is enqueued in an active task control block list;
- (b) selecting a next one of said task control blocks from said list;
- (c) determining if any of the low level subcommands of the selected task control block are startable;
- (d) starting said low level subcommands that step (c) determined as startable;
- and
- (e) repeating steps (b) through (d) for other task control blocks formed by step (a) until said list is exhausted, thereby processing the task control blocks in said list concurrently.
A disk drive controller that receives high level commands from a host computer for performing read and/or write operations to a local disk drive and to a peer disk drive, each of said disk drives including a command execution means for executing low level commands, said controller comprising:
- a processor and a memory;
- a task manager program stored in the memory, said task manager program controlling the processor to perform the following steps:
- (a) forming a task control block for each of said high level commands received from said host computer, each of said high level commands containing command information that includes a high level command type, each of said task control blocks enabling access to low level subcommands for the high level command type, wherein each of said task control blocks is enqueued in an active task control block list;
- (b) selecting a next one of said task control blocks from said list;
- (c) determining if any of the low level subcommands of the selected task control block are startable;
- (d) starting said low level subcommands that step (c) determined as startable;
- and
- (e) repeating steps (b) through (d) for other task control blocks formed by step (a) until said list is exhausted, thereby processing the task control blocks in said list concurrently.
A memory media for operation in conjunction with a processor for controlling a local disk drive and a peer disk drive, the processor receiving high level commands from a host computer, each of said high level commands requiring a read and/or a write of data to the local disk drive and the peer disk drive, each of said disk drives including a command execution means for executing low level commands, said memory media comprising:
- means for controlling said processor to perform the steps of:
- (a) forming a task control block for each of said high level commands received from said host computer, each of said high level commands containing command information that includes a high level command type, each of said task control blocks enabling access to low level subcommands for the high level command type, wherein each of said task control blocks is enqueued in an active task control block list;
- (b) selecting a next one of said task control blocks from said list;
- (c) determining if any of the low level subcommands of the selected task control block are startable;
- (d) starting said low level subcommands that step (c) determined as startable;
- and
- (e) repeating steps (b) through (d) for other task control blocks formed by step (a) until said list is exhausted, thereby processing the task control blocks in said list concurrently.
Dependencies are inferred from the claim text.