mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-21 03:46:37 +00:00
095bf34086
Split the 8178-line scanner.rs (48% inline tests) into a canonical scanner.rs + scanner/ module tree with zero behavior change: - scanner.rs (~2140): cycle constants, schedule status, budget/config helpers, startup, maintenance features, the two run loops, and cycle-result finalization - scanner/activity.rs (~770): wake/backoff policy and scanner activity observation (probing, generations, topology digest) - scanner/heal_info.rs (~110): the background-heal info object - scanner/cycle_state.rs (~500): cycle-state codec, persisted usage floors, and cycle-state persistence - scanner/leadership.rs (~360): leader-lock claiming, usage-epoch fencing, and lock-loss handling - scanner/usage_store.rs (~480): the CAS data-usage store pipeline and observed-snapshot cleanup - scanner/tests.rs (~3920): the inline test module as a child module All crate paths are unchanged: scanner::BackgroundHealInfo, scanner::read_background_heal_info, scanner::store_data_usage_in_backend, and scanner_topology_digest resolve through root re-exports with their original visibilities, and the pub(crate) surface used by scanner_io and remote_scanner re-exports at pub(crate). Cross-module items gain pub(super), whose scope equals the old single-module privacy domain. Code is moved verbatim apart from those markers, per-module import headers, and rustfmt re-wraps. Co-authored-by: heihutu <heihutu@gmail.com>