IP Library › Granted Patent US 8,601,348
Granted Patent B2
US 8,601,348 · App. 13/742,338 · Granted Dec 3, 2013

Error checking addressable blocks in storage

Inventors: James L. Hafner (San Jose, CA); David R. Kahler (Tucson, AZ); Robert A. Kubo (Escondido, CA); David F. Mannenbach (Tucson, AZ); Karl A. Nielsen (Tucson, AZ); James A. O'Connor (Poughkeepsie, NY); Richard B. Stelmach (Tucson, AZ); Krishnakumar R. Surugucchi (San Jose, CA)
Assignee: International Business Machines Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,601,348
App. No.
13/742,338
Granted
Dec 3, 2013
Kind
B2
Abstract

Provided are a method, system, and article of manufacture for error checking addressable blocks in storage. Addressable blocks of data are stored in a storage in stripes, wherein each stripe includes a plurality of data blocks for one of the addressable blocks and at least one checksum block including checksum data for the addressable block. A write request is received to modify data in one of the addressable blocks. The write and updating the checksum are performed in the stripe having the modified addressable block. An indication is made to perform an error checking operation on the stripe for the modified addressable block in response to the write request, wherein the error checking operation reads the data blocks and the checksum in the stripe to determine if the checksum data is accurate. An error handling operation is initiated in response to determining that the checksum data is not accurate.

Claims (53)

1. An article of manufacture comprising a non-transitory computer readable storage medium having code executed to cause operations with respect to a storage device and a memory and to cause operations comprising:

storing addressable blocks of data in the storage device in stripes, wherein each stripe includes a plurality of data blocks for one of the addressable blocks and at least one checksum block including checksum data derived from the data blocks for the addressable block;

receiving a write request to modify data in one of the addressable blocks in the storage device;

performing a write for the write request to modify one of the addressable blocks to generate a modified addressable block and updating the checksum data in the stripe having the modified addressable block to generate an updated checksum, wherein modified data in the modified addressable block and the updated checksum data resulting from the write are destaged to the storage device;

indicating in a recently modified list in the memory the modified addressable block;

after the write is performed, performing an error checking operation on a plurality of the stripes having modified addressable blocks indicated in the recently modified list by reading the data blocks and the checksum data in the plurality of the stripes having the modified addressable blocks to determine if the checksum data is accurate; and

initiating an error handling operation in response to determining that the checksum data is not accurate.

2. The article of manufacture of claim 1 , wherein the operations further comprise:

recalculating the checksum data in the stripe as part of the error checking operation or a write during which the at least one checksum block is recalculated using all the data blocks in the stripe; and

removing the modified addressable block indicated in the recently modified list in response to recalculating the checksum data using all the data blocks in the stripe for the modified addressable block.

3. The article of manufacture of claim 1 , wherein the operations further comprise:

initiating a background operation to read the data blocks and the at least one checksum block in each stripe for a plurality of addressable blocks to determine if the checksum data is accurate, wherein the plurality of addressable blocks on which to perform the background operation includes modified and unmodified data.

4. The article of manufacture of claim 1 , wherein the operations further comprise:

initiating a background operation to determine if the checksum data is accurate.

5. The article of manufacture of claim 4 , wherein the operations further comprise:

alternating between processing m stripes as part of the background operation and n stripes as part of the error checking operation processing the modified addressable blocks indicated in the recently modified list, wherein m is greater than n.

6. The article of manufacture of claim 1 , wherein the data and checksum blocks in one stripe are written to different storage devices according to a Redundant Array of Independent Disk (RAID) algorithm.

7. A system in communication with a storage device, comprising:

a memory;

storage manager code enabled to cause operations, the operations comprising:

storing addressable blocks of data in the storage device in stripes, wherein each stripe includes a plurality of data blocks for one of the addressable blocks and at least one checksum block including checksum data derived from the data blocks for the addressable block;

receiving a write request to modify data in one of the addressable blocks in the storage device;

performing a write for the write request to modify one of the addressable blocks to generate a modified addressable block and updating the checksum data in the stripe having the modified addressable block to generate an updated checksum, wherein modified data in the modified addressable block and the updated checksum data resulting from the write are destaged to the storage device;

indicating in a recently modified list in the memory the modified addressable block;

