Claims Analysis
Total Claims: 68
Claim 1
Independent Claim
162 words
A method for on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block, comprising the steps of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a read request for a data block during reconstruction, then: (1) if the requested data block is located on the replacement storage unit, then: (a) accessing all other corresponding data blocks and at least one corresponding error-correction block in the stripe containing the requested data block; (b) reconstructing the requested data block from the accessed blocks; (2) if the requested data block is not located on the replacement storage unit, then: (a) accessing the requested data block directly.
Claim 2
Independent Claim
162 words
A method for on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block, comprising the steps of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a read request for a data block during reconstruction, then: (1) if the requested data block is located on the replacement storage unit, then: (a) accessing all other corresponding data blocks and at least one corresponding error-correction block in the stripe containing the requested data block; (b) reconstructing the requested data block from the accessed blocks; (2) if the requested data block is not located on the replacement storage unit, then: (a) accessing the requested data block directly.
Claim 3
Dependent Claim
181 words
The method of claim 1, further including the steps of: a. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified is located on the replacement storage unit, then: (a) accessing all other corresponding blocks in the stripe containing the data block to be modified; (b) reconstructing the data block to be modified from the accessed blocks; (c) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (d) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 4
Dependent Claim
96 words
The method of claim 2, wherein receipt of a write request includes the further steps of: a. if the at least one error-correction block associated with the data block to be modified is located on the replacement storage unit, then: (1) accessing all corresponding data blocks in the stripe containing the data block to be modified; (2) computing at least one error-correction block from the accessed blocks and the new data block; (3) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 5
Dependent Claim
175 words
The method of claim 1, further including the steps of: a. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified or its at least one associated error-correction block are located on the replacement storage unit, then: (a) accessing all other corresponding data blocks in the stripe containing the data block to be modified; (b) computing at least one error-correction block from the accessed blocks and the new data block; (c) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 6
Independent Claim
250 words
A method for on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block, comprising the steps of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified is located on the replacement storage unit, then: (a) accessing all other corresponding blocks in the stripe containing the data block to be modified; (b) reconstructing the data block to be modified from the accessed blocks; (c) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (d) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 7
Independent Claim
250 words
A method for on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block, comprising the steps of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified is located on the replacement storage unit, then: (a) accessing all other corresponding blocks in the stripe containing the data block to be modified; (b) reconstructing the data block to be modified from the accessed blocks; (c) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (d) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 8
Dependent Claim
97 words
The method of claim 5, wherein receipt of a write request includes the further steps of: a. if the at least one error-correction block associated with the data block to be modified is located on the replacement storage unit, then: (1) accessing all other corresponding data blocks in the stripe containing the data block to be modified; (2) computing at Least one error-correction block from the accessed blocks and the new data block; (3) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 9
Independent Claim
244 words
A method for on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block, comprising the steps of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified or its at least one associated error-correction block are located on the replacement storage unit, then: (a) accessing all other corresponding data blocks in the stripe containing the data block to be modified; (b) computing at least one error-correction block from the accessed blocks and the new data block; (c) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 10
Independent Claim
244 words
A method for on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block, comprising the steps of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified or its at least one associated error-correction block are located on the replacement storage unit, then: (a) accessing all other corresponding data blocks in the stripe containing the data block to be modified; (b) computing at least one error-correction block from the accessed blocks and the new data block; (c) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 11
Independent Claim
64 words
The method of claims 1, 5, or 7, wherein at least one error-correction block contains parity information, and the step of reconstructing each data block of the failed storage unit comprises the steps of: a. accessing all other corresponding data blocks and the corresponding parity error-correction block in the corresponding stripe; b. exclusively-OR'ing all of the accessed blocks to generate a new data block.
Claim 12
Independent Claim
81 words
The method of claims 2, 4, 5, or 7, wherein at least one error-correction block contains parity information, and the step of updating the at least one associated error-correction block in response to receipt of a write request comprises the steps of: a. reading the data block to be modified and the associated parity error-correction block; b. exclusively-OR'ing the parity error-correction block with the data block to be modified and the new data block to generate an updated parity error-correction block.
Claim 13
Independent Claim
37 words
The method of claims 3, 4, 6, or 7, wherein the step of computing at least one error-correction block in response to receipt of a write request comprises exclusively-OR'ing the accessed blocks and the new data block.
Claim 14
Independent Claim
26 words
The method of claims 1, 2, or 4, wherein the step of reconstructing the requested data block from the accessed blocks comprises exclusively-OR'ing the accessed blocks.
Claim 15
Independent Claim
27 words
The method of claims 2 or 5, wherein the step of reconstructing the data block to be modified from the accessed blocks comprises exclusively-OR'ing the accessed blocks.
Claim 16
Independent Claim
71 words
The method of claims 1, 2, or 4, wherein when the requested data block is located on the replacement storage unit: a. if the block has previously been reconstructed, then: (1) accessing the requested data block directly; b. otherwise; (1) accessing all other corresponding data blocks and at least one corresponding error-correction block in the stripe containing the requested data block; (2) reconstructing the requested data block from the accessed blocks.
Claim 17
Independent Claim
38 words
The method of claims 1, 5, or 7, wherein the step of reconstructing each data block of the failed storage unit for each stripe in the array is performed only for stripes that have not previously been reconstructed.
Claim 18
Dependent Claim
167 words
A controller for on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units, the storage units having at least one stripe containing a plurality of data blocks and an associated error-correction block, the controller including means for operatively coupling the controller to the array of storage units and means for: a. reconstructing each data block of the failed storage unit for each stripe in the array and storing each reconstructed data block on the replacement storage unit in the corresponding stripe; b. reading a requested data block during the reconstruction, by: (1) if the requested data block is located on the replacement storage unit, then: (a) accessing all other corresponding data blocks and the corresponding error-correction block in the stripe containing the requested data block; (b) reconstructing the requested data block from the accessed blocks; (2) if the requested data block is not located on the replacement storage unit, then: (a) accessing the requested data block directly.
Claim 19
Dependent Claim
167 words
A controller for on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units, the storage units having at least one stripe containing a plurality of data blocks and an associated error-correction block, the controller including means for operatively coupling the controller to the array of storage units and means for: a. reconstructing each data block of the failed storage unit for each stripe in the array and storing each reconstructed data block on the replacement storage unit in the corresponding stripe; b. reading a requested data block during the reconstruction, by: (1) if the requested data block is located on the replacement storage unit, then: (a) accessing all other corresponding data blocks and the corresponding error-correction block in the stripe containing the requested data block; (b) reconstructing the requested data block from the accessed blocks; (2) if the requested data block is not located on the replacement storage unit, then: (a) accessing the requested data block directly.
Claim 20
Dependent Claim
183 words
The controller of claim 15, wherein the controller further includes means for: a. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified is located on the replacement storage unit, then: (a) accessing all other corresponding blocks in the stripe containing the data block to be modified; (b) reconstructing the data block to be modified from the accessed blocks; (c) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (d) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 21
Dependent Claim
99 words
The controller of claim 16, wherein the controller further includes means, responsive to receipt of a write request, for: a. if the at least one error-correction block associated with the data block to be modified is located on the replacement storage unit, then: (1) accessing all corresponding data blocks in the stripe containing the data block to be modified; (2) computing at least one error-correction block from the accessed blocks and the new data block; (3) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 22
Dependent Claim
177 words
The controller of claim 15, wherein the controller further includes means for: a. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified or its at least one associated error-correction block are located on the replacement storage unit, then: (a) accessing all other corresponding data blocks in the stripe containing the data block to be modified; (b) computing at least one error-correction block from the accessed blocks and the new data block; (c) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 23
Dependent Claim
241 words
A controller for on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units, the storage units having at least one stripe containing a plurality of data blocks and an associated error-correction block, the controller including means for operatively coupling the controller to the array of storage units and means for: a. reconstructing each data block of the failed storage unit for each stripe in the array and storing each reconstructed data block on the replacement storage unit in the corresponding stripe; b. writing a new data block during the reconstruction, by: (1) if the data block to be modified and its associated error-correction block are not located on the replacement storage unit, then: (a) updating the associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified is located on the replacement storage unit, then: (a) accessing all other corresponding blocks in the stripe containing the data block to be modified; (b) reconstructing the data block to be modified from the accessed blocks; (c) updating the associated error-correction block in the stripe containing the data block to be modified; (d) writing the updated error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 24
Dependent Claim
241 words
A controller for on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units, the storage units having at least one stripe containing a plurality of data blocks and an associated error-correction block, the controller including means for operatively coupling the controller to the array of storage units and means for: a. reconstructing each data block of the failed storage unit for each stripe in the array and storing each reconstructed data block on the replacement storage unit in the corresponding stripe; b. writing a new data block during the reconstruction, by: (1) if the data block to be modified and its associated error-correction block are not located on the replacement storage unit, then: (a) updating the associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified is located on the replacement storage unit, then: (a) accessing all other corresponding blocks in the stripe containing the data block to be modified; (b) reconstructing the data block to be modified from the accessed blocks; (c) updating the associated error-correction block in the stripe containing the data block to be modified; (d) writing the updated error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 25
Dependent Claim
100 words
The controller of claim 19, wherein the controller further includes means, responsive to receipt of a write request, for: a. if the at least one error-correction block associated with the data block to be modified is located on the replacement storage unit, then: (1) accessing all other corresponding data blocks in the stripe containing the data block to be modified; (2) computing at least one error-correction block from the accessed blocks and the new data block; (3) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 26
Dependent Claim
233 words
A controller for on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units, the storage units having at least one stripe containing a plurality of data blocks and an associated error-correction block, the controller including means for operatively coupling the controller to the array of storage units and means for: a. reconstructing each data block of the failed storage unit for each stripe in the array and storing each reconstructed data block on the replacement storage unit in the corresponding stripe; b. writing a new data block during the reconstruction, by: (1) if the data block to be modified and its associated error-correction block are not located on the replacement storage unit, then: (a) updating the associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified or its associated error-correction block are located on the replacement storage unit, then: (a) accessing all other corresponding data blocks in the stripe containing the data block to be modified; (b) computing a error-correction block from the accessed blocks and the new data block; (c) writing the computed error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 27
Dependent Claim
233 words
A controller for on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units, the storage units having at least one stripe containing a plurality of data blocks and an associated error-correction block, the controller including means for operatively coupling the controller to the array of storage units and means for: a. reconstructing each data block of the failed storage unit for each stripe in the array and storing each reconstructed data block on the replacement storage unit in the corresponding stripe; b. writing a new data block during the reconstruction, by: (1) if the data block to be modified and its associated error-correction block are not located on the replacement storage unit, then: (a) updating the associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified or its associated error-correction block are located on the replacement storage unit, then: (a) accessing all other corresponding data blocks in the stripe containing the data block to be modified; (b) computing a error-correction block from the accessed blocks and the new data block; (c) writing the computed error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 28
Dependent Claim
65 words
The controller of claims 15, 19, or 21, wherein at least one error-correction block contains parity information, and wherein, for reconstructing each data block of the failed storage unit, the controller further includes means for: a. accessing all other corresponding data blocks and the corresponding parity error-correction block in the corresponding stripe; b. exclusively-OR'ing all of the accessed blocks to generate a new data block.
Claim 29
Dependent Claim
82 words
The controller of claims 16, 18, 19, or 21, wherein at least one error-correction block contains parity information, and wherein, for updating the at least one associated error-correction block in response to receipt of a write request, the controller further includes means for: a. reading the data block to be modified and the associated parity error-correction block; b. exclusively-OR'ing the parity error-correction block with the data block to be modified and the new data block to generate an updated parity error-correction block.
Claim 30
Dependent Claim
34 words
The controller of claims 17, 18, 20, or 21, wherein computing at least one error-correction block in response to receipt of a write request comprises exclusively-OR'ing the accessed blocks and the new data block.
Claim 31
Dependent Claim
23 words
The controller of claims 15, 16, or 18, wherein reconstructing the requested data block from the accessed blocks comprises exclusively-OR'ing the accessed blocks.
Claim 32
Dependent Claim
24 words
The controller of claims 16 or 19, wherein reconstructing the data block to be modified from the accessed blocks comprises exclusively-OR'ing the accessed blocks.
Claim 33
Dependent Claim
77 words
The controller of claims 15, 16, or 18, wherein the controller further includes means, when the requested data block is located on the replacement storage unit, for: a. if the block has previously been reconstructed, then: (1) accessing the requested data block directly; b. otherwise; (1) accessing all other corresponding data blocks and at least one corresponding error-correction block in the stripe containing the requested data block; (2) reconstructing the requested data block from the accessed blocks.
Claim 34
Dependent Claim
35 words
The controller of claims 15, 19, or 21, wherein reconstructing each data block of the failed storage unit for each stripe in the array is performed only for stripes that have not previously been reconstructed.
Claim 35
Dependent Claim
227 words
A control program tangibly stored on a storage device readable by a programmable control device when coupled to the storage device, such that the control device is configured and operated by the control program when the storage device is read by the control device, the configured control device being operated to perform on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units coupled to the control device, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block the control program being configured to operate the control device to perform the function of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a read request for a data block during reconstruction, then: (1) if the requested data block is located on the replacement storage unit, then: (a) accessing all other corresponding data blocks and at least one corresponding error-correction block in the stripe containing the requested data block; (b) reconstructing the requested data block from the accessed blocks; (2) if the requested data block is not located on the replacement storage unit, then: (a) accessing the requested data block directly.
Claim 36
Dependent Claim
227 words
A control program tangibly stored on a storage device readable by a programmable control device when coupled to the storage device, such that the control device is configured and operated by the control program when the storage device is read by the control device, the configured control device being operated to perform on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units coupled to the control device, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block the control program being configured to operate the control device to perform the function of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a read request for a data block during reconstruction, then: (1) if the requested data block is located on the replacement storage unit, then: (a) accessing all other corresponding data blocks and at least one corresponding error-correction block in the stripe containing the requested data block; (b) reconstructing the requested data block from the accessed blocks; (2) if the requested data block is not located on the replacement storage unit, then: (a) accessing the requested data block directly.
Claim 37
Dependent Claim
194 words
The control program of claim 29, wherein the control program is further configured to operate the control device to perform the function of: a. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified is located on the replacement storage unit, then: (a) accessing all other corresponding blocks in the stripe containing the data block to be modified; (b) reconstructing the data block to be modified from the accessed blocks; (c) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (d) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 38
Dependent Claim
103 words
The control program of claim 30, wherein the control program is further configured to operate the control device to perform the function of: a. if the at least one error-correction block associated with the data block to be modified is located on the replacement storage unit, then: (1) accessing all corresponding data blocks in the stripe containing the data block to be modified; (2) computing at least one error-correction block from the accessed blocks and the new data block; (3) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 39
Dependent Claim
188 words
The control program of claim 29, wherein the control program is further configured to operate the control device to perform the function of: a. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified or its at least one associated error-correction block are located on the replacement storage unit, then: (a) accessing all other corresponding data blocks in the stripe containing the data block to be modified; (b) computing at least one error-correction block from the accessed blocks and the new data block; (c) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 40
Dependent Claim
315 words
A control program tangibly stored on a storage device readable by a programmable control device when coupled to the storage device, such that the control device is configured and operated by the control program when the storage device is read by the control device, the configured control device being operated to perform on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units coupled to the control device, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block the control program being configured to operate the control device to perform the function of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified is located on the replacement storage unit, then: (a) accessing all other corresponding blocks in the stripe containing the data block to be modified; (b) reconstructing the data block to be modified from the accessed blocks; (c) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (d) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 41
Dependent Claim
315 words
A control program tangibly stored on a storage device readable by a programmable control device when coupled to the storage device, such that the control device is configured and operated by the control program when the storage device is read by the control device, the configured control device being operated to perform on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units coupled to the control device, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block the control program being configured to operate the control device to perform the function of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified is located on the replacement storage unit, then: (a) accessing all other corresponding blocks in the stripe containing the data block to be modified; (b) reconstructing the data block to be modified from the accessed blocks; (c) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (d) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 42
Dependent Claim
104 words
The control program of claim 33, wherein the control program is further configured to operate the control device to perform the function of: a. if the at least one error-correction block associated with the data block to be modified is located on the replacement storage unit, then: (1) accessing all other corresponding data blocks in the stripe containing the data block to be modified; (2) computing at least one error-correction block from the accessed blocks and the new data block; (3) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 43
Dependent Claim
309 words
A control program tangibly stored on a storage device readable by a programmable control device when coupled to the storage device, such that the control device is configured and operated by the control program when the storage device is read by the control device, the configured control device being operated to perform on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units coupled to the control device, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block the control program being configured to operate the control device to perform the function of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified or its at least one associated error-correction block are located on the replacement storage unit, then: (a) accessing all other corresponding data blocks in the stripe containing the data block to be modified; (b) computing at least one error-correction block from the accessed blocks and the new data block; (c) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 44
Dependent Claim
309 words
A control program tangibly stored on a storage device readable by a programmable control device when coupled to the storage device, such that the control device is configured and operated by the control program when the storage device is read by the control device, the configured control device being operated to perform on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units coupled to the control device, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block the control program being configured to operate the control device to perform the function of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified or its at least one associated error-correction block are located on the replacement storage unit, then: (a) accessing all other corresponding data blocks in the stripe containing the data block to be modified; (b) computing at least one error-correction block from the accessed blocks and the new data block; (c) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 45
Dependent Claim
79 words
The control program of claims 29, 33, or 35, wherein at least one error-correction block contains parity information, and wherein the control program is further configured to operate the control device to perform the step of reconstructing each data block of the failed storage unit by the function of: a. accessing all other corresponding data blocks and the corresponding parity error-correction block in the corresponding stripe; b. exclusively-OR'ing all of the accessed blocks to generate a new data block.
Claim 46
Dependent Claim
96 words
The control program of claims 30, 32, 33, or 35, wherein at least one error-correction block contains parity information and wherein the control program is further configured to operate the control device to perform the step of updating the at least one associated error-correction block in response to receipt of a write request by the function of: a. reading the data block to be modified and the associated parity error-correction block; b. exclusively-OR'ing the parity error-correction block with the data block to be modified and the new data block to generate an updated parity error-correction block.
Claim 47
Dependent Claim
54 words
The control program of claims 31, 32, 34, or 35, wherein the control program is further configured to operate the control device to perform the step of computing at least one error-correction block in response to receipt of a write request by the function of exclusively-OR'ing the accessed blocks and the new data block.
Claim 48
Dependent Claim
43 words
The control program of claims 29, 30, or 32, wherein tile control program is further configured to operate the control device to perform the step of reconstructing the requested data block from the accessed blocks by the function of exclusively-OR'ing the accessed blocks.
Claim 49
Dependent Claim
44 words
The control program of claims 30 or 33, wherein the control program is further configured to operate the control device to perform the step of reconstructing the data block to be modified from the accessed blocks by the function of exclusively-OR'ing the accessed blocks.
Claim 50
Dependent Claim
87 words
The control program of claims 29, 30, 32, wherein when the requested data block is located on the replacement storage unit, the control program is further configured to operate the control device to perform the function of: a. if the block has previously been reconstructed then: (1) accessing the requested data block directly; b. otherwise; (1) accessing all other corresponding data blocks and at least one corresponding error-correction block in the stripe containing the requested data block; (2) reconstructing the requested data block from the accessed blocks.
Claim 51
Dependent Claim
50 words
The control program of claims 29, 33, or 35, wherein the control program is further configured to operate the control device to perform the step of reconstructing each data block of the failed storage unit for each stripe in the array only for stripes that have not previously been reconstructed.
Claim 52
Dependent Claim
228 words
A storage device readable by a programmable control device when coupled to the storage device, the storage device containing a control program tangibly stored thereon, such that the control device is operated by the control program when the storage device is read by the control device, the control device being operated to perform on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units coupled to the control device, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block, the control program being configured to operate the control device to perform the function of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a read request for a data block during reconstruction, then: (1) if the requested data block is located on the replacement storage unit, then: (a) accessing all other corresponding data blocks and at least one corresponding error-correction block in the stripe containing the requested data block; (b) reconstructing the requested data block from the accessed blocks; (2) if the requested data block is not located on the replacement storage unit, then: (a) accessing the requested data block directly.
Claim 53
Dependent Claim
228 words
A storage device readable by a programmable control device when coupled to the storage device, the storage device containing a control program tangibly stored thereon, such that the control device is operated by the control program when the storage device is read by the control device, the control device being operated to perform on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units coupled to the control device, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block, the control program being configured to operate the control device to perform the function of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a read request for a data block during reconstruction, then: (1) if the requested data block is located on the replacement storage unit, then: (a) accessing all other corresponding data blocks and at least one corresponding error-correction block in the stripe containing the requested data block; (b) reconstructing the requested data block from the accessed blocks; (2) if the requested data block is not located on the replacement storage unit, then: (a) accessing the requested data block directly.
Claim 54
Dependent Claim
194 words
The storage device of claim 43, wherein the control program is further configured to operate the control device to perform the function of: a. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified is located on the replacement storage unit, then: (a) accessing all other corresponding blocks in the stripe containing the data block to be modified; (b) reconstructing the data block to be modified from the accessed blocks; (c) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (d) writing the updated at least one error-correction block and the new data block in the stripe containing tile data block to be modified.
Claim 55
Dependent Claim
103 words
The storage device of claim 44, wherein the control program is further configured to operate the control device to perform the function of: a. if the at least one error-correction block associated with tile data block to be modified is located on the replacement storage unit, then: (1) accessing all corresponding data blocks in the stripe containing the data block to be modified; (2) computing at least one error-correction block from the accessed blocks and the new data block; (3) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 56
Dependent Claim
188 words
The storage device of claim 43, wherein the control program is further configured to operate the control device to perform the function of: a. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified or its at least one associated error-correction block are located on the replacement storage unit then: (a) accessing all other corresponding data blocks in the stripe containing the data block to be modified; (b) computing at least one error-correction block from the accessed blocks and the new data block; (c) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 57
Dependent Claim
316 words
A storage device readable by a programmable control device when coupled to the storage device, the storage device containing a control program tangibly stored thereon, such that the control device is operated by the control program when the storage device is read by the control device, the control device being operated to perform on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units coupled to the control device, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block, the control program being configured to operate the control device to perform the function of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified is located on the replacement storage unit, then: (a) accessing all other corresponding blocks in the stripe containing the data block to be modified; (b) reconstructing the data block to be modified from the accessed blocks; (c) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (d) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 58
Dependent Claim
316 words
A storage device readable by a programmable control device when coupled to the storage device, the storage device containing a control program tangibly stored thereon, such that the control device is operated by the control program when the storage device is read by the control device, the control device being operated to perform on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units coupled to the control device, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block, the control program being configured to operate the control device to perform the function of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified is located on the replacement storage unit, then: (a) accessing all other corresponding blocks in the stripe containing the data block to be modified; (b) reconstructing the data block to be modified from the accessed blocks; (c) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (d) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 59
Dependent Claim
104 words
The storage device of claim 47, wherein the control program is further configured to operate the control device to perform the function of: a. if the at least one error-correction block associated with the data block to be modified is located on the replacement storage unit, then: (1) accessing all other corresponding data blocks in the stripe containing the data block to be modified; (2) computing at least one error-correction block from the accessed blocks and the new data block; (3) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 60
Dependent Claim
310 words
A storage device readable by a programmable control device when coupled to the storage device, the storage device containing a control program tangibly stored thereon, such that the control device is operated by the control program when the storage device is read by the control device, the control device being operated to perform on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units coupled to the control device, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block, the control program being configured to operate the control device to perform the function of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified or its at least one associated error-correction block are located on the replacement storage unit, then: (a) accessing all other corresponding data blocks in the stripe containing the data block to be modified; (b) computing at least one error-correction block from the accessed blocks and the new data block; (c) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 61
Dependent Claim
310 words
A storage device readable by a programmable control device when coupled to the storage device, the storage device containing a control program tangibly stored thereon, such that the control device is operated by the control program when the storage device is read by the control device, the control device being operated to perform on-line reconstruction of a failed data storage unit to a replacement storage unit in a redundant array of storage units coupled to the control device, the storage units having at least one stripe containing a plurality of data blocks and at least one associated error-correction block, the control program being configured to operate the control device to perform the function of: a. reconstructing each data block of the failed storage unit for each stripe in the array; b. storing each reconstructed data block on the replacement storage unit in the corresponding stripe; c. if the array receives a write request for a new data block during reconstruction, then: (1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then: (a) updating the at least one associated error-correction block in the stripe containing the data block to be modified; (b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified; (2) if the data block to be modified or its at least one associated error-correction block are located on the replacement storage unit, then: (a) accessing all other corresponding data blocks in the stripe containing the data block to be modified; (b) computing at least one error-correction block from the accessed blocks and the new data block; (c) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
Claim 62
Dependent Claim
79 words
The storage device of claims 43, 47, or 49, wherein at least one error-correction block contains parity information, and wherein the control program is further configured to operate the control device to perform the step of reconstructing each data block of the failed storage unit by the function of: a. accessing all other corresponding data blocks and the corresponding parity error-correction block in the corresponding stripe; b. exclusively-OR'ing all of the accessed blocks to generate a new data block.
Claim 63
Dependent Claim
96 words
The storage device of claims 44, 46, 47, or 49, wherein at least one error-correction block contains parity information, and wherein the control program is further configured to operate the control device to perform the step of updating the at least one associated error-correction block in response to receipt of a write request by the function of: a. reading the data block to be modified and the associated parity error-correction block; b. exclusively-OR'ing the parity error-correction block with the data block to be modified and the new data block to generate an updated parity error-correction block.
Claim 64
Dependent Claim
54 words
The storage device of claims 45, 46, 48, or 49, wherein the control program is further configured to operate the control device to perform the step of computing at least one error-correction block in response to receipt of a write request by the function of exclusively-OR'ing the accessed blocks and the new data block.
Claim 65
Dependent Claim
43 words
The storage device of claims 43, 44, or 46, wherein the control program is further configured to operate the control device to perform the step of reconstructing the requested data block from the accessed blocks by the function of exclusively-OR'ing the accessed blocks.
Claim 66
Dependent Claim
44 words
The storage device of claims 44 or 47, wherein the control program is further configured to operate the control device to perform the step of reconstructing the data block to be modified from the accessed blocks by the function of exclusively-OR'ing the accessed blocks.
Claim 67
Dependent Claim
87 words
The storage device of claims 43, 44, 46, wherein when the requested data block is located on the replacement storage unit, the control program is further configured to operate the control device to perform the function of: a. if the block has previously been reconstructed then: (1) accessing the requested data block directly; b. otherwise; (1) accessing all other corresponding data blocks and at least one corresponding error-correction block in the stripe containing the requested data block; (2) reconstructing the requested data block from the accessed blocks.
Claim 68
Dependent Claim
50 words
The storage device of claims 43, 47, or 49, wherein the control program is further configured to operate the control device to perform the step of reconstructing each data block of the failed storage unit for each stripe in the array only for stripes that have not previously been reconstructed.