Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This issue turned out to be a kernel bug which has been fixed in: torvalds/linux@46a525e Reported here: axboe/liburing#665 (comment) We can workaround it by making sure pipes are non-blocking, uring considers pipes unbounded work and relies on uring worker threads if they are blocking, the bug is only triggered if this is the case, so force them to be non-blocking. If we use splice, the splice call itself needs the worker threads and the bug surfaces again (I verified this with perf probes), so disable splice for now. Even with the fix, it's desirable to keep pipes as non-blocking to avoid thread pooling. The splice call can return EAGAIN in uring, this happens even with the kernel patched, so handle it for the future. We can tune this better by disabling splice only for the unpatched kernels.
- Loading branch information