Skip to content
Success

Changes

Summary

  1. Automatically increase io_uring, if too small. (details)
Commit 79eb6ddb97fc918e7f9c195cf6cc487e514218dd by Andreas Eversberg
Automatically increase io_uring, if too small.

The ring may be too small to store all SQEs before the kernel can
handle them. If this happens, a new ring is allocated with twice of the
size of the old ring. The old ring will not be destroyed, as it still
contains uncompleted elements. Some of them may never be completed.

A pointer to the current ring will be stored within the msghdr
structure. It is used when cancelling an SQE. The cancellation must be
performed in the same ring where it was created.

It is quite unlikely that the old ring cannot store the cancellation
SQE. If this happens, the cancellation is queued and submitted, once
the ring can store it.

The old ring will not be removed, because there is currently no counter
to determine when all submissions are completed.

Related: OS#6705
Change-Id: Id9230146acc8d54bfd44834e783c31b37bd64bca
The file was modifiedsrc/core/osmo_io_uring.c
The file was modifiedsrc/core/osmo_io_internal.h