IP Library Granted Patent US 7,228,467
Granted Patent B2
US 7,228,467 · App. 10/688,027 · Granted Jun 5, 2007

Correcting data having more data blocks with errors than redundancy blocks

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 7,228,467
App. No.
10/688,027
Granted
Jun 5, 2007
Kind
B2
Abstract

Errors in data retrieved from a storage medium are corrected by retrieving a plurality of data blocks from the storage medium. A plurality of redundancy blocks associated with the plurality of data blocks are also retrieved from the storage medium. The number of data blocks with errors from the plurality of data blocks retrieved from the storage medium is determined. When the number of data blocks with errors exceeds the number of redundancy blocks, the data blocks are corrected in data segments, where a data segment includes data from a portion of each of the plurality of data blocks retrieved from the storage medium.

Claims (103)

1. A method of correcting errors in data retrieved from a storage medium, comprising:

retrieving a plurality of data blocks from the storage medium;

retrieving a plurality of redundancy blocks associated with the plurality of data blocks from the storage medium;

determining a number of data blocks with errors from the plurality of data blocks retrieved from the storage medium;

determining if the number of data blocks with errors exceeds a number of redundancy blocks retrieved from the storage medium; and

when the number of data blocks with errors exceeds the number of redundancy blocks, correcting the data blocks in data segments, wherein a data segment includes data from a portion of each of the plurality of data blocks retrieved from the storage medium.

2. The method of claim 1 , further comprising:

when the number of data blocks with errors does not exceed the number of redundancy blocks, correcting the data blocks using the redundancy blocks.

3. The method of claim 1 , wherein determining a number of data blocks with errors comprises:

retrieving a check sum associated with a retrieved data block from the storage medium;

generating a new check sum based on the retrieved data block; and

comparing the retrieved check sum with the new check sum to determine if the retrieved data block has errors.

4. The method of claim 3 , wherein the check sum is a cyclic redundancy code.

5. The method of claim 1 , wherein correcting the data blocks in data segments comprises:

for a data segment,

a) obtaining syndromes;

b) generating an error location polynomial based on the obtained syndromes;

c) determining an error location within the data segment using the error location polynomial;

d) generating an error value based on the determined error location within the data segment; and

e) correcting data at the determined error location within the data segment using the generated error value.

6. The method of claim 5 , wherein a) further comprising:

generating one or more new redundancy blocks based on the retrieved data blocks;

generating one or more residual blocks based on the one or more new redundancy blocks and the retrieved redundancy blocks; and

for a data segment, generating syndromes based on the one or more residual blocks.

7. The method of claim 6 , further comprising:

when the residual blocks for a data segment are zero,

determining that there are no errors in the data segment; and

repeating a) to e) for another data segment.

8. The method of claim 5 , wherein b) comprises:

determining if there are less than two errors in the data segment based on the obtained syndromes and coefficients of the error location polynomial.

9. The method of claim 8 , wherein when there are less than two errors in the data segment, determining a first error location within the data segment based on two of the obtained syndromes.

10. The method of claim 9 , further comprising:

determining a second error location within the data segment based on two of the obtained syndromes, wherein at least one of the two syndromes used to determine the second error location is different than at least one of the two syndromes used to determine the first error location;, and wherein the first error location within the data segment is verified if the first and second error locations are the same.

11. The method of claim 10 , further comprising:

determining a third error location within the data segment based on two of the obtained syndromes, wherein at least one of the two syndromes used to determine the third error location is different than at least one of the two syndromes used to determine the first and the second error locations, and wherein the first error location within the data segment is verified if the first, second, and third error locations are the same.

12. The method of claim 9 , wherein the error value is one of the syndromes.

13. The method of claim 8 , wherein when there are two errors in the data segment, solving the error location polynomial using a table.

14. The method of claim 8 , wherein when there are two errors in the data segment, solving the error location polynomial using an exhaustive search to determine two error locations within the data segment with errors.

15. The method of claim 14 , wherein the exhaustive search is performed at locations in the data segment corresponding to data blocks indicated by check sums as having errors.

16. The method of claim 14 , wherein when more than two locations in the data segment are found to have error by performing the exhaustive search, determining that the data segment is not correctable.

17. The method of claim 14 , wherein error values are generated based on the syndromes and the error locations.

18. The method of claim 5 , wherein e) comprises:

multiplying the data at the determined error location with the generated error value to obtain a corrected data for the determined error location.

19. The method of claim 5 , further comprising:

repeating a) to e) for another data segment.

20. A system of correcting errors in data retrieved from a storage medium, comprising:

a data buffer including:

a plurality of data blocks retrieved from the storage medium;

a plurality of redundancy blocks associated with the plurality of data blocks retrieved from the storage medium; and

a processor configured to:

determine a number of data blocks with errors from the plurality of data blocks retrieved from the storage medium;

