← Back to Patent Explorer
US5860003A Expired / Lapsed US ⏱️ 0.0 years remaining

I/O controller software with each I/O command having a plurality of nets, each with a group of threads

Assignee: EMC Corp
•
Filing: 1997-02-28
•
Granted: 1999-01-12
•
Expires: 2017-02-28
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

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".

Inventors

  • 👤 Christopher W. Eidler
  • 👤 Kumar Gajjar
  • 👤 David H. Jaffe

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-05 21:46
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/46; G06F9/48; G06F9/4806; G06F9/4843; G06F9/52

Claims Analysis

Total Claims: 47
Claim 1
Independent Claim 99 words
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.
Claim 2
Dependent Claim 99 words
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.
Claim 3
Dependent Claim 14 words
The I/O controller of claim 1 wherein said I/O system is a RAID system.
Claim 4
Dependent Claim 74 words
The I/O controller of claim 1 wherein said program further comprises: a host interface for converting a host I/O request into a generic I/O command; a media module for, responsive to said generic I/O command, assembling a net specific to a configuration of an I/O system coupled to said drive interface; and a drive personality module for converting thread instructions from said net into instructions specific to a hardware configuration of said I/O system.
Claim 5
Dependent Claim 29 words
The I/O controller of claim 1 wherein at least one of said threads includes an error recovery table, said error recovery table setting forth at least one error type.
Claim 6
Dependent Claim 21 words
The I/O controller of claim 4 wherein said media module further comprises an error recovery net corresponding to said error type.
Claim 7
Dependent Claim 23 words
The I/O controller of claim 1 further comprising a span lock manager for allocating spans of data in said I/O subsystem to nets.
Claim 8
Dependent Claim 19 words
The I/O controller of claim 6 wherein at least one of said threads includes a span lock request code.
Claim 9
Dependent Claim 16 words
The I/O controller of claim 7 wherein said span lock request code includes a net ID.
Claim 10
Dependent Claim 19 words
The I/O controller of claim 6 wherein at least one of said threads includes a span lock deallocate code.
Claim 11
Dependent Claim 45 words
The I/O controller of claim 9 wherein said span lock manager is configured to deallocate said span when a predetermined number of span lock deallocate codes are received by said span lock manager, said predetermined number corresponding to a number of threads using said span.
Claim 12
Dependent Claim 25 words
The I/O controller of claim 1 further comprising a recovery lock manager configured to allocate a recovery lock of a sub-span to a requesting thread.
Claim 13
Dependent Claim 22 words
The I/O controller of claim 1 wherein at least one thread becomes active upon completion of at least one designated predecessor event.
Claim 14
Dependent Claim 22 words
The I/O controller of claim 1 wherein at least one of said nets includes at least one thread for allocating buffer space.
Claim 15
Dependent Claim 19 words
The I/O controller of claim 13 wherein at least one thread is configured to request any needed span lock.
Claim 16
Dependent Claim 22 words
The I/O controller of claim 1 wherein at least one of said nets includes at least one thread for deallocating buffer space.
Claim 17
Dependent Claim 19 words
The I/O controller of claim 15 wherein said at least one thread is configured to release any span lock.
Claim 18
Dependent Claim 90 words
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.
Claim 19
Dependent Claim 90 words
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.
Claim 20
Dependent Claim 14 words
The I/O controller of claim 17 wherein said I/O system is a RAID system.
Claim 21
Dependent Claim 29 words
The I/O controller of claim 17 wherein at least one of said threads includes an error recovery table, said error recovery table setting forth at least one error type.
Claim 22
Dependent Claim 21 words
The I/O controller of claim 19 wherein said media module further comprises an error recovery net corresponding to said error type.
Claim 23
Dependent Claim 23 words
The I/O controller of claim 17 further comprising a span lock manager for allocating spans of data in said I/O subsystem to nets.
Claim 24
Dependent Claim 31 words
The I/O controller of claim 17 further comprising: a host personality module configured to convert thread instructions from said net into instructions specific to a hardware configuration of said host interface.
Claim 25
Independent Claim 69 words
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.
Claim 26
Independent Claim 69 words
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.
Claim 27
Independent Claim 96 words
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.
Claim 28
Independent Claim 96 words
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.
Claim 29
Independent Claim 76 words
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.
Claim 30
Independent Claim 76 words
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.
Claim 31
Dependent Claim 20 words
The method of claim 25 further comprising the step of generating an error recovery net corresponding to said error type.
Claim 32
Independent Claim 63 words
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.
Claim 33
Independent Claim 63 words
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.
Claim 34
Dependent Claim 18 words
The method of claim 27 wherein at least one of said threads includes a span lock request code.
Claim 35
Dependent Claim 15 words
The method of claim 28 wherein said span lock request code includes a net ID.
Claim 36
Dependent Claim 18 words
The method of claim 27 wherein at least one of said threads includes a span lock deallocate code.
Claim 37
Dependent Claim 36 words
The method of claim 30 further comprising the steps of deallocating said span when a predetermined number of span lock deallocate codes are received, said predetermined number corresponding to a number of threads using said span.
Claim 38
Independent Claim 64 words
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.
Claim 39
Independent Claim 64 words
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.
Claim 40
Independent Claim 69 words
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.
Claim 41
Independent Claim 69 words
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.
Claim 42
Independent Claim 69 words
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.
Claim 43
Independent Claim 69 words
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.
Claim 44
Dependent Claim 21 words
The method of claim 34 further comprising the step of requesting any needed span lock with said at least one thread.
Claim 45
Independent Claim 69 words
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.
Claim 46
Independent Claim 69 words
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.
Claim 47
Dependent Claim 20 words
The method of claim 36 further comprising the step of releasing any span lock with said at least one thread.

References Cited (Backward Citations)

US5345588A Cited
US5140592A Cited
US5195100A Cited
US5274645A Cited
US5574851A Cited
US5598549A Cited
US5613114A Cited
US5740384A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2002-01-11 2002-07-13 2003-01-12 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2006-01-11 2006-07-13 2007-01-12 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2010-01-11 2010-07-13 2011-01-12 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag