drive: report marginal reads (PER=1) so a dirty disc can't pass clean
A read was only ever judged "good" by the drive's SCSI GOOD status — with no integrity check on the bytes. On dirty/marginal media a drive can silently return best-effort ECC data (occasionally mis-corrected) with GOOD status, so a rip could "pass clean" yet decode with errors, pushing corruption downstream to the mux instead of catching it at the read. Enable recovered-error REPORTING at drive-prep: MODE SELECT the Read-Write Error Recovery page with PER=1 (TB on / DTE off so the data still comes back), preserving the drive's own retry count. Marginal reads now surface as CHECK CONDITION / RECOVERED ERROR. Best-effort — a drive that doesn't honor it keeps its defaults (no regression), and on a clean disc nothing changes. A recovered error is distrusted: it marks just that ECC block NonTrimmed for a Pass N re-read (a clean re-read wins; a persistent marginal becomes an honest concealed gap), and is counted in the pass summary. Crucially it takes a per-block SkipBlock, NOT the damage-jump path — a single marginal sector must not trigger a 64 MB skip that would discard good data on a lightly-smudged disc.
This commit is contained in:
@@ -3893,6 +3893,7 @@ impl Disc {
|
||||
total_errors = pass_sum.total_errors,
|
||||
zones_entered = pass_sum.zones_entered,
|
||||
jumps_taken = pass_sum.jumps_taken,
|
||||
marginal_recovered = pass_sum.marginal_recovered,
|
||||
bytes_good = stats.bytes_good,
|
||||
bytes_pending = stats.bytes_pending,
|
||||
copy_elapsed_ms = copy_t0.elapsed().as_millis() as u64,
|
||||
|
||||
Reference in New Issue
Block a user