I/O controller software with each I/O command having a plurality of nets, each with a group of threads
AssigneeMTI Technology Corporation
InventorsChristopher W. Eidler, Kumar Gajjar, David H. Jaffe
Life of this patent
Estimating the term…
Abstract
A modular software control system for an I/O subsystem. A central group of software modules are made to be hardware-independent, with interface modules translating from the host hardware configuration and the I/O subsystem hardware configuration. I/O commands are accomplished using a series of specialized threads, with each thread performing a particular function. An appropriate group of threads are assembled for each I/O command, the group being a "net".
Claims37
An I/O controller comprising:
- a host interface;
- a data bus coupled to said host interface;
- a data memory coupled to said data bus;
- a drive interface, coupled to said data bus, for interfacing to an I/O system;
- a processor coupled to said data memory;
- a program memory coupled to said processor;
- and
- a program stored in said program memory, including instructions for
- a plurality of threads, each thread performing a specified subset of an I/O operation, and
- creating a plurality of nets, each net being a group of said threads, for each I/O command received from said host interface.
An I/O controller comprising:
- a processor;
- a program memory coupled to said processor;
- and
- a program stored in said program memory, including
- a host interface for converting a host I/O request into a generic I/O command;
- a drive interface;
- a media module configured to, responsive to said generic I/O command, assemble a net specific to a configuration of an I/O system coupled to said drive interface;
- and
- a drive personality module configured to convert thread instructions from said net into instructions specific to a hardware configuration of said I/O system.
A method for operating an I/O controller comprising the steps of:
- creating a plurality of threads, each thread performing a specified subset of an I/O operation;
- and
- creating a plurality of nets, each net being a group of said threads, each I/O command receiving from said host interface having at least one net;
- wherein said I/O controller is a RAID controller and said I/O operation is a RAID operation.
A method for operating an I/O controller comprising the steps of:
- creating a plurality of threads, each thread performing a specified subset of an I/O operation;
- creating a plurality of nets, each net being a group of said threads, each I/O command received from said host interface having at least one net;
- converting a host I/O request into a generic I/O command;
- assembling a net specific to a configuration of an I/O system coupled to a drive interface;
- and
- converting thread instructions from said net into instructions specific to a hardware configuration of an I/O system.
A method for operating an I/O controller comprising the steps of:
- creating a plurality of threads, each thread performing a specified subset of an I/O operation;
- and
- creating a plurality of nets, each net being a group of said threads, each I/O command received from said host interface having at least one net;
- wherein at least one of said threads includes an error recovery table, said error recovery table setting forth at least one error type.
A method for operating an I/O controller comprising the steps of:
- creating a plurality of threads, each thread performing a specified subset of an I/O operation;
- creating a plurality of nets, each net being a group of said threads, each I/O command received from said host interface having at least one net;
- and
- allocating spans of data in an I/O subsystem to nets.
A method for operating an I/O controller comprising the steps of:
- creating a plurality of threads, each thread performing a specified subset of an I/O operation;
- creating a plurality of nets, each net being a group of said threads, each I/O command received from said host interface having at least one net;
- and
- allocating a recovery lock of a sub-span to a requesting thread.
A method for operating an I/O controller comprising the steps of:
- creating a plurality of threads, each thread performing a specified subset of an I/O operation;
- and
- creating a plurality of nets, each net being a group of said threads, each I/O command received from said host interface having at least one net;
- wherein at least one thread becomes active upon completion of at least one designated predecessor event.
A method for operating an I/O controller comprising the steps of:
- creating a plurality of threads, each thread performing a specified subset of an I/O operation;
- and
- creating a plurality of nets, each net being a group of said threads, each I/O command received from each host interface having at least one net;
- wherein at least one of said nets includes at least one thread for allocating buffer space.
A method for operating an I/O controller comprising the steps of:
- creating a plurality of threads, each thread performing a specified subset of an I/O operation;
- and
- creating a plurality of nets, each net being a group of said threads, each I/O command received from said host interface having at least one net;
- wherein at least one of said nets includes at least one thread for deallocating buffer space.
Dependencies are inferred from the claim text.