From: Jérémie Galarneau Date: Thu, 2 Apr 2020 04:57:38 +0000 (-0400) Subject: Fix: consumer: fallback to flush when flush empty is unsupported X-Git-Tag: v2.13.0-rc1~691 X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=3f0c969023c8aa14ed2ad12a97a8a70e07254dc6;hp=96393977613193a0e28343ea32a60c819a00e726 Fix: consumer: fallback to flush when flush empty is unsupported Session destruction fails on older (<= 2.8) lttng-modules as the flush_empty fails on the kernel streams during the quiet rotation. Fallback to the regular flush as the semantics of regular rotations are not expected here; we merely want to flush any pending data and destroy the session. Signed-off-by: Jérémie Galarneau Change-Id: Ifdf8a4e60b55dbf582747d71f5c2485d24c11964 --- diff --git a/src/common/consumer/consumer.c b/src/common/consumer/consumer.c index 4613284a8..c043353b9 100644 --- a/src/common/consumer/consumer.c +++ b/src/common/consumer/consumer.c @@ -3953,8 +3953,18 @@ int consumer_flush_buffer(struct lttng_consumer_stream *stream, int producer_act } else { ret = kernctl_buffer_flush_empty(stream->wait_fd); if (ret < 0) { - ERR("Failed to flush kernel stream"); - goto end; + /* + * Doing a buffer flush which does not take into + * account empty packets. This is not perfect, + * but required as a fall-back when + * "flush_empty" is not implemented by + * lttng-modules. + */ + ret = kernctl_buffer_flush(stream->wait_fd); + if (ret < 0) { + ERR("Failed to flush kernel stream"); + goto end; + } } } break;