io_uring linked timeout
An io_uring linked timeout is a timer request attached to an operation that can trigger cancellation when its deadline expires.
In the two-request case, the target is marked IOSQE_IO_LINK and followed by the timeout SQE. A timeout CQE with -ECANCELED can mean the timer was disarmed after the target finished, not that the target itself was canceled. [1]
Linux v6.14's io_req_task_link_timeout can attempt cancellation and report its error or -ETIME on a zero return; when no predecessor remains, it can emit -ETIME without that attempt. Check the target's separate result; timer expiry does not undo earlier writes. [2]
io_uring_wait_cqe_timeout instead bounds a wait for a CQE; expiration of that wait does not establish cancellation of an outstanding operation. [3]
Read/write payload buffers must remain valid until the target operation completes; submission stability does not shorten that lifetime. [5]
Relations
- related
- io-uring, io-uring-cqe, io-uring-linked-requests, io-uring-cancellation, io-timeout
Advantages
- Associates a deadline with a specific outstanding operation.
Limitations
- A deadline is not a transaction rollback or durability guarantee.
- This explanation excludes multishot requests, completion suppression, hard-linked chains and nonzero timeout flags.
Citations
- liburing 2.9: io_uring_prep_link_timeout(3), timeout and cancellation outcomes.
- Linux v6.14: io_req_task_link_timeout and io_disarm_next.
- liburing 2.9: io_uring_wait_cqe_timeout(3), waiting result versus operation result.
- liburing: io_uring(7), SQE pointer lifetimes and data stability; current manual reviewed 17 October 2026.