Patent ID: 8751862

Claim:
A method for performing a background initialization fast rebuild operation on a Redundant Array of Inexpensive Disks (RAID) system comprising: providing the RAID system with a virtual disk portion and a disk metadata portion, the disk metadata portion storing a fast rebuild operation indication to indicate whether the RAID system supports a fast rebuild operation and a virtual disk consistent indication to indicate whether the virtual disk is consistent; providing each block within the RAID system with a user data portion and a block information portion, the block information portion including a valid block data indication; setting the virtual disk consistent indication to false; determining whether a block has valid data; indicating that the block has valid data via the valid block data indication; rebuilding only blocks that contain valid data after a disk drive failure based upon the fast rebuild operation indication and the valid block data indications; and, after all blocks, containing valid data have been rebuilt, setting the virtual disk consistent indication to true; and wherein the fast rebuild operation comprises determining, for every stripe in the virtual disk portion, whether the virtual disk consistent indication value is TRUE; determining whether the RAID system is a parity based RAID system if the virtual disk consistent value is TRUE; determining whether a stripe in the virtual disk portion includes a corresponding parity strip if the RAID system is a parity based RAID system, if the stripe does include the corresponding parity strip, then reading strip data of the stripe, if the stripe does not include the corresponding parity strip, then reading all strips in the stripe; if the RAID system is not a parity based RAID system, then reading all strips in the stripe, after all strips in the stripe are read, determining whether the block valid data detected interrupt is present; if the block valid data detected interrupt is present, then rebuilding this stripe and setting the block valid data value active for the rebuild data, if the block valid data detected interrupt is not present, then this stripe does not need to be rebuilt; determining whether all stripes have completed the fast rebuild operation, if all stripes have completed, then completing the rebuild operation.