From bf70c19857dcdfd13b375b12fba202f30dcf0f70 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Fri, 20 Mar 2026 20:07:32 +0100 Subject: [PATCH] block: qcow_async: impl fsync for QcowAsync Flush dirty metadata caches and sync the underlying file via QcowMetadata::flush, then signal synthetic completion. Signed-off-by: Anatol Belski --- block/src/qcow_async.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/block/src/qcow_async.rs b/block/src/qcow_async.rs index 2239867c8..ad94f74af 100644 --- a/block/src/qcow_async.rs +++ b/block/src/qcow_async.rs @@ -248,7 +248,12 @@ impl AsyncIo for QcowAsync { } fn fsync(&mut self, user_data: Option) -> AsyncIoResult<()> { - unimplemented!() + self.metadata.flush().map_err(AsyncIoError::Fsync)?; + if let Some(user_data) = user_data { + self.completion_list.push_back((user_data, 0)); + self.eventfd.write(1).unwrap(); + } + Ok(()) } fn next_completed_request(&mut self) -> Option<(u64, i32)> {