From ed689e74d8332f87815464523ae91914dda42316 Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Sat, 19 Feb 2022 11:53:06 +0000 Subject: [PATCH 1/1] dvd-sector-copy.c: Add more debugging about the recovery algorithm. --- dvd-sector-copy.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/dvd-sector-copy.c b/dvd-sector-copy.c index fd15138..4d44122 100644 --- a/dvd-sector-copy.c +++ b/dvd-sector-copy.c @@ -712,6 +712,12 @@ static ssize_t find_good_sector(secaddr *pos_inout, secaddr end, bad_lo = pos; bad_hi = pos + 1; for (;;) { report_bad_blocks_progress(bad_lo, bad_hi, errno); +#ifdef DEBUG + debug_clear_progress(); + printf(";; bounding bad-block region: " + "%"PRIuSEC" ..%"PRIuSEC".. %"PRIuSEC"\n", + bad_lo, bad_hi - bad_lo, bad_hi); +#endif if (bad_hi >= end) { clear_progress(); moan("giving up on this extent"); @@ -722,7 +728,6 @@ static ssize_t find_good_sector(secaddr *pos_inout, secaddr end, want = run_length_wanted(pos, step, sz, end); n = recovery_read(&r, pos, want); #ifdef DEBUG - debug_clear_progress(); printf(";; [bound] try reading %"PRIuSEC" .. %"PRIuSEC" -> %zd\n", pos, pos + want, n); #endif @@ -734,12 +739,17 @@ static ssize_t find_good_sector(secaddr *pos_inout, secaddr end, good = pos; while (good > bad_hi) { report_bad_blocks_progress(bad_lo, bad_hi, errno); +#ifdef DEBUG + debug_clear_progress(); + printf(";; limiting bad-block region: " + "%"PRIuSEC" ..%"PRIuSEC".. %"PRIuSEC" ..%"PRIuSEC".. %"PRIuSEC"\n", + bad_lo, bad_hi - bad_lo, bad_hi, good - bad_hi, good); +#endif pos = bad_hi + (good - bad_hi)/2; step = pos - bad_lo; want = run_length_wanted(pos, step, sz, end); n = recovery_read(&r, pos, want); #ifdef DEBUG - debug_clear_progress(); printf(";; [limit] try reading %"PRIuSEC" .. %"PRIuSEC" -> %zd\n", pos, pos + want, n); #endif -- 2.11.0