×

Method and apparatus for preserving data integrity in a multiple disk raid organized storage system

  • US 5,504,858 A
  • Filed: 02/08/1995
  • Issued: 04/02/1996
  • Est. Priority Date: 06/29/1993
  • Status: Expired due to Term
First Claim
Patent Images

1. A method of operating an array of storage devices, comprising the steps of:

  • receiving a write request from a processor coupled to said array of storage devices, said write request containing data to be stored on said array of storage devices;

    identifying, in response to said write request, a metadata unit data structure (MDU) stored on said array of storage devices to receive said data, said MDU containing a parity block and a set of data blocks, both blocks comprising of a plurality of bits, the bits of said parity block reflecting the parity of a set of corresponding bits from said data blocks when said parity block and said data blocks are consistent with respect to each other, said MDU also including parity metadata (PMD) providing information about whether said parity block and said data blocks are consistent;

    setting said PMD to a value indicating that said parity block and said data blocks may be inconsistent;

    writing said data to one of said data blocks after said PMD has been set to said inconsistency-indicating value;

    updating said parity block to reflect the new parity of said data blocks upon the writing of said data to said one data block, said parity block being updated after said PMD has been set to said inconsistency-indicating value and either before or after said data has been written to said one data block;

    determining whether the writing of said data and the updating of said parity block have both successfully completed;

    if the writing of said data and the updating of said parity block have both successfully completed, setting said PMD to a value indicating that said parity block and said data blocks are consistent;

    if the writing of said data and the updating of said parity block have not both successfully completed, leaving said PMD with said inconsistency-indicating value;

    receiving, after said MDU has been updated in the preceding manner, a read request from said processor for one of said data blocks in said MDU;

    determining whether the data block to be read is available;

    if the data block to be read is available, reading the data block and returning it to said processor;

    if the data block to be read is not available, carrying out the following steps;

    (a) reading said PMD in said MDU to determine whether said parity block and said data blocks are consistent;

    (b) if said PMD in said MDU indicates that said parity block and said data blocks are consistent, carrying out the following steps;

    (i) regenerating the unavailable data block from said parity block and data blocks other than the unavailable data block in said MDU; and

    (ii) returning the regenerated data block to said processor; and

    (c) if said PMD in said MDU indicates that said parity block and said data blocks may be inconsistent, refraining from regenerating the unavailable data block from said parity block and said other data blocks in said MDU.

View all claims
  • 2 Assignments
Timeline View
Assignment View
    ×
    ×