IP Library Granted Patent US 7,162,678
Granted Patent B2
US 7,162,678 · App. 10/390,380 · Granted Jan 9, 2007

Extended error correction codes

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,162,678
App. No.
10/390,380
Granted
Jan 9, 2007
Kind
B2
Abstract

Errors in data retrieved from a storage medium are verified by retrieving a plurality of data blocks from the storage medium. A data set having data from multiple data blocks is selected, where the data set includes a plurality of rows corresponding to the data bocks and a row has data from a data block corresponding to the row. One or more error correction codes (ECCs) are retrieved from the storage medium, where the one or more ECCs correspond to the data set. A plurality of check sums are retrieved from the storage medium, where a check sum corresponds to a data block. Data blocks retrieved from the storage medium having errors are identified using the check sums corresponding to the data blocks. When the number of data blocks identified as having errors is greater than the number of ECCs for the data set, a first set of rows in the data set corresponding to the data blocks identified as having errors is selected, where the number of rows in the first set of rows is equal to the number of ECCs for the data set and less than the number of data blocks identified as having errors. Data for the first set of rows are generated using the ECCs for the data set, and the rows corresponding to the data blocks identified as having errors are verified based on the generated data for the first set of rows.

Claims (113)

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

retrieving a plurality of data blocks from the storage medium;

selecting a data set having data from multiple data blocks,

wherein the data set includes a plurality of rows corresponding to the data blocks, and

wherein a row has data from a data block corresponding to the row;

retrieving one or more error correction codes (ECCs) from the storage medium,

wherein the one or more ECCs correspond to the data set;

retrieving a plurality of check sums from the storage medium,

wherein a check sum corresponds to a data block;

identifying data blocks retrieved from the storage medium having errors using the check sums corresponding to the data blocks; and

when the number of data blocks identified as having errors is greater than the number of ECCs for the data set:

selecting a first set of rows in the data set corresponding to the data blocks identified as having errors,

wherein the number of rows in the first set of rows is equal to the number of ECCs for the data set and less than the number of data blocks identified as having errors,

generating data for the first set of rows using the ECCs for the data set, and

verifying the rows corresponding to the data blocks identified as having errors based on the generated data for the first set of rows.

2. The method of claim 1 , wherein verifying comprises:

comparing the generated data for the first set of rows to the data originally in the first set of rows; and

when all of the generated data and data originally in the first set of rows match, processing another data set having data from multiple data blocks.

3. The method of claim 1 , wherein verifying comprises:

comparing the generated data for the first set of rows to the data originally in the first set of rows; and

when none of the generated data and data originally in the first set of rows match:

selecting a second set of rows in the data set corresponding to the data blocks identified as having errors, wherein at least one row in the second set differs from the rows in the first set,

generating data for the second set of rows using the ECCs, and

verifying the rows corresponding to the data blocks identified as having errors based on the generated data for the second set of rows.

4. The method of claim 1 , wherein verifying comprises:

comparing the generated data for the first set of rows to the data originally in the first set of rows; and

when the generated data and data originally in one or more rows of the first set of rows match (matching rows) and the generated data and data originally in one or more rows of the first set of rows do not match (non-matching rows),

replacing the data originally in the non-matching rows with the generated data.

5. The method of claim 4 , further comprising:

generating check sums for the data blocks corresponding to the non-matching rows; and

determining the number of data blocks identified as having errors using the generated check sums.

6. The method of claim 5 , further comprising:

when the determined number of data blocks identified as having errors is greater than the number of ECCs for the data set, processing another data set having data from multiple data blocks.

7. The method of claim 5 , further comprising:

when the determined number of data blocks identified as having errors is not greater than the number of ECCs for the data set, correcting the data blocks using the ECCs.

8. The method of claim 1 , wherein the plurality of data blocks retrieved from the storage medium form a first logical data array having rows and columns, wherein a data block corresponds to a row in the first logical data array and the selected data set corresponds to a column in the first logical data array.

9. The method of claim 8 further comprising:

forming a second logical data array from the first logical data array, wherein the second logical data array only includes columns from the first logical data array identified as having errors, and wherein the selected data set corresponds to a column in the second logical data array.

10. The method of claim 1 , wherein the check sums are cyclic redundancy codes and the ECCs are Reed-Solomon codes.

11. The method of claim 1 , wherein the selected data set corresponds to a byte-sized portion of multiple data blocks.

12. A system of verifying errors in data retrieved from a storage medium, comprising:

a data buffer including:

a plurality of data blocks retrieved from the storage medium,

one or more error correction codes (ECCs) retrieved from the storage medium, and

a plurality of check sums retrieved from the storage medium,

wherein a check sum corresponds to a data block; and

a processor configured to:

select a data set having data from multiple data blocks in the data buffer,

wherein the data set includes a plurality of rows corresponding to the data blocks, and

wherein the one or more ECCs correspond to the data set,

identify data blocks retrieved from the storage medium having errors using the check sums corresponding to the data blocks, and

when the number of data blocks identified as having errors is greater than the number of ECCs for the data set:

select a first set of rows in the data set corresponding to the data blocks identified as having errors,

