From 3cb116fcfcec332778cbf520253091a33f3a6538 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Fri, 27 Mar 2026 23:11:34 +0100 Subject: [PATCH] performance-metrics: Add async drain completions helper Signed-off-by: Anatol Belski --- performance-metrics/src/util.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/performance-metrics/src/util.rs b/performance-metrics/src/util.rs index e4604f22d..f9f322f22 100644 --- a/performance-metrics/src/util.rs +++ b/performance-metrics/src/util.rs @@ -128,6 +128,18 @@ pub fn submit_writes(async_io: &mut dyn AsyncIo, count: usize, stride: u64, iove } } +/// Drain `count` completions from an asynchronous I/O backend that delivers +/// results via eventfd notification (e.g. io_uring). +pub fn drain_async_completions(async_io: &mut dyn AsyncIo, count: usize) { + let mut drained = 0usize; + while drained < count { + wait_for_eventfd(async_io.notifier()); + while async_io.next_completed_request().is_some() { + drained += 1; + } + } +} + /// Create an empty QCOW2 image sized for `num_clusters` clusters. /// No data clusters are allocated. fn create_empty_qcow_tempfile(num_clusters: usize) -> TempFile {