Skip to content

V1 B: localhost TCP service, file store, and optional RustFS cold contract - #3

Merged
loverustfs merged 1 commit into
mainfrom
feat/v1b-tcp-storage
Oct 15, 2026
Merged

loverustfs merged 1 commit into
mainfrom
feat/v1b-tcp-storage

Conversation

@loverustfs

Copy link
Copy Markdown
Contributor

Summary

V1 B of the G3.5 shared KV tier. Hot misses still recompute. No erasure coding (ADR 0002). DPU and RDMA are not in this milestone. ADR 0001 stays Pending because there is still no GPU spike.

  • TCP server for batch Lookup, Reserve-Put, Commit, Get, Release-Cancel, and Invalidate. Bounded buffer pool, checksums, tenant quotas, and a required credential fingerprint. Default bind is 127.0.0.1; a non-loopback bind needs --allow-remote.
  • FileStore persists committed blocks as ordinary files under a caller-supplied directory. It does not format disks or open device nodes. Quotas evict the oldest unpinned committed block (LRU). Pins and quarantine are not evicted. Restart reloads committed files and bumps the epoch.
  • Two-client share-demo: exact hit, miss, and whole-block prefix reuse. A longer hash chain can hit a shorter committed block (PrefixHit). The service does not slice inside a block (intra_block_slice=DEGRADED_MISS). See docs/adr/0003-partial-prefix.md.
  • gpucache-cold is off the hot path. Put / Head / RangeGet / Delete plus object packing and a manifest run against an in-process mock. A live RustFS probe runs only when GPUCACHE_RUSTFS_* is set. This environment has no authorized endpoint, so the live probe is NOT_RUN_HARDWARE.

V1 C, V2, and V3 are not started. No website changes.

Test matrix

Check Result
TCP Lookup / Reserve-Put / Commit / Get, two clients, exact hit PASS
Miss, layout mismatch, cross-tenant unauthorized PASS
Whole-block prefix hit; intra-block slice stays a miss PASS
Wrong fingerprint unauthorized; bad checksum hides bytes PASS
Non-loopback bind refused PASS
Tenant and global quotas, LRU eviction, pinned block kept PASS
Corrupt file is not a hit after restart PASS
Restart reloads a committed block and bumps the epoch PASS
RustFS mock Put / Head / RangeGet / Delete plus pack and manifest PASS
RustFS live endpoint NOT_RUN_HARDWARE
vLLM KV export/import and ADR 0001 route choice NOT_RUN_HARDWARE
aarch64 on this x86_64 host NOT_RUN
Token goodput vs engine prefix cache NOT_RUN_HARDWARE
DOCA / model license review NOT_RUN_LICENSE
Paid GPU or DPU NOT_RUN_BUDGET

Full table: docs/V1B_TEST_MATRIX.md.

Repro

cargo test --workspace --all-targets
cargo run -p gpucache-transport --bin share-demo

A successful demo prints status=REUSE_OK and partial_prefix=WHOLE_BLOCK_PREFIX.

Open in Web Open in Cursor 

…tract

Serve the V1 A batch API over a loopback TCP envelope with a bounded buffer
pool, checksums, and tenant fingerprints. FileStore persists committed blocks
under a caller-supplied directory and evicts oldest unpinned blocks for quotas.
Prefix reuse returns the whole shorter block. Cold Put/Head/RangeGet/Delete
stays off the hot path and is exercised with a mock when no RustFS endpoint
is configured.

Co-authored-by: RustFS <hello@rustfs.com>
@loverustfs
loverustfs marked this pull request as ready for review October 15, 2026 05:41
@loverustfs
loverustfs merged commit 0c1b612 into main Oct 15, 2026
4 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants