Skip to content

Commit d6796b9

Browse files
committed
fix(vfs): run io_uring submit+drain on the blocking pool
submit_and_wait parks the caller inside io_uring_enter while holding the ring lock, so doing that on the executor stalls every other task sharing the runtime. Move the full submit + drain cycle for read, read_at_vectored, write_at, write_at_vectored, and fsync into self-contained closures run on the blocking pool, each owning its own Arc to the file/ring and a private buffer copy. That copy is what lets a cancelled future's memory be dropped safely: the pool thread still owns a buffer the kernel can write into until the operation completes, independent of whether the caller's future was already dropped.
1 parent 02414f9 commit d6796b9

2 files changed

Lines changed: 218 additions & 128 deletions

File tree

0 commit comments

Comments
 (0)