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:
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user