wherein the number of rows in the first set of rows is equal to the number of ECCs for the data set and less than the number of data blocks identified as having errors,

generate data for the first set of rows using the ECCs for the data set, and

verify the rows corresponding to the data blocks identified as having errors based on the generated data for the first set of rows.

13. The system of claim 12 , wherein the rows corresponding to the data blocks identified as having errors are verified by:

comparing the generated data for the first set of rows to the data originally in the first set of rows; and

when all of the generated data and data originally in the first set of rows match, processing another data set having data from multiple data blocks.

14. The system of claim 12 , the rows corresponding to the data blocks identified as having errors are verified by:

comparing the generated data for the first set of rows to the data originally in the first set of rows; and

when none of the generated data and data originally in the first set of rows match:

selecting a second set of rows in the data set corresponding to the data blocks identified as having errors, wherein at least one row in the second set differs from the rows in the first set,

generating data for the second set of rows using the ECCs, and

verifying the rows corresponding to the data blocks identified as having errors based on the generated data for the second set of rows.

15. The system of claim 12 , the rows corresponding to the data blocks identified as having errors are verified by:

comparing the generated data for the first set of rows to the data originally in the first set of rows; and

when the generated data and data originally in one or more rows of the first set of rows match (matching rows) and the generated data and data originally in one or more rows of the first set of rows do not match (non-matching rows),

replacing the data originally in the non-matching rows with the generated data.

16. The system of claim 15 , further comprising:

generating check sums for the data blocks corresponding to the non-matching rows; and

determining the number of data blocks identified as having errors using the generated check sums.

17. The system of claim 16 , further comprising:

when the determined number of data blocks identified as having errors is greater than the number of ECCs for the data set, processing another data set having data from multiple data blocks.

18. The system of claim 16 , further comprising:

when the determined number of data blocks identified as having errors is not greater than the number of ECCs for the data set, correcting the data blocks using the ECCs.

19. The system of claim 12 , wherein the data blocks in the data buffer form a logical data array having rows and columns, wherein a data block corresponds to a row in the logical data array and the selected data set corresponds to a column in the logical data array.

20. The system of claim 19 , wherein the selected data set corresponds to a byte-sized portion of multiple data blocks.

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

retrieving a plurality of data blocks from the storage medium;

selecting a data set having data from multiple data blocks,

wherein the data set includes a plurality of rows corresponding to the data blocks, and

wherein a row has data from a data block corresponding to the row;

retrieving one or more error correction codes (ECCs) from the storage medium,

wherein the one or more ECCs correspond to the data set;

retrieving a plurality of check sums from the storage medium,

wherein a check sum corresponds to a data block;

identifying data blocks retrieved from the storage medium having errors using the check sums corresponding to the data blocks; and

when the number of data blocks identified as having errors is greater than the number of ECCs for the data set:

selecting a first set of rows in the data set corresponding to the data blocks identified as having errors,

wherein the number of rows in the first set of rows is equal to the number of ECCs for the data set and less than the number of data blocks identified as having errors,

generating data for the first set of rows using the ECCs for the data set, and

verifying the rows corresponding to the data blocks identified as having errors based on the generated data for the first set of rows.

22. The computer-readable medium of claim 21 , wherein verifying comprises:

comparing the generated data for the first set of rows to the data originally in the first set of rows; and

when all of the generated data and data originally in the first set of rows match, processing another data set having data from multiple data blocks.

23. The computer-readable medium of claim 21 , wherein verifying comprises:

comparing the generated data for the first set of rows to the data originally in the first set of rows; and

when none of the generated data and data originally in the first set of rows match:

selecting a second set of rows in the data set corresponding to the data blocks identified as having errors, wherein at least one row in the second set differs from the rows in the first set,

generating data for the second set of rows using the ECCs, and

verifying the rows corresponding to the data blocks identified as having errors based on the generated data for the second set of rows.

24. The computer-readable medium of claim 21 , wherein verifying comprises:

comparing the generated data for the first set of rows to the data originally in the first set of rows; and

when the generated data and data originally in one or more rows of the first set of rows match (matching rows) and the generated data and data originally in one or more rows of the first set of rows do not match (non-matching rows),

replacing the data originally in the non-matching rows with the generated data.

25. The computer-readable medium of claim 24 , further comprising:

generating check sums for the data blocks corresponding to the non-matching rows; and

determining the number of data blocks identified as having errors using the generated check sums.

26. The computer-readable medium of claim 25 , further comprising:

when the determined number of data blocks identified as having errors is greater than the number of ECCs for the data set, processing another data set having data from multiple data blocks.

27. The computer-readable medium of claim 25 , further comprising:

when the determined number of data blocks identified as having errors is not greater than the number of ECCs for the data set, correcting the data blocks using the ECCs.

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 →
RELEASE OF SECURITY INTEREST Recorded Dec 27, 2018
From: TCW ASSET MANAGEMENT COMPANY LLC, AS AGENT
To: QUANTUM CORPORATION
Reel/Frame 047988/0642 →
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 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 Mar 14, 2003
From: SALIBA, GEORGE A.
To: QUANTUM CORPORATION
Reel/Frame 013889/0965 →