Claims Analysis
Total Claims: 19
Claim 1
Independent Claim
123 words
A system for writing data to a disk array, comprising: a cache memory coupled to the disk array, the cache memory storing one or more parity blocks associated with stripes of disk data blocks, each parity block including parity data for one or more data blocks in its stripe and an identifier identifying protected data blocks in its stripe; and write logic coupled to the cache memory and the disk array, the write logic including: means for determining whether or not a location is protected by the parity data; means for writing data to a selected location; means for computing new parity data and updating the identifier associated with the new parity data if necessary to indicate that the selected location is protected.
Claim 2
Independent Claim
123 words
A system for writing data to a disk array, comprising: a cache memory coupled to the disk array, the cache memory storing one or more parity blocks associated with stripes of disk data blocks, each parity block including parity data for one or more data blocks in its stripe and an identifier identifying protected data blocks in its stripe; and write logic coupled to the cache memory and the disk array, the write logic including: means for determining whether or not a location is protected by the parity data; means for writing data to a selected location; means for computing new parity data and updating the identifier associated with the new parity data if necessary to indicate that the selected location is protected.
Claim 3
Dependent Claim
49 words
The system according to claim 1, further comprising: means for reading from the disk array a block of data after it has been freed; and means for recomputing parity data and updating the identifier associated with the recomputed parity data to reflect the freeing of the block of data.
Claim 4
Dependent Claim
22 words
The system according to claim 2, including means for reading from the disk array a block of data as it is freed.
Claim 5
Dependent Claim
27 words
The system according to claim 2, further comprising means for determining an optimal set of blocks to read from disk so as to recompute the parity data.
Claim 6
Dependent Claim
26 words
The system according to claim 2, further comprising means for reading from the disk array a plurality of blocks of data after they have been freed.
Claim 7
Independent Claim
194 words
A method of writing new data to disk in a redundant array of inexpensive disks, comprising: storing the new data in a cache memory; computing a parity block only for in-use data blocks of a group of data blocks in the disk array; attaching to the parity block an identifier indicating which data blocks of the group of data blocks are in use; choosing a destination data block for the new data; determining whether the destination block belongs to a group of free data blocks, and if so, setting the parity block using only the new data, and writing the set parity block and the new data to disk; otherwise, determining from the identifier whether the destination block is protected by the parity block; if so, using the new data, the destination block and the parity block to compute a new parity block reflecting the new data and writing the new parity block to cache and disk; if not, computing a new parity block reflecting the new data, writing the new parity block to cache and disk and updating the identifier to indicate that the destination block is now protected by the parity block.
Claim 8
Independent Claim
194 words
A method of writing new data to disk in a redundant array of inexpensive disks, comprising: storing the new data in a cache memory; computing a parity block only for in-use data blocks of a group of data blocks in the disk array; attaching to the parity block an identifier indicating which data blocks of the group of data blocks are in use; choosing a destination data block for the new data; determining whether the destination block belongs to a group of free data blocks, and if so, setting the parity block using only the new data, and writing the set parity block and the new data to disk; otherwise, determining from the identifier whether the destination block is protected by the parity block; if so, using the new data, the destination block and the parity block to compute a new parity block reflecting the new data and writing the new parity block to cache and disk; if not, computing a new parity block reflecting the new data, writing the new parity block to cache and disk and updating the identifier to indicate that the destination block is now protected by the parity block.
Claim 9
Dependent Claim
45 words
The method of claim 6, wherein if the destination block is protected by the parity block and if the contents of the destination block are not stored in cache, reading the contents of the destination block from disk prior to computing the new parity block.
Claim 10
Dependent Claim
30 words
The method of claim 7, wherein the parity block and each of the blocks in the group of data blocks are stored on a different disk in the disk array.
Claim 11
Dependent Claim
37 words
The method according to claim 6, wherein if the parity block is not stored in cache, reading the parity block and the identifier from disk prior to the step of determining whether the destination block is protected.
Claim 12
Dependent Claim
22 words
The method of claim 6, wherein the new parity block is computed by XORing the new data block and the parity block.
Claim 13
Independent Claim
97 words
A method of accounting for unused data blocks in a redundant array of inexpensive disks, comprising: computing a parity block for in-use data blocks in a group of data blocks stored on the disks; attaching to the parity block an identifier indicating which blocks of the group are the in-use data blocks; when a block is to be reclassified from in-use to unused, computing a new parity block using the parity block and the data in the block to be reclassified, and updating the identifier to indicate that the block to be reclassified is not in use.
Claim 14
Independent Claim
97 words
A method of accounting for unused data blocks in a redundant array of inexpensive disks, comprising: computing a parity block for in-use data blocks in a group of data blocks stored on the disks; attaching to the parity block an identifier indicating which blocks of the group are the in-use data blocks; when a block is to be reclassified from in-use to unused, computing a new parity block using the parity block and the data in the block to be reclassified, and updating the identifier to indicate that the block to be reclassified is not in use.
Claim 15
Dependent Claim
47 words
The method according to claim 11, wherein the array has an associated cache memory, and wherein if the parity block and identifier are not stored in the cache memory, reading the parity block and identifier from disk prior to the step of computing a new parity block.
Claim 16
Dependent Claim
48 words
The method according to claim 11, wherein the array has an associated cache memory, and if the data block to be reclassified is not stored in the cache memory, reading the data block to be reclassified from disk prior to the step of computing a new parity block.
Claim 17
Dependent Claim
60 words
The method according to claim 11, wherein the identifier comprises a number of bits equal to the number of data blocks in the group, each bit corresponding to a different one of the data blocks in the group, and wherein the step of updating the identifier comprises changing the state of the bit corresponding to the block to be reclassified.
Claim 18
Dependent Claim
28 words
The method according to claim 11, wherein the parity block and each of the data blocks in the group are stored on a different disk in the array.
Claim 19
Dependent Claim
29 words
The method according to claim 11, wherein the step of computing a new parity block comprises XORing the parity block and the data in the block to be reclassified.