rs: Reed–Solomon virtual backend (alpha) by Breschling · Pull Request #9301 · rclone/rclone

@Breschling

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

@Breschling

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
Drop the stub backend/raid3 docs and shell script that were only used for alignment notes. RAID3 implementation remains on raid3-backend; other branches are unchanged.

Made-with: Cursor

ncw

ncw

ncw

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.
Made-with: Cursor

# Conflicts:
#	go.mod

@Breschling

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.