<matrixBuild _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-libosmocore" build number 2,396</shortDescription><upstreamBuild>2396</upstreamBuild><upstreamProject>gerrit-libosmocore</upstreamProject><upstreamUrl>job/gerrit-libosmocore/</upstreamUrl></cause></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>43102</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>cbc95bdf61f392e5ee2e2e62faf70f1659c31732</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>libosmocore</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/02/43102/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/libosmocore</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-libosmocore/2396/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>libosmocore</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>136636</buildingDurationMillis><executingTimeMillis>136636</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>6166</waitingDurationMillis><waitingTimeMillis>6166</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><osmith1.9.1 _class='hudson.plugins.git.util.Build'><buildNumber>1315</buildNumber><marked><SHA1>197248107c5c2007b44c4df1bec011e6c1754cda</SHA1><branch><SHA1>197248107c5c2007b44c4df1bec011e6c1754cda</SHA1><name>osmith/1.9.1</name></branch></marked><revision><SHA1>197248107c5c2007b44c4df1bec011e6c1754cda</SHA1><branch><SHA1>197248107c5c2007b44c4df1bec011e6c1754cda</SHA1><name>osmith/1.9.1</name></branch></revision></osmith1.9.1><pespinrel-1.12.0 _class='hudson.plugins.git.util.Build'><buildNumber>2156</buildNumber><marked><SHA1>d38417e5965ae02eaffdd87d281098f30105b8b7</SHA1><branch><SHA1>d38417e5965ae02eaffdd87d281098f30105b8b7</SHA1><name>pespin/rel-1.12.0</name></branch></marked><revision><SHA1>d38417e5965ae02eaffdd87d281098f30105b8b7</SHA1><branch><SHA1>d38417e5965ae02eaffdd87d281098f30105b8b7</SHA1><name>pespin/rel-1.12.0</name></branch></revision></pespinrel-1.12.0><osmith1.9.2 _class='hudson.plugins.git.util.Build'><buildNumber>1319</buildNumber><marked><SHA1>3f0bbe398e16513906d29802d058a87655fceaf1</SHA1><branch><SHA1>3f0bbe398e16513906d29802d058a87655fceaf1</SHA1><name>osmith/1.9.2</name></branch></marked><revision><SHA1>3f0bbe398e16513906d29802d058a87655fceaf1</SHA1><branch><SHA1>3f0bbe398e16513906d29802d058a87655fceaf1</SHA1><name>osmith/1.9.2</name></branch></revision></osmith1.9.2><osmithwip _class='hudson.plugins.git.util.Build'><buildNumber>1773</buildNumber><marked><SHA1>aa177c0f4457df953e3e6e121e8806a4cf403d72</SHA1><branch><SHA1>aa177c0f4457df953e3e6e121e8806a4cf403d72</SHA1><name>osmith/wip</name></branch></marked><revision><SHA1>aa177c0f4457df953e3e6e121e8806a4cf403d72</SHA1><branch><SHA1>aa177c0f4457df953e3e6e121e8806a4cf403d72</SHA1><name>osmith/wip</name></branch></revision></osmithwip><pespinrel-1.10.0 _class='hudson.plugins.git.util.Build'><buildNumber>1877</buildNumber><marked><SHA1>a32a6ee4a6532e0c1d358ecebb8f13b8acc75dc1</SHA1><branch><SHA1>a32a6ee4a6532e0c1d358ecebb8f13b8acc75dc1</SHA1><name>pespin/rel-1.10.0</name></branch></marked><revision><SHA1>a32a6ee4a6532e0c1d358ecebb8f13b8acc75dc1</SHA1><branch><SHA1>a32a6ee4a6532e0c1d358ecebb8f13b8acc75dc1</SHA1><name>pespin/rel-1.10.0</name></branch></revision></pespinrel-1.10.0><osmith1.11.2 _class='hudson.plugins.git.util.Build'><buildNumber>2093</buildNumber><marked><SHA1>22a11a35e3feec31b86738d19f3d85406feb099a</SHA1><branch><SHA1>22a11a35e3feec31b86738d19f3d85406feb099a</SHA1><name>osmith/1.11.2</name></branch></marked><revision><SHA1>22a11a35e3feec31b86738d19f3d85406feb099a</SHA1><branch><SHA1>22a11a35e3feec31b86738d19f3d85406feb099a</SHA1><name>osmith/1.11.2</name></branch></revision></osmith1.11.2><osmith1.11.3 _class='hudson.plugins.git.util.Build'><buildNumber>2118</buildNumber><marked><SHA1>17ca3339e13d779a330781334e92f48d7ea87d36</SHA1><branch><SHA1>17ca3339e13d779a330781334e92f48d7ea87d36</SHA1><name>osmith/1.11.3</name></branch></marked><revision><SHA1>17ca3339e13d779a330781334e92f48d7ea87d36</SHA1><branch><SHA1>17ca3339e13d779a330781334e92f48d7ea87d36</SHA1><name>osmith/1.11.3</name></branch></revision></osmith1.11.3><rel-1.9.1 _class='hudson.plugins.git.util.Build'><buildNumber>1740</buildNumber><marked><SHA1>3a1bb866bbc481b379034723ede51a2e4e8b9c65</SHA1><branch><SHA1>3a1bb866bbc481b379034723ede51a2e4e8b9c65</SHA1><name>rel-1.9.1</name></branch></marked><revision><SHA1>3a1bb866bbc481b379034723ede51a2e4e8b9c65</SHA1><branch><SHA1>3a1bb866bbc481b379034723ede51a2e4e8b9c65</SHA1><name>rel-1.9.1</name></branch></revision></rel-1.9.1><arehbeinosmo_io_ipa _class='hudson.plugins.git.util.Build'><buildNumber>833</buildNumber><marked><SHA1>d75a0cca8117b609da75111388bf8baea5dac0a5</SHA1><branch><SHA1>d75a0cca8117b609da75111388bf8baea5dac0a5</SHA1><name>arehbein/osmo_io_ipa</name></branch></marked><revision><SHA1>d75a0cca8117b609da75111388bf8baea5dac0a5</SHA1><branch><SHA1>d75a0cca8117b609da75111388bf8baea5dac0a5</SHA1><name>arehbein/osmo_io_ipa</name></branch></revision></arehbeinosmo_io_ipa><rel-1.11.1 _class='hudson.plugins.git.util.Build'><buildNumber>1946</buildNumber><marked><SHA1>87de74a9f5835fb56a4758860aea3e673c29060e</SHA1><branch><SHA1>87de74a9f5835fb56a4758860aea3e673c29060e</SHA1><name>rel-1.11.1</name></branch></marked><revision><SHA1>87de74a9f5835fb56a4758860aea3e673c29060e</SHA1><branch><SHA1>87de74a9f5835fb56a4758860aea3e673c29060e</SHA1><name>rel-1.11.1</name></branch></revision></rel-1.11.1><rel-1.9.3 _class='hudson.plugins.git.util.Build'><buildNumber>1743</buildNumber><marked><SHA1>55ea51049775e623880f62026ad827f580aec7a2</SHA1><branch><SHA1>55ea51049775e623880f62026ad827f580aec7a2</SHA1><name>rel-1.9.3</name></branch></marked><revision><SHA1>55ea51049775e623880f62026ad827f580aec7a2</SHA1><branch><SHA1>55ea51049775e623880f62026ad827f580aec7a2</SHA1><name>rel-1.9.3</name></branch></revision></rel-1.9.3><master _class='hudson.plugins.git.util.Build'><buildNumber>2397</buildNumber><marked><SHA1>cbc95bdf61f392e5ee2e2e62faf70f1659c31732</SHA1><branch><SHA1>cbc95bdf61f392e5ee2e2e62faf70f1659c31732</SHA1><name>master</name></branch></marked><revision><SHA1>cbc95bdf61f392e5ee2e2e62faf70f1659c31732</SHA1><branch><SHA1>cbc95bdf61f392e5ee2e2e62faf70f1659c31732</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>cbc95bdf61f392e5ee2e2e62faf70f1659c31732</SHA1><branch><SHA1>cbc95bdf61f392e5ee2e2e62faf70f1659c31732</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/libosmocore</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#2397</displayName><duration>136636</duration><estimatedDuration>149398</estimatedDuration><fullDisplayName>gerrit-libosmocore-build #2397</fullDisplayName><id>2397</id><inProgress>false</inProgress><keepLog>false</keepLog><number>2397</number><queueId>180386</queueId><result>SUCCESS</result><timestamp>1785231470641</timestamp><url>https://jenkins.osmocom.org/jenkins/view/all/job/gerrit-libosmocore-build/2397/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tests/osmo_io/osmo_io_test.c</affectedPath><affectedPath>include/osmocom/core/osmo_io.h</affectedPath><affectedPath>src/core/osmo_io_internal.h</affectedPath><affectedPath>src/core/osmo_io.c</affectedPath><affectedPath>src/core/libosmocore.map</affectedPath><affectedPath>tests/osmo_io/osmo_io_test.ok</affectedPath><affectedPath>src/core/osmo_io_poll.c</affectedPath><commitId>cbc95bdf61f392e5ee2e2e62faf70f1659c31732</commitId><timestamp>1785231174000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo_io: add osmo_iofd_flush() to transmit the pending Tx queue

