Vladimir Ivanov wrote:
The really sad thing is that the single byte XOR checksum of the sector
data is simply not enough. When there is a source of noise (including
unreliable data and/or reading process) it is so easy to get "good" sector
which is actually garbage, that it's not even funny.
This is certainly true when the channel is perturbed by random noise.
Fortunately, when a sector is being mis-read due to marginal head
positioning, speed, or very localized media problems, the perturbation
is not random, and the checksum is relatively strong when combined
with field delimiter checks. Put another way, most I/O errors result
in relatively stable (wrong) checksums, not equidistributed checksum
values.
If one were reading a sector which had weak or non-existent recording
over many nibbles, or an equivalent duration of loss of media contact,
then I would expect to see "noise-like" checksums, otherwise, I would
not expect much nondeterminism in the read channel.
Do you have any statistics on mis-reads (of once-valid sectors) that
resulted in good checksums?