Files
rustfs/experiments/io-uring-cancel-spike/Cargo.toml
T
houseme d608e320f7 chore(experiments): add io_uring cancel-safety spike (backlog#894)
Standalone-workspace prototype proving the buffer-ownership model P2 requires before any production io_uring work: buffer and fd are owned by the driver's pending table from SQE submission to CQE, dropping the future never reclaims the buffer, IORING_OP_ASYNC_CANCEL only accelerates the CQE, and shutdown drains to in_flight == 0 before the ring is unmapped.

Deliberately excluded from the rustfs workspace (own [workspace] table): P2 stays deferred per the P1.5 NO-GO gate, so io-uring must not enter the main Cargo.lock. Verified via run-docker.sh on a real Linux kernel: default-seccomp leg degrades gracefully (EPERM probe, the #4313 environment), unconfined leg passes all five cancel-safety tests.

Co-Authored-By: heihutu <heihutu@gmail.com>
2026-07-07 23:43:48 +08:00

21 lines
661 B
TOML

[package]
name = "io-uring-cancel-spike"
version = "0.1.0"
edition = "2024"
publish = false
description = "Spike 0 for backlog#894 (P2 io_uring read backend): cancel-safety / buffer-ownership prototype. NOT production code."
# Deliberately a standalone workspace: P2 is deferred (P1.5 NO-GO), so the
# io-uring crate must not enter the main rustfs Cargo.lock or build graph.
[workspace]
[dependencies]
tokio = { version = "1", default-features = false, features = ["sync"] }
[target.'cfg(target_os = "linux")'.dependencies]
io-uring = "0.7"
libc = "0.2"
[dev-dependencies]
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "time"] }