io-uring-linked-timeout · shipping · also IORING_OP_LINK_TIMEOUT, io_uring_prep_link_timeout

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.

Related Observatory article: io_uring linked timeout on hesela.com

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

Limitations

Citations

  1. Linux v6.14: io_req_task_link_timeout and io_disarm_next. (accessed 2026-10-17)
  2. liburing 2.9: io_uring_wait_cqe_timeout(3), waiting result versus operation result. (accessed 2026-10-17)
  3. liburing: io_uring(7), SQE pointer lifetimes and data stability; current manual reviewed 17 October 2026. (accessed 2026-10-17)

Further reading

  1. io_uring: completion is not a durable commit (accessed 2026-10-17)

JSON: /data/terms/io-uring-linked-timeout.json