determine if the number of data blocks with errors exceeds a number of redundancy blocks retrieved from the storage medium; and

when the number of data blocks with errors exceeds the number of redundancy blocks, correct the data blocks in data segments, wherein a data segment includes data from a portion of each of the plurality of data blocks retrieved from the storage medium.

21. The system of claim 20 , further comprising:

when the number of data blocks with errors does not exceed the number of redundancy blocks, correcting the data blocks using the redundancy blocks.

22. The system of claim 20 , wherein the data blocks are corrected in data segments by:

for a data segment,

a) obtaining syndromes;

b) generating an error location polynomial based on the obtained syndromes;

c) determining an error location within the data segment using the error location polynomial;

d) generating an error value based on the determined error location within the data segment; and

e) correcting data at the determined error location within the data segment using the generated error value.

23. The system of claim 22 , wherein b) comprises:

determining if there are less than two errors in the data segment based on the obtained syndromes and coefficients of the error location polynomial.

24. The system of claim 23 , wherein when there are less than two errors in the data segment, determining a first error location within the data segment based on two of the obtained syndromes.

25. The system of claim 24 , wherein the error value is one of the syndromes.

26. The system of claim 23 , wherein when there are two errors in the data segment, solving the error location polynomial using a table.

27. The system of claim 23 , wherein when there are two errors in the data segment, solving the error location polynomial using an exhaustive search to determine two error locations within the data segment with errors.

28. The system of claim 27 , wherein the exhaustive search is performed at locations in the data segment corresponding to data blocks indicated by check sums as having errors.

29. The system of claim 27 , wherein when more than two locations in the data segment are found to have error by performing the exhaustive search, determining that the data segment is not correctable.

30. The system of claim 27 , wherein error values are generated based on the syndromes and the error locations.

31. The system of claim 22 , wherein e) comprises:

multiplying the data at the determined error location with the generated error value to obtain a corrected data for the determined error location.

32. The system of claim 22 , further comprising:

repeating a) to e) for another data segment.

33. A computer-readable storage medium containing computer executable instructions for causing a computer to correct errors in data retrieved from a storage medium, comprising instructions for:

retrieving a plurality of data blocks from the storage medium;

retrieving a plurality of redundancy blocks associated with the plurality of data blocks from the storage medium;

determining a number of data blocks with errors from the plurality of data blocks retrieved from the storage medium;

determining if the number of data blocks with errors exceeds a number of redundancy blocks retrieved from the storage medium; and

when the number of data blocks with errors exceeds the number of redundancy blocks, correcting the data blocks in data segments, wherein a data segment includes data from a portion of each of the plurality of data blocks retrieved from the storage medium.

34. The computer-readable storage medium of claim 33 , further comprising:

when the number of data blocks with errors does not exceed the number of redundancy blocks, correcting the data blocks using the redundancy blocks.

35. The computer-readable storage medium of claim 33 , wherein correcting the data blocks in data segments comprises:

for a data segment,

a) obtaining syndromes;

b) generating an error location polynomial based on the obtained syndromes;

c) determining an error location within the data segment using the error location polynomial;

d) generating an error value based on the determined error location within the data segment; and

e) correcting data at the determined error location within the data segment using the generated error value.

36. The computer-readable storage medium of claim 35 , wherein b) comprises:

determining if there are less than two errors in the data segment based on the obtained syndromes and coefficients of the error location polynomial.

37. The computer-readable storage medium of claim 36 , wherein when there are less than two errors in the data segment, determining a first error location within the data segment based on two of the obtained syndromes.

38. The computer-readable storage medium of claim 37 , wherein the error value is one of the syndromes.

39. The computer-readable storage medium of claim 36 , wherein when there are two errors in the data segment, solving the error location polynomial using a table.

40. The computer-readable storage medium of claim 36 , wherein when there are two errors in the data segment, solving the error location polynomial using an exhaustive search to determine two error locations within the data segment with errors.

41. The computer-readable storage medium of claim 40 , wherein the exhaustive search is performed at locations in the data segment corresponding to data blocks indicated by check sums as having errors.

42. The computer-readable storage medium of claim 40 , wherein when more than two locations in the data segment are found to have error by performing the exhaustive search, determining that the data segment is not correctable.

43. The computer-readable storage medium of claim 40 , wherein error values are generated based on the syndromes and the error locations.

44. The computer-readable storage medium of claim 35 , wherein e) comprises:

multiplying the data at the determined error location with the generated error value to obtain a corrected data for the determined error location.

45. The computer-readable storage medium of claim 35 , further comprising:

repeating a) to e) for another data segment.