osmo_iofd_write_msgb() and friends only enqueue the given message;
the actual transmission happens asynchronously from within
osmo_select_main().  An application that needs to say 'goodbye'
right before calling osmo_iofd_free() (think of a connection
teardown datagram, like TRXC "CMD POWEROFF") currently has no way
to do so reliably: osmo_iofd_free() discards the Tx queue, so a
message enqueued in the same event loop iteration never reaches
the socket.

Add osmo_iofd_flush(), which synchronously transmits the pending
Tx queue, stopping on -EAGAIN or other errors.  Only the poll
backend implements it for now;  the io_uring backend returns
-ENOTSUP, since in-flight SQE submissions make a synchronous
flush non-trivial there.

Change-Id: I4e09e91e472a4441977a2c199c07c2cb8005632f
</comment><date>2026-07-28 14:32:54 +0500</date><id>cbc95bdf61f392e5ee2e2e62faf70f1659c31732</id><msg>osmo_io: add osmo_iofd_flush() to transmit the pending Tx queue</msg><path><editType>edit</editType><file>src/core/osmo_io_internal.h</file></path><path><editType>edit</editType><file>tests/osmo_io/osmo_io_test.ok</file></path><path><editType>edit</editType><file>src/core/osmo_io_poll.c</file></path><path><editType>edit</editType><file>tests/osmo_io/osmo_io_test.c</file></path><path><editType>edit</editType><file>include/osmocom/core/osmo_io.h</file></path><path><editType>edit</editType><file>src/core/osmo_io.c</file></path><path><editType>edit</editType><file>src/core/libosmocore.map</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>2397</number><url>https://jenkins.osmocom.org/jenkins/view/all/job/gerrit-libosmocore-build/a2=default,a3=default,a4=default,arch=amd64,label=io_uring/2397/</url></run><run><number>2397</number><url>https://jenkins.osmocom.org/jenkins/view/all/job/gerrit-libosmocore-build/a2=default,a3=default,a4=default,arch=arm-none-eabi,label=io_uring/2397/</url></run></matrixBuild>