Claims Analysis
Total Claims: 15
Claim 1
Independent Claim
106 words
A method for writing information to a stripe on an array of independent disks, the stripe comprising a series of blocks spanning the disks, the method comprising: determining whether data has been written to the stripe in a current pass; if data has been written to the stripe, determining a parity value for the stripe assuming the information is appended to the data; caching the parity value outside the disk array, only if appending the information to the data would not complete the stripe; appending the information to the date; and updating a parity block on the stripe each time information is appended to the stripe.
Claim 2
Independent Claim
106 words
A method for writing information to a stripe on an array of independent disks, the stripe comprising a series of blocks spanning the disks, the method comprising: determining whether data has been written to the stripe in a current pass; if data has been written to the stripe, determining a parity value for the stripe assuming the information is appended to the data; caching the parity value outside the disk array, only if appending the information to the data would not complete the stripe; appending the information to the date; and updating a parity block on the stripe each time information is appended to the stripe.
Claim 3
Dependent Claim
63 words
The method of claim 1 further comprising: if no data has been written to the stripe on a current pass, and the information does not comprise a full stripe, zeroing the remaining blocks of the information to form a full stripe; determining a parity value for the information; and writing the information with the zeroed blocks and the parity value to the stripe.
Claim 4
Dependent Claim
59 words
The method of claim 1 wherein the step of updating the parity block comprises: retrieving the parity value stored in the cache during a previous operation to the stripe; determining a new parity value based on the cached parity value and the information; and replacing the value of the parity block on the stripe with the new parity value.
Claim 5
Dependent Claim
29 words
The method of claim 3 wherein calculating the new parity value comprises taking the exclusive OR of the blocks of information with the parity value retrieved from the cache.
Claim 6
Dependent Claim
41 words
The method of claim 1, further comprising: zeroing the remainder of a last page of the information, if a last page of the information is not complete, where a page comprises a smallest input/output unit actually employed by the disk array.
Claim 7
Dependent Claim
47 words
The method of claim 1, further comprising: recording the amount of information stored in a last page of information in a page header, if a last page of the information is not complete, where a page comprises a smallest input/output unit actually employed by the disk array.
Claim 8
Dependent Claim
28 words
The method of claim 6, wherein updating the parity block comprises calculating a parity value of the information, excluding the information in an unused portion of the page.
Claim 9
Dependent Claim
41 words
The method of claim 1, further comprising: placing a stamp in each page of the information, with each successive page having a stamp greater than the previous page, a page comprising a smallest input/output unit actually employed by the disk array.
Claim 10
Dependent Claim
77 words
The method of claim 8, further comprising: recovering a lost block on one disk after the disk experiences a failure, wherein recovering includes: reading a stripe of information from the disks; examining the stamps in each page to find unused pages; determining a parity value of the stripe based only on used pages; comparing the parity value of the stripe to a parity value stored in the stripe; and regenerating the lost block based on the comparison.
Claim 11
Dependent Claim
41 words
The method of claim 9 wherein the step of examining the stamps comprises finding a page whose stamp does not exceed the stamp of a previous page by one, and determining that all the pages succeeding the previous page are unused.
Claim 12
Independent Claim
176 words
A method for writing information to a stripe on an array of independent disks, the stripe comprising a series of blocks spanning the disks, the method comprising: determining whether data has been written to the stripe in a current pass; if the stripe has not been written to in the current pass, calculating a parity value for the stripe; caching the parity value, only if the information does not span a full stripe; adding zeroes to the information to form a full stripe; writing the information, including the zeroes, and the parity value to the stripe, one block of the information being stored on each disk; if the stripe has been written to in the current pass, retrieving the parity value cached in a previous write operation; calculating a new parity value based on the information and the cached parity value; caching the new parity value only if appending the information would not complete the stripe; updating a parity block on the stripe based on the new parity value; and appending the information to the stripe.
Claim 13
Independent Claim
176 words
A method for writing information to a stripe on an array of independent disks, the stripe comprising a series of blocks spanning the disks, the method comprising: determining whether data has been written to the stripe in a current pass; if the stripe has not been written to in the current pass, calculating a parity value for the stripe; caching the parity value, only if the information does not span a full stripe; adding zeroes to the information to form a full stripe; writing the information, including the zeroes, and the parity value to the stripe, one block of the information being stored on each disk; if the stripe has been written to in the current pass, retrieving the parity value cached in a previous write operation; calculating a new parity value based on the information and the cached parity value; caching the new parity value only if appending the information would not complete the stripe; updating a parity block on the stripe based on the new parity value; and appending the information to the stripe.
Claim 14
Independent Claim
190 words
A method for writing information to a stripe on an array of independent disks, the stripe comprising a series of blocks spanning the disks, the method comprising: dividing the information into pages, each page being a smallest input/output unit for a disk in the array, and placing a monotonically increasing stamp in each page; determining whether the stripe has been written to in a current pass; if the stripe has not been written to in the current pass, calculating a parity value for the information; caching the parity value if the information does not span the stripe; writing the information and the parity value to the stripe, one block of the information being stored on each disk; if the stripe has been written to in the current pass, retrieving the parity value cached in a previous write operation; calculating a new parity value based on the information and the cached parity value; caching the new parity value only if appending the information to the stripe would not complete the stripe; updating a parity block on the stripe based on the new parity value; and appending the information to the stripe.
Claim 15
Independent Claim
190 words
A method for writing information to a stripe on an array of independent disks, the stripe comprising a series of blocks spanning the disks, the method comprising: dividing the information into pages, each page being a smallest input/output unit for a disk in the array, and placing a monotonically increasing stamp in each page; determining whether the stripe has been written to in a current pass; if the stripe has not been written to in the current pass, calculating a parity value for the information; caching the parity value if the information does not span the stripe; writing the information and the parity value to the stripe, one block of the information being stored on each disk; if the stripe has been written to in the current pass, retrieving the parity value cached in a previous write operation; calculating a new parity value based on the information and the cached parity value; caching the new parity value only if appending the information to the stripe would not complete the stripe; updating a parity block on the stripe based on the new parity value; and appending the information to the stripe.