rs: Reed–Solomon virtual backend (alpha) by Breschling · Pull Request #9301 · rclone/rclone
Adds the rs virtual backend (Reed–Solomon over multiple remotes) with docs/content/rs.md, fstest/testserver wiring and test_all entry, backend heal/status commands and context-cancel coverage, a 1 GiB integration test, and shell verification scripts aligned with raid3. Made-with: Cursor
Register the Reed-Solomon backend via backend/all so the main rclone binary exposes the rs remote type (required for shell integration tests). Restore the full rsverify tool (encode, decode, check, footer) so backend/rs/test verify/heal can run rsverify check. Made-with: Cursor
Unify shard layout on RS stripes as the foundation for later direct streaming uploads (use_spooling=false).
Add write_quorum option (k..k+m, default k+1) and apply it consistently to all writes to rs: (preflight availability check, Put/Update success criteria, and backend status “write blocked” reporting). Add a unit test covering a failing write quorum requirement.
Implement shard-aligned server-side Copy, Move, and DirMove with two-phase quorum execution, preserving degraded-mode behavior while logging minority failures. Expand Go and shell coverage (local + MinIO), and document short semantic guarantees plus open rollback/race considerations.
Parallelize safe per-shard work while preserving quorum semantics: - List and NewObject use errgroup; merge List votes in shard index order. - Rmdir: parallel empty-dir List across shards before quorum rmdir. - Heal path: parallel listAllObjectRemotes. Put / upload behavior: - Default use_spooling=false with streaming Put when size is known; unknown size uses spooling for that transfer only.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters