Claims Analysis
Total Claims: 99
Claim 1
Independent Claim
214 words
In a storage subsystem comprising a plurality of arrays of storage devices including at least first and second arrays having a same number of rows, said first array configured to include a first plurality n of blocks of data, a parity block and a spare region per row, and said second array configured to include a second plurality m of blocks of data per row stored therein, where m may be unequal to n, a method for restoring lost ones of said blocks of data in an event of a device failure in one of said arrays, comprising the steps of: first determining if spare regions are available in said one of said arrays in which said device failure occurred; second determining if a dedicated spare storage device having spare regions is available in said storage subsystem, if said first determining step did not identify spare regions in said one of said arrays; third determining if distributed spare regions are available in one or more other arrays in said storage subsystem, if said second determining step did not identify a dedicated spare storage device having spare regions; reconstructing each of said lost blocks, and placing each of said reconstructed blocks in a spare region determined to be available by one of said determining steps.
Claim 2
Dependent Claim
214 words
In a storage subsystem comprising a plurality of arrays of storage devices including at least first and second arrays having a same number of rows, said first array configured to include a first plurality n of blocks of data, a parity block and a spare region per row, and said second array configured to include a second plurality m of blocks of data per row stored therein, where m may be unequal to n, a method for restoring lost ones of said blocks of data in an event of a device failure in one of said arrays, comprising the steps of: first determining if spare regions are available in said one of said arrays in which said device failure occurred; second determining if a dedicated spare storage device having spare regions is available in said storage subsystem, if said first determining step did not identify spare regions in said one of said arrays; third determining if distributed spare regions are available in one or more other arrays in said storage subsystem, if said second determining step did not identify a dedicated spare storage device having spare regions; reconstructing each of said lost blocks, and placing each of said reconstructed blocks in a spare region determined to be available by one of said determining steps.
Claim 3
Dependent Claim
55 words
The method of claim 1, wherein said blocks of information stored in said second array are arranged in a plurality of parity groups, each parity group including at least one data block and a parity block distributed in said second array such that no two blocks of said parity group reside on a same device.
Claim 4
Dependent Claim
31 words
The method of claim 1, wherein said reconstructing step further comprises the step of reconstructing each of said lost blocks from one or more remaining blocks of a same parity group.
Claim 5
Dependent Claim
26 words
The method of claim 2, wherein each parity block of a parity group is generated by exclusive OR-ing said data blocks of a same parity group.
Claim 6
Dependent Claim
40 words
The method of claim 3, wherein said reconstructing step further comprises the steps of: retrieving said one or more remaining blocks of the same parity group; and exclusive OR-ing said one or more remaining blocks to form a reconstructed block.
Claim 7
Dependent Claim
18 words
The method of claim 2, wherein said parity blocks of said second array reside on a single device.
Claim 8
Dependent Claim
22 words
The method of claim 2, wherein said parity blocks of said second array are distributed among said devices of said second array.
Claim 9
Dependent Claim
18 words
The method of claim 1, wherein said second array is configured to include a spare region per row.
Claim 10
Dependent Claim
57 words
The method of claim 1, wherein said plurality of blocks of information stored in said first array are arranged in a plurality of parity groups, each parity group including at least one data block and a parity block distributed in said first array such that no two blocks of said parity group reside on the same device.
Claim 11
Dependent Claim
31 words
The method of claim 9, wherein said reconstructing step further comprises the step of reconstructing each of said lost blocks from one or more remaining blocks of a same parity group.
Claim 12
Dependent Claim
26 words
The method of claim 9, wherein each parity block of a parity group is generated by exclusive OR-ing said data blocks of a same parity group.
Claim 13
Dependent Claim
42 words
The method of claim 10, wherein said reconstruction of a lost block further comprises the steps of: retrieving said one or more remaining of said blocks of the same parity group; and exclusive OR-ing said remaining blocks to form a reconstructed block.
Claim 14
Dependent Claim
18 words
The method of claim 9, wherein said parity blocks of said first array reside on a single device.
Claim 15
Dependent Claim
13 words
The method of claim 1, wherein said storage devices comprise magnetic disk drives.
Claim 16
Dependent Claim
22 words
The method of claim 1, wherein at least one of said arrays of storage devices is configured as a RAID 5 array.
Claim 17
Dependent Claim
220 words
In a storage subsystem comprising a plurality of arrays of storage devices including at least three arrays having a same number of rows, a first of said at least three arrays including a first plurality n of blocks of information stored therein, a second of said at least three arrays including a second plurality m of blocks of information stored therein, a third of said at least three arrays including a third plurality g of blocks of information stored therein, and at least said second and a third of said at least three arrays configured to include a spare region per row, where n, m, and q may have different values a method for recovering lost ones of said blocks of information in an event of a storage device failure in said first array, comprising the steps of: first determining if a dedicated spare storage device having spare regions is available in said storage subsystem; second determining if distributed spare regions are available in one or more other arrays in said storage subsystem, if said first determining step did not identify a dedicated spare storage device having spare regions; if spare regions are available as determined by said determining steps, reconstructing each of said lost blocks, and placing each of said reconstructed blocks in one of said available spare regions.
Claim 18
Dependent Claim
220 words
In a storage subsystem comprising a plurality of arrays of storage devices including at least three arrays having a same number of rows, a first of said at least three arrays including a first plurality n of blocks of information stored therein, a second of said at least three arrays including a second plurality m of blocks of information stored therein, a third of said at least three arrays including a third plurality g of blocks of information stored therein, and at least said second and a third of said at least three arrays configured to include a spare region per row, where n, m, and q may have different values a method for recovering lost ones of said blocks of information in an event of a storage device failure in said first array, comprising the steps of: first determining if a dedicated spare storage device having spare regions is available in said storage subsystem; second determining if distributed spare regions are available in one or more other arrays in said storage subsystem, if said first determining step did not identify a dedicated spare storage device having spare regions; if spare regions are available as determined by said determining steps, reconstructing each of said lost blocks, and placing each of said reconstructed blocks in one of said available spare regions.
Claim 19
Dependent Claim
55 words
The method of claim 16, wherein said blocks of information stored in said first array are arranged in a plurality of parity groups, each parity group including at least one data block and a parity block distributed in said first array such that no two blocks of said parity group reside on the same device.
Claim 20
Dependent Claim
28 words
The method of claim 16 wherein said reconstructing steps further comprise reconstructing each of said lost blocks from one or more remaining blocks of a same parity group.
Claim 21
Dependent Claim
26 words
The method of claim 17, wherein each parity block of a parity group is generated by exclusive OR-ing said data blocks of the same parity group.
Claim 22
Dependent Claim
43 words
The method of claim 18, wherein said reconstruction of a lost block further comprises the steps of: retrieving said one or more remaining blocks of said same parity group; and exclusive OR-ing said one or more remaining blocks to form a reconstructed block.
Claim 23
Dependent Claim
18 words
The method of claim 17, wherein said parity blocks of said first array reside on a single device.
Claim 24
Dependent Claim
22 words
The method of claim 16, wherein said parity blocks of said first array are distributed among said devices of said third array.
Claim 25
Dependent Claim
18 words
The method of claim 16, wherein said first array is configured to include a spare region per row.
Claim 26
Dependent Claim
18 words
The method of claim 23, wherein said second array includes a plurality of blocks of information stored therein.
Claim 27
Dependent Claim
126 words
The method of claim 24, further comprising the steps of: in the event of a storage device failure in said second array resulting in the loss of at least one of said blocks of information, determining if said spare regions of one of said first and third arrays are available; if said spare regions are available, reconstructing each of said lost blocks, and placing each of said reconstructed blocks in one of said available spare regions; if said spare regions are not available, determining if said spare regions of the other of said first and third arrays are available; and if said spare regions are available, reconstructing each of said lost blocks, and placing each of said reconstructed blocks in one of said available spare regions.
Claim 28
Dependent Claim
55 words
The method of claim 24, wherein said blocks of information stored in said second array are arranged in a plurality of parity groups, each parity group including at least one data block and a parity block distributed in said second array such that no two blocks of said parity group reside on the same device.
Claim 29
Dependent Claim
31 words
The method of claim 25, wherein said reconstructing step further comprises the step of reconstructing each of said lost blocks from one or more remaining blocks of a same parity group.
Claim 30
Dependent Claim
26 words
The method of claim 26, wherein each parity block of a parity group is generated by exclusive OR-ing said data blocks of a same parity group.
Claim 31
Dependent Claim
37 words
The method of claim 27, wherein said reconstruction of a lost block further comprises the steps of: retrieving the remaining blocks of the same parity group; and exclusive OR-ing said remaining blocks to form a reconstructed block.
Claim 32
Dependent Claim
18 words
The method of claim 26, wherein said parity blocks of said second array reside on a single device.
Claim 33
Dependent Claim
22 words
The method of claim 26, wherein said parity blocks of said second array are distributed among said devices of said second array.
Claim 34
Dependent Claim
17 words
The method of claim 16, wherein each array of said subsystem has a same number of rows.
Claim 35
Dependent Claim
37 words
The method of claim 16, wherein n>2 arrays of said subsystem, including said second and third arrays, are configured to include a spare region per row and have a same number of rows as said first array.
Claim 36
Dependent Claim
100 words
The method of claim 33 wherein if said spare regions of said second and third arrays are not available, repeating the following steps until either a) said spare regions of one of said n arrays are determined to be available or b) a determination of unavailability has been made for each of said spare regions of said n arrays: determining if said spare regions of a next of said n arrays are available; and if said spare regions are available, reconstructing each of said lost blocks, and placing each of said reconstructed blocks in one of said available spare regions.
Claim 37
Dependent Claim
13 words
The method of claim 16, wherein said storage devices comprise magnetic disk drives.
Claim 38
Dependent Claim
22 words
The method of claim 16, wherein at least one of said arrays of storage devices is configured as a RAID 5 array.
Claim 39
Dependent Claim
227 words
A storage subsystem comprising: a plurality of arrays of storage devices including at least first and second arrays having a same number of rows, said first array configured to include a first plurality n of blocks of data, a parity block and a spare region per row, and said second array including a second plurality m of blocks of data per row stored therein, where m may be unequal to n; first means responsive to a device failure in one of said arrays, resulting in a loss of at least one of said blocks of information, for determining if one or more of said spare regions of said first array are available for storing one or more blocks of information; second means for determining if a dedicated spare storage device having spare regions is available in said storage subsystem, if said first means for determining did not identify spare regions in said first array; third means for determining if distributed spare regions are available in one or more other arrays in said storage subsystem, if said second means for determining did not identify a dedicated spare storage device having spare regions; means responsive to said first, second and third determining means for reconstructing said lost blocks if spare regions are available; and means for placing each of said reconstructed blocks in one of said available spare regions.
Claim 40
Dependent Claim
227 words
A storage subsystem comprising: a plurality of arrays of storage devices including at least first and second arrays having a same number of rows, said first array configured to include a first plurality n of blocks of data, a parity block and a spare region per row, and said second array including a second plurality m of blocks of data per row stored therein, where m may be unequal to n; first means responsive to a device failure in one of said arrays, resulting in a loss of at least one of said blocks of information, for determining if one or more of said spare regions of said first array are available for storing one or more blocks of information; second means for determining if a dedicated spare storage device having spare regions is available in said storage subsystem, if said first means for determining did not identify spare regions in said first array; third means for determining if distributed spare regions are available in one or more other arrays in said storage subsystem, if said second means for determining did not identify a dedicated spare storage device having spare regions; means responsive to said first, second and third determining means for reconstructing said lost blocks if spare regions are available; and means for placing each of said reconstructed blocks in one of said available spare regions.
Claim 41
Dependent Claim
56 words
The storage subsystem of claim 37, wherein said blocks of information stored in said second array are arranged in a plurality of parity groups, each parity group including at least one data block and a parity block distributed in said second array such that no two blocks of said parity group reside on the same device.
Claim 42
Dependent Claim
31 words
The storage subsystem of claim 37, wherein said reconstructing means further comprise means for reconstructing each of said lost blocks from one or more remaining blocks of a same parity group.
Claim 43
Dependent Claim
27 words
The storage subsystem of claim 38, wherein each parity block of a parity group is generated by exclusive OR-ing said data blocks of a same parity group.
Claim 44
Dependent Claim
42 words
The storage subsystem of claim 39, wherein said reconstructing means further comprises: means for retrieving said one or more remaining blocks of said same parity group; and means for exclusive OR-ing said one or more remaining blocks to form a reconstructed block.
Claim 45
Dependent Claim
19 words
The storage subsystem of claim 38, wherein said parity blocks of said second array reside on a single device.
Claim 46
Dependent Claim
23 words
The storage subsystem of claim 38, wherein said parity blocks of said second array are distributed among said devices of said second array.
Claim 47
Dependent Claim
19 words
The storage subsystem of claim 37, wherein said second array is configured to include a spare region per row.
Claim 48
Dependent Claim
58 words
The storage subsystem of claim 37, wherein said plurality of blocks of information stored in said first array are arranged in a plurality of parity groups, each parity group including at least one data block and a parity block distributed in said first array such that no two blocks of said parity group reside on the same device.
Claim 49
Dependent Claim
31 words
The storage subsystem of claim 45, wherein said reconstructing means further comprises means for reconstructing each of said lost blocks from one or more remaining blocks of a same parity group.
Claim 50
Dependent Claim
27 words
The storage subsystem of claim 45, wherein each parity block of a parity group is generated by exclusive OR-ing said data blocks of a same parity group.
Claim 51
Dependent Claim
41 words
The storage subsystem of claim 38, wherein said reconstructing means further comprises: means for retrieving said one or more remaining of said blocks of the same parity group; and means for exclusive OR-ing said remaining blocks to form a reconstructed block.
Claim 52
Dependent Claim
19 words
The storage subsystem of claim 45, wherein said parity blocks of said first array reside on a single device.
Claim 53
Dependent Claim
14 words
The storage subsystem of claim 37, wherein said storage devices comprise magnetic disk drives.
Claim 54
Dependent Claim
23 words
The storage subsystem of claim 37, wherein at least one of said arrays of storage devices is configured as a RAID 5 array.
Claim 55
Dependent Claim
234 words
A storage subsystem, comprising: a plurality of arrays of storage devices including at least three arrays having a same number of rows, a first of said at least three arrays including a first plurality n of blocks of information stored therein, a second of said at least three arrays including a second plurality m of blocks of information stored therein, a third of said at least three arrays including a third plurality g of blocks of information stored therein, and at least said second and said third of said at least three arrays configured to include a spare region per row where n, m, and g may have different values; first means responsive to a storage device failure in one of said arrays resulting in a loss of at least one of said blocks of information, for determining if a dedicated spare storage device having spare regions is available in said at least second and third arrays; second means for determining if distributed spare regions are available in one or more other arrays in said storage subsystem, if said first determining step did not identify a dedicated spare storage device having spare regions; means responsive to said first and second determining means for reconstructing each of said lost blocks if said one or more spare regions are available; and means for placing each of said reconstructed blocks in one of said available spare regions.
Claim 56
Dependent Claim
234 words
A storage subsystem, comprising: a plurality of arrays of storage devices including at least three arrays having a same number of rows, a first of said at least three arrays including a first plurality n of blocks of information stored therein, a second of said at least three arrays including a second plurality m of blocks of information stored therein, a third of said at least three arrays including a third plurality g of blocks of information stored therein, and at least said second and said third of said at least three arrays configured to include a spare region per row where n, m, and g may have different values; first means responsive to a storage device failure in one of said arrays resulting in a loss of at least one of said blocks of information, for determining if a dedicated spare storage device having spare regions is available in said at least second and third arrays; second means for determining if distributed spare regions are available in one or more other arrays in said storage subsystem, if said first determining step did not identify a dedicated spare storage device having spare regions; means responsive to said first and second determining means for reconstructing each of said lost blocks if said one or more spare regions are available; and means for placing each of said reconstructed blocks in one of said available spare regions.
Claim 57
Dependent Claim
56 words
The storage subsystem of claim 52, wherein said blocks of information stored in said first array are arranged in a plurality of parity groups, each parity group including at least one data block and a parity block distributed in said first array such that no two blocks of said parity group reside on the same device.
Claim 58
Dependent Claim
32 words
The storage subsystem of claim 52, wherein said reconstructing means further comprises means for reconstructing each of said lost blocks from said one or more remaining blocks of a same parity group.
Claim 59
Dependent Claim
27 words
The storage subsystem of claim 53, wherein each parity block of a parity group is generated by exclusive OR-ing said data blocks of the same parity group.
Claim 60
Dependent Claim
41 words
The storage subsystem of claim 53, wherein said reconstructing means further comprises: means for retrieving said one or more remaining of said blocks of said same parity group; and means for exclusive OR-ing said remaining blocks to form a reconstructed block.
Claim 61
Dependent Claim
19 words
The storage subsystem of claim 53, wherein said parity blocks of said first array reside on a single device.
Claim 62
Dependent Claim
23 words
The storage subsystem of claim 52, wherein said parity blocks of said first array are distributed among said devices of said third array.
Claim 63
Dependent Claim
19 words
The storage subsystem of claim 52, wherein said first array is configured to include a spare region per row.
Claim 64
Dependent Claim
19 words
The storage subsystem of claim 59, wherein said second array includes a plurality of blocks of information stored therein.
Claim 65
Dependent Claim
83 words
The storage subsystem of claim 60, further comprising: means responsive to a storage device failure in said second array resulting in a loss of at least one of said blocks of information, for determining if said spare regions of one of said first and third arrays are available; means responsive to said determining means for reconstructing each of said lost blocks if said spare regions are available; and means for placing each of said reconstructed blocks in one of said available spare regions.
Claim 66
Dependent Claim
56 words
The storage subsystem of claim 61, wherein said blocks of information stored in said second array are arranged in a plurality of parity groups, each parity group including at least one data block and a parity block distributed in said second array such that no two blocks of said parity group reside on the same device.
Claim 67
Dependent Claim
29 words
The storage subsystem of claim 61, wherein said reconstructing step further comprises reconstructing each of said lost blocks from one or more remaining blocks of a same parity group.
Claim 68
Dependent Claim
27 words
The storage subsystem of claim 62, wherein each parity block of a parity group is generated by exclusive OR-ing said data blocks of a same parity group.
Claim 69
Dependent Claim
36 words
The storage subsystem of claim 63, wherein said reconstructing means further comprises: means for retrieving the remaining blocks of the same parity group; and means for exclusive OR-ing said remaining blocks to form said reconstructed block.
Claim 70
Dependent Claim
19 words
The storage subsystem of claim 62, wherein said parity blocks of said second array reside on a single device.
Claim 71
Dependent Claim
23 words
The storage subsystem of claim 62, wherein said parity blocks of said second array are distributed among said devices of said second array.
Claim 72
Dependent Claim
18 words
The storage subsystem of claim 52, wherein each array of said subsystem has a same number of rows.
Claim 73
Dependent Claim
38 words
The storage subsystem of claim 52, wherein n>2 arrays of said subsystem, including said second and third arrays, are configured to include a spare region per row and have a same number of rows as said first array.
Claim 74
Dependent Claim
41 words
The storage subsystem of claim 69, wherein said determining means further comprises means for determining if said spare regions are available on a next of said n arrays if said spare regions of said second and third arrays are not available.
Claim 75
Dependent Claim
36 words
The storage subsystem of claim 70, further comprising: means responsive to said determining means for reconstructing each of said lost blocks; and means for placing each of said reconstructed blocks in one of said spare regions.
Claim 76
Dependent Claim
14 words
The storage subsystem of claim 52, wherein said storage devices comprise magnetic disk drives.
Claim 77
Dependent Claim
23 words
The storage subsystem of claim 52, wherein at least one of said arrays of storage devices is configured as a RAID 5 array.
Claim 78
Dependent Claim
252 words
A computer system, comprising: a central processing unit (CPU); and a storage subsystem, said storage subsystem further comprising, a plurality of arrays of storage devices including first and second arrays having a same number of rows, said first array configured to include a first plurality n of blocks of data, a parity block and a spare region per row, and said second array configured to include a second plurality m of blocks of data per row stored therein, where m may be unequal to n,; first means responsive to a device failure in one of said arrays resulting in a loss of at least one of said blocks of data, for first determining if spare regions are available in said one of said arrays in which said device failure occurred; second means for determining if a dedicated spare storage device having spare regions is available in said storage subsystem, if said first determining means did not identify spare regions in said one of said arrays; third means for determining if distributed spare regions are available in one or more other arrays in said storage subsystem, if said second determining means did not identify a dedicated spare storage device having spare regions; means responsive to said first, second and third determining means for reconstructing said lost blocks if said spare regions are available; means for placing each of said reconstructed blocks in one of said available spare regions; means for controlling said storage subsystem; and means for linking said CPU to said subsystem.
Claim 79
Dependent Claim
252 words
A computer system, comprising: a central processing unit (CPU); and a storage subsystem, said storage subsystem further comprising, a plurality of arrays of storage devices including first and second arrays having a same number of rows, said first array configured to include a first plurality n of blocks of data, a parity block and a spare region per row, and said second array configured to include a second plurality m of blocks of data per row stored therein, where m may be unequal to n,; first means responsive to a device failure in one of said arrays resulting in a loss of at least one of said blocks of data, for first determining if spare regions are available in said one of said arrays in which said device failure occurred; second means for determining if a dedicated spare storage device having spare regions is available in said storage subsystem, if said first determining means did not identify spare regions in said one of said arrays; third means for determining if distributed spare regions are available in one or more other arrays in said storage subsystem, if said second determining means did not identify a dedicated spare storage device having spare regions; means responsive to said first, second and third determining means for reconstructing said lost blocks if said spare regions are available; means for placing each of said reconstructed blocks in one of said available spare regions; means for controlling said storage subsystem; and means for linking said CPU to said subsystem.
Claim 80
Dependent Claim
56 words
The computer system of claim 74, wherein said blocks of information stored in said second array are arranged in a plurality of parity groups, each parity group including at least one data block and a parity block distributed in said second array such that no two blocks of said parity group reside on the same device.
Claim 81
Dependent Claim
31 words
The computer system of claim 74, wherein said reconstructing means further comprise means for reconstructing each of said lost blocks from one or more remaining blocks of a same parity group.
Claim 82
Dependent Claim
27 words
The computer system of claim 75, wherein each parity block of a parity group is generated by exclusive OR-ing said data blocks of a same parity group.
Claim 83
Dependent Claim
43 words
The computer system of claim 76, wherein said reconstructing means further comprises: means for retrieving said one or more remaining said blocks of said same parity group; and means for exclusive OR-ing said one or more remaining blocks to form a reconstructed block.
Claim 84
Dependent Claim
19 words
The computer system of claim 75, wherein said parity blocks of said second array reside on a single device.
Claim 85
Dependent Claim
23 words
The computer system of claim 75, wherein said parity blocks of said second array are distributed among said devices of said second array.
Claim 86
Dependent Claim
19 words
The computer system of claim 74, wherein said second array is configured to include a spare region per row.
Claim 87
Dependent Claim
58 words
The computer system of claim 74, wherein said plurality of blocks of information stored in said first array are arranged in a plurality of parity groups, each parity group including at least one data block and a parity block distributed in said first array such that no two blocks of said parity group reside on the same device.
Claim 88
Dependent Claim
31 words
The computer system of claim 82, wherein said reconstructing means further comprises means for reconstructing each of said lost blocks from one or more remaining blocks of a same parity group.
Claim 89
Dependent Claim
27 words
The computer system of claim 82, wherein each parity block of a parity group is generated by exclusive OR-ing said data blocks of a same parity group.
Claim 90
Dependent Claim
41 words
The computer system of claim 75, wherein said reconstructing means further comprises: means for retrieving said one or more remaining of said blocks of the same parity group; and means for exclusive OR-ing said remaining blocks to form a reconstructed block.
Claim 91
Dependent Claim
19 words
The computer system of claim 82, wherein said parity blocks of said first array reside on a single device.
Claim 92
Dependent Claim
14 words
The computer system of claim 74, wherein said storage devices comprise magnetic disk drives.
Claim 93
Dependent Claim
23 words
The computer system of claim 74, wherein at least one of said arrays of storage devices is configured as a RAID 5 array.
Claim 94
Dependent Claim
16 words
The computer system of claim 74, wherein said computer comprises an IBM AS/400 data processing system.
Claim 95
Dependent Claim
19 words
The computer system of claim 74, wherein said controlling means comprises a storage control unit that includes a microprocessor.
Claim 96
Dependent Claim
21 words
The computer system of claim 90, wherein said storage control unit and said storage subsystem comprise an IBM 9337 storage subsystem.
Claim 97
Dependent Claim
14 words
The computer system of claim 74, wherein said linking means comprises a SCSI interface.
Claim 98
Dependent Claim
18 words
The computer system of claim 74, wherein said controlling means comprises a storage controller residing in said CPU.
Claim 99
Dependent Claim
16 words
The computer system of claim 93, wherein said storage controller comprises a Mylex DAC960P RAID adapter.