Data set recovery by codeword overlay
First Claim
1. A method of recovering data written onto a data storage mediun as a plurality of encoded data fragments said method comprising the steps of:
- performing a first read operation to read at least one encoded data fragment of said plurality of encoded data fragments from said data storage medium;
storing a first status data indicating whether said at least one data fragment has been correctly read;
if said at least one data fragment is correctly read, writing said at least one read data fragment to a buffer memory;
attempting to decode said at least one encoded data fragment in said buffer memory;
if said attempted decoding is unsuccessful, performing a second read operation resulting in re-reading said at least one encoded data fragment from said data storage medium;
attempting to decode said re-read encoded data fragment; and
if said re-read data fragment has fewer bytes in error than said at least one encoded data fragment, overwriting said at least one encoded data fragment with said tread encoded data fragment.
3 Assignments
0 Petitions
Accused Products
Abstract
A method for recovering user data from a host device stored on a data storage medium where a said data may become corrupted during a read operation comprises: performing a read operation to read at least one encoded data fragment of said plurality of encoded data fragments from said data storage medium; storing status data indicating whether said at least one data fragment was correctly read; writing said read at least one data fragment to a buffer memory; attempting to decode said at least one encoded data fragment in said buffer memory wherein if said attempted decoding is unsuccessful then said method further comprises the steps of: re-reading incorrectly read encoded data fragments from said data storage medium; and attempting to decode said encoded data fragments located in said buffer memory.
-
Citations
34 Claims
-
1. A method of recovering data written onto a data storage mediun as a plurality of encoded data fragments said method comprising the steps of:
-
performing a first read operation to read at least one encoded data fragment of said plurality of encoded data fragments from said data storage medium;
storing a first status data indicating whether said at least one data fragment has been correctly read;
if said at least one data fragment is correctly read, writing said at least one read data fragment to a buffer memory;
attempting to decode said at least one encoded data fragment in said buffer memory;
if said attempted decoding is unsuccessful, performing a second read operation resulting in re-reading said at least one encoded data fragment from said data storage medium;
attempting to decode said re-read encoded data fragment; and
if said re-read data fragment has fewer bytes in error than said at least one encoded data fragment, overwriting said at least one encoded data fragment with said tread encoded data fragment. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 30, 31)
indicates that a C1 codeword pair has been read; and
identifies a number of corrupted bytes of data corrected by a C1 decoding algorithm.
-
-
4. The method as claimed in claim 1, wherein said step of re-reading said at least one incorrectly read encoded data fragment comprises:
-
repositioning a read head at one end of a data set containing at least one incorrectly read encoded data fragment to be re-read; and
re-reading said data set by traversing said read head between first and second ends of said data set.
-
-
5. The method as claimed in claim 1, further comprising the step of:
using redundancy coding data in said at least one data fragment to confirm that a header field data has been correctly read during a said read operation.
-
6. The method as claimed in claim 1, further comprising the steps of:
-
generating a second status data indicating whether said at least one data fragment is correctly read during said second read operation;
comparing said second status data with said first status data to determine whether the re-read said at least one data fragment has fewer error bytes than corresponding respective said data fragments stored in said buffer memory; and
if said re-read at least one data fragment has fewer error bytes than said stored data fragment, storing said re-read data fragment in said buffer memory.
-
-
7. The method as claimed in claim 6, wherein said step of storing said re-read data fragment comprises overwriting said initial stored data fragment from said first read operation with said re-read data fragment from said second read operation.
-
8. The method as claimed in claim 1, further including:
writing said data fragment read in said second read operation to a location in said buffer memory determined by said header identifier data in response to a data fragment read during a said second read operation having a header identifier data which is not the same as a header identifier data of a said data fragment already written to said buffer memory in said first read operation.
-
9. The method as claimed in claim 1, wherein said step of attempting to decode said at least one encoded data fragment in said buffer memory comprises applying a redundancy decoding algorithm to said at least one encoded data fragment in said buffer memory.
-
10. The method as claimed in claim 1, wherein said plurality of encoded data fragments are stored in said buffer memory as a plurality of sub-data sets, said plurality of sub data sets comprising a data set.
-
11. The method as claimed in claim 1, wherein said at least one encoded data fragment is a codeword pair.
-
12. A processor for performing the steps of claim 1.
-
13. A memory storing a program for causing a processor to perform the method of claim 1.
-
30. A processor for performing the steps of claim 7.
-
31. A memory storing a program for causing a processor to perform the method of claim 7.
-
14. A data storage device configurable to read at least one encoded data fragment from a data storage medium, characterized by comprising:
-
a means for reading said encoded data fragments from said data storage medium;
a means for applying at least one decoding algorithm to said encoded data fragments;
a first memory area configurable to store status data concerning decoding quality metrics of said encoded data fragments; and
a second memory area configurable to store decoded said data fragments;
said data storage device being arranged to operate to recover data written on said data storage medium as a plurality of encoded data fragments by;
performing a first read operation to read at least one encoded data fragment of said plurality of encoded data fragments from said data storage medium;
storing a first status data indicating whether said at least one data fragment has been correctly read;
if said at least one data fragment is correctly read, writing said at least one read data fragment to said second memory area;
attempting to decode said at least one encoded data fragment in said second memory area;
if said attempted decoding is unsuccessful, performing a second read operation for re-reading said at least one encoded data fragment from said data storage medium;
attempting to decode said re-read encoded data fragment; and
if said re-read data fragment his fewer bytes in error than said at least one encoded data fragment, overwriting said at least one encoded data fragment in said second memory area with said re-read encoded data fragment. - View Dependent Claims (15, 16)
a transducer configurable to convert data written onto said data storage medium into electronic signals; and
a means for recovering data from said read data fragments indicating a logical position of said at least one read fragment within said plurality of fragments.
-
-
16. A data storage device as claimed in claim 15, wherein said means for applying a redundancy decoding algorithm is configurable to apply first and second Reed-Solomon redundancy decoding algorithms.
-
17. A method of recovering a data set written to a data storage medium as a first plurality of encoded data fragments said method comprising the steps of:
-
performing a read operation of said data set to read at least one of said plurality of encoded data fragments comprising said data set;
storing said read at least one data fragment in an area of a buffer memory reserved for storing data fragments of said data set;
storing in a memory device a quality metric data of said read operation of said at least one data fragment;
decoding said data set comprising said plurality of fragments stored within said buffer memory;
if said step of decoding said data set within said buffer memory fails, performing a re-read operation to re-read incorrectly read data fragments of said data set from said data storage medium; and
if said re-read data fragment has fewer bytes in error than said at least one data fragment, overwriting said at least one data fragment with said re-read data fragment in said buffer memory. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26)
applying an error correction code redundancy decoding algorithm to each sub data set of a plurality of sub data sets comprising a said a data set; and
storing within a memory device, location data indicating which sub data sets of said plurality of sub data sets have been successfully decoded.
-
-
21. The method as claimed in claim 17, wherein said error correction code redundancy decoding algorithm is a Reed-Solomon redundancy decoding algorithm.
-
22. The method as claimed in claim 17, wherein said step of performing a re-read operation comprises:
-
re-reading at least one incorrectly read data fragment; and
overwriting said at least one re-read data fragment over corresponding respective earlier versions of at least one said data fragment stored in said buffer memory.
-
-
23. The method as claimed in claim 17, further comprising the step of:
-
storing a location data describing memory locations of a plurality of correctly decoded sub data sets comprising said data set, wherein said correctly decoded sub data sets are preserved from overwrite in said buffer memory.
-
-
24. The method as claimed in claim 17, further comprising:
repeating said re-read operation on said data set a predetermined number of times, such that correctly read versions of data fragments are overwritten over stored data fragments having errors, until a C2 redundancy decoding algorithm can function for decoding said complete data set.
-
25. A processor for performing the steps of claim 17.
-
26. A memory storing a program for causing a processor to perform the method of claim 17.
-
27. A method of recovering data written onto a data storage medium as a plurality of encoded data fragments, said method comprising the steps of:
-
reading from said data storage medium a data set comprising a plurality of codeword pairs;
checking a header parity data of each said codeword pair;
for individual said codeword pairs, decoding C1 redundancy encoding data from said codeword pair, and using said C1 redundancy data to correct one or a plurality of incorrectly read said codeword pairs;
storing in a memory, a first status data indicating a number of corrupted bytes of data corrected by said C1 redundancy coding;
applying a second redundancy decoding algorithm for decoding C2 redundancy data of a plurality of sub-data sets within said data set;
using said C2 redundancy encoded data to reconstruct missing or corrupted bytes of data in said data set; and
if said C2 correction fails to fully correct said data set, then re-reading from said data storage medium individual codeword pairs from said data set, said step of re-reading individual codeword pairs comprising;
(a) reading said status data indicating whether a codeword pair was recovered and indicating a number of bytes in error in said codeword pair; and
(b) if said re-read codeword pair has fewer bytes in error than said same codeword pair originally stored within said memory resulting from said earlier read operation, then overwriting said earlier codeword pair with said re-read codeword pair. - View Dependent Claims (28, 29)
-
-
32. A data storage device configurable to read at least one encoded data fragment from a data storage medium, comprising:
-
a reader of said encoded data fragments from said data storage medium;
a source of at least one decoding algorithm to said encoded data fragments;
a first memory area configurable to store status data concerning decoding quality metrics of said encoded data fragments; and
a second memory area configurable to store decoded said data fragments;
said data storage device being arranged to operate to recover data written on said data storage medium as a plurality of encoded data fragments by;
performing a first read operation to read at least one encoded data fragment of said plurality of encoded data fragments from said data storage medium;
storing a first status data indicating whether said at least one data fragment has been correctly read;
if said at least one data fragment is correctly read, writing said at least one read data fragment to said second memory area;
attempting to decode said at least one encoded data fragment in said second memory area;
if said attempted decoding is unsuccessful, performing a second read operation for re-reading said at least one encoded data fragment from said data storage medium;
attempting to decode said re-read encoded data fragment; and
if said re-read data fragment has fewer bytes in error than said at least one encoded data fragment, overwriting said at least one encoded data fragment in said second memory area with said re-read encoded data fragment. - View Dependent Claims (33, 34)
a transducer configurable to convert data written onto said data storage medium into electronic signals; and
a processor for recovering data from said read data fragments indicating a logical position of said at least one read fragment within said plurality of fragments.
-
-
34. A data storage device as claimed in claim 33, wherein said processor for applying a redundancy decoding algorithm is configurable to apply first and second Reed-Solomon redundancy decoding algorithms.
Specification