Deprecate IoContext submit broken chain logic

The manual invalidation of sqes after a submission of a broken chain is not needed anymore with linux 5.15 and https://lore.kernel.org/io-uring/180ec124-79b1-2274-4570-9b0d6620d512@linux.alibaba.com/T/#t.

This also allows SQPOLL to properly function with broken links.

The changes between v1 and v2 were not trivial!

Notable changes:

  • Use a static LinuxVersion object emper::lib::LinuxVersion.
    This reduces the overhead of multiple LINUX_VERSION_* macro calls to a single syscall.
  • Don't initialize a static variable using LINUX_VERSION_* macros. Because this results in n comparisons one for each object file including the header with the static variable.

NOTE:

There is still the possibility that the comparision now done during library initialization of the Emper object file crashed because it may write warnings to a not yet initialized std::stderr. But I think this always can happen when printing messages using the iostreams during library initialization.

Edited by Florian Fischer

Merge request reports