after the write is performed, performing an error checking operation on a plurality of the stripes having modified addressable blocks indicated in the recently modified list by reading the data blocks and the checksum data in the plurality of the stripes having the modified addressable blocks to determine if the checksum data is accurate; and

initiating an error handling operation in response to determining that the checksum data is not accurate.

8. The system of claim 7 , wherein the operations further comprise:

recalculating the checksum data in the stripe as part of the error checking operation or a write during which the at least one checksum block is recalculated using all the data blocks in the stripe; and

removing the modified addressable block indicated in the recently modified list in response to recalculating the checksum data using all the data blocks in the stripe for the modified addressable block.

9. The system of claim 7 , wherein the operations further comprise:

initiating a background operation to read the data blocks and the at least one checksum block in each stripe for a plurality of addressable blocks to determine if the checksum data is accurate, wherein the plurality of addressable blocks on which to perform the background operation includes modified and unmodified data.

10. The system of claim 7 , wherein the operations further comprise:

initiating a background operation to determine if the checksum data is accurate.

11. The system of claim 10 , wherein the operations further comprise:

alternating between processing m stripes as part of the background operation and n stripes as part of the error checking operation processing the modified addressable blocks indicated in the recently modified list, wherein m is greater than n.

12. The system of claim 7 , wherein the data and checksum blocks in one stripe are written to different storage devices according to a Redundant Array of Independent Disk (RAID) algorithm.

13. A method, comprising:

storing addressable blocks of data in a storage device in stripes, wherein each stripe includes a plurality of data blocks for one of the addressable blocks and at least one checksum block including checksum data derived from the data blocks for the addressable block;

receiving a write request to modify data in one of the addressable blocks in the storage device;

performing a write for the write request to modify one of the addressable blocks to generate a modified addressable block and updating the checksum data in the stripe having the modified addressable block to generate an updated checksum, wherein modified data in the modified addressable block and the updated checksum data resulting from the write are destaged to the storage device;

indicating in a recently modified list in the memory the modified addressable block;

after the write is performed, performing an error checking operation on a plurality of the stripes having modified addressable blocks indicated in the recently modified list by reading the data blocks and the checksum data in the plurality of the stripes having the modified addressable blocks to determine if the checksum data is accurate; and

initiating an error handling operation in response to determining that the checksum data is not accurate.

14. The method of claim 13 , further comprising:

recalculating the checksum data in the stripe as part of the error checking operation or a write during which the at least one checksum block is recalculated using all the data blocks in the stripe; and

removing the modified addressable block indicated in the recently modified list in response to recalculating the checksum data using all the data blocks in the stripe.

15. The method of claim 13 , further comprising

initiating a background operation to read the data blocks and the at least one checksum block in each stripe for a plurality of addressable blocks to determine if the checksum data is accurate, wherein the plurality of addressable blocks on which to perform the background operation includes modified and unmodified data.

16. The method of claim 13 , further comprising:

initiating a background operation to determine if the checksum data is accurate.

17. The method of claim 16 , further comprising:

alternating between processing m stripes as part of the background operation and n stripes as part of the error checking operation processing the modified addressable blocks indicated in the recently modified list, wherein m is greater than n.

18. The method of claim 13 , wherein the data and checksum blocks in one stripe are written to different storage devices according to a Redundant Array of Independent Disk (RAID) algorithm.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded May 12, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: GLOBALFOUNDRIES U.S. INC.
Reel/Frame 056987/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 5, 2015
From: GLOBALFOUNDRIES U.S. 2 LLC; GLOBALFOUNDRIES U.S. INC.
To: GLOBALFOUNDRIES INC.
Reel/Frame 036779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 3, 2015
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: GLOBALFOUNDRIES U.S. 2 LLC
Reel/Frame 036550/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2013
From: HAFNER, JAMES L.; KAHLER, DAVID R.; KUBO, ROBERT A.; MANNENBACH, DAVID F.; NIELSEN, KARL A.; OCONNOR, JAMES A.; STELMACH, RICHARD B.; SURUGUCCHI, KRISHNAKUMAR R.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 030469/0428 →
Continuity (2)
Continuation 11734786 · Apr 12, 2007
Related Publication 20130132801A1 · May 23, 2013