* ec.rebuild: rebuild shards that fail a checksum scrub, also in complete volumes
ec.rebuild skipped every volume with all shards present, so a shard whose
bytes no longer match the .ecsum sidecar stayed in place until some other
shard went missing. With -checksum, ec.rebuild first scrubs each node's
shards in checksum mode and takes the failing copies out of the plan; a
shard left without a good copy counts as missing and is regenerated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* ec.rebuild: remove the copies that failed the checksum once a good copy serves
A shard regenerated on the rebuilder left the failing copy mounted on its
old holder, so the volume kept a corrupt duplicate that a later dedup could
keep instead of the good one. Remove each failing copy once the rebuilt
shard is mounted, and right away when another holder already serves a copy
that passed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* ec.rebuild: test the checksum scrub against fake volume servers
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* ec.rebuild: check the lock before removing a corrupt copy
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* ec.rebuild: print the checksum scrub details
A malformed sidecar or a wholesale mismatch comes back only in the scrub
details, with no broken shard, so the volume would look verified.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* ec.rebuild: fail the run when a corrupt duplicate cannot be removed
For a volume whose only problem is a corrupt duplicate, the removal is the
whole repair, so its failure has to reach the caller.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* ec.rebuild: test duplicate removal failures and a lost lock
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* ec.rebuild: fail the run when a node's checksum scrub fails
The node's copies stay in the plan unverified, so a corrupt shard there is
left in place; the rest of the cluster is still repaired.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* ec.rebuild: preview the corrupt-copy removals in dry-run
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* ec.rebuild: test a failed checksum scrub
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>