Assignments (20)
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Dec 18, 2025
From: QUANTUM CORPORATION
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 074024/0084 →
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT AT REEL/FRAME NO. 40473/0378 Recorded Oct 8, 2025
From: PNC BANK, NATIONAL ASSOCIATION, AS AGENT
To: QUANTUM CORPORATION
Reel/Frame 073061/0454 →
TERMINATION AND RELEASE OF AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT AT REEL/FRAME NO. 48029/0525 Recorded Aug 19, 2025
From: PNC BANK, NATIONAL ASSOCIATION, AS AGENT
To: QUANTUM CORPORATION
Reel/Frame 072542/0594 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 24, 2025
From: BLUE TORCH FINANCE LLC, AS AGENT FOR THE SECURED PARTIES
To: ALTER DOMUS (US) LLC, AS AGENT FOR THE SECURED PARTIES
Reel/Frame 071019/0850 →
RELEASE OF SECURITY INTEREST Recorded Aug 10, 2021
From: U.S. BANK NATIONAL ASSOCIATION
To: QUANTUM CORPORATION; QUANTUM LTO HOLDINGS, LLC
Reel/Frame 057142/0252 →
SECURITY INTEREST Recorded Aug 5, 2021
From: QUANTUM CORPORATION; QUANTUM LTO HOLDINGS, LLC
To: BLUE TORCH FINANCE LLC, AS AGENT
Reel/Frame 057107/0001 →
SECURITY INTEREST Recorded Jan 8, 2019
From: QUANTUM CORPORATION
To: PNC BANK, NATIONAL ASSOCIATION
Reel/Frame 048029/0525 →
SECURITY INTEREST Recorded Dec 27, 2018
From: QUANTUM CORPORATION, AS GRANTOR; QUANTUM LTO HOLDINGS, LLC, AS GRANTOR
To: U.S. BANK NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 049153/0518 →
RELEASE OF SECURITY INTEREST Recorded Dec 27, 2018
From: TCW ASSET MANAGEMENT COMPANY LLC, AS AGENT
To: QUANTUM CORPORATION
Reel/Frame 047988/0642 →
RELEASE OF SECURITY INTEREST Recorded Oct 25, 2016
From: WELLS FARGO CAPITAL FINANCE, LLC, AS AGENT
To: QUANTUM CORPORATION
Reel/Frame 040474/0079 →
SECURITY INTEREST Recorded Oct 25, 2016
From: QUANTUM CORPORATION
To: PNC BANK, NATIONAL ASSOCIATION
Reel/Frame 040473/0378 →
SECURITY INTEREST Recorded Oct 21, 2016
From: QUANTUM CORPORATION
To: TCW ASSET MANAGEMENT COMPANY LLC, AS AGENT
Reel/Frame 040451/0183 →
SECURITY AGREEMENT Recorded Mar 31, 2012
From: QUANTUM CORPORATION
To: WELLS FARGO CAPITAL FINANCE, LLC, AS AGENT
Reel/Frame 027967/0914 →
RELEASE BY SECURED PARTY Recorded Mar 31, 2012
From: CREDIT SUISSE, CAYMAN ISLANDS BRANCH (FORMERLY KNOWN AS CREDIT SUISSE), AS COLLATERAL AGENT
To: QUANTUM CORPORATION; ADVANCED DIGITAL INFORMATION CORPORATION; CERTANCE HOLDINGS CORPORATION; CERTANCE (US) HOLDINGS, INC.; CERTANCE, LLC; QUANTUM INTERNATIONAL, INC.
Reel/Frame 027968/0007 →
SECURITY AGREEMENT Recorded Jul 26, 2007
From: QUANTUM CORPORATION; ADVANCED DIGITAL INFORMATION CORPORATION; CERTANCE HOLDINGS CORPORATION; CERTANCE (US) HOLDINGS, INC.; CERTANCE LLC; QUANTUM INTERNATIONAL, INC.
To: CREDIT SUISSE
Reel/Frame 019605/0159 →
RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT AT REEL 018307 FRAME 0001 Recorded Jul 18, 2007
From: KEYBANK NATIONAL ASSOCIATION
To: QUANTUM CORPORATION
Reel/Frame 019562/0858 →
TERMINATION OF SECURITY INTEREST IN PATENTS REEL 018269 FRAME 0005 AND REEL 018268 FRAME 0475 Recorded Jul 13, 2007
From: KEY BANK, NATIONAL ASSOCIATION
To: QUANTUM CORPORATION
Reel/Frame 019550/0659 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT (FIRST LIEN) Recorded Sep 26, 2006
From: QUANTUM CORPORATION
To: KEYBANK NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
Reel/Frame 018307/0001 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT (SECOND LIEN) Recorded Sep 18, 2006
From: QUANTUM CORPORATION
To: KEYBANK NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
Reel/Frame 018269/0005 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 17, 2003
From: BALL, MATT
To: QUANTUM CORPORATION
Reel/Frame 014627/0986 →