section_recover: Jump starts at 8 MiB base to clear big dead spots faster

Each dead probe read costs the drive's full ~10s timeout, so a large dead
region took a dozen escalating probes. Starting the jump at 8 MiB (vs
1 MiB) clears it in a handful; a skipped span stays bad for Bisect to
reclaim readable islands, so an over-jump loses nothing.
This commit is contained in:
Matthew Jackson
2026-06-30 21:12:12 -07:00
parent 11d4c33477
commit e803905265
+5 -2
View File
@@ -46,8 +46,11 @@ const BATCH_SECTORS: u64 = 32;
/// find where readable data resumes rather than reading every dead sector. /// find where readable data resumes rather than reading every dead sector.
const JUMP_AFTER_FAILS: u32 = 2; const JUMP_AFTER_FAILS: u32 = 2;
/// `Jump` initial skip distance; doubles after each jump, capped at /// `Jump` initial skip distance; doubles after each jump, capped at
/// [`JUMP_CAP_BYTES`]. Mirrors the escalating Pass-1 damage-jump. /// [`JUMP_CAP_BYTES`]. Starts large so a big dead region is cleared in a handful
const JUMP_BASE_BYTES: u64 = 1 << 20; // 1 MiB /// of ~10 s probe reads instead of a dozen (each dead read costs the drive's
/// full timeout). A skipped span is left bad for Bisect to reclaim any readable
/// islands, so an over-jump loses nothing — it just defers precision.
const JUMP_BASE_BYTES: u64 = 8 << 20; // 8 MiB
const JUMP_CAP_BYTES: u64 = 256 << 20; // 256 MiB const JUMP_CAP_BYTES: u64 = 256 << 20; // 256 MiB
/// Where a handler left the section after its bounded attempt. /// Where a handler left the section after its bounded attempt.