From 6088aa34c2b482904588d299e6bdb4797ed92acc Mon Sep 17 00:00:00 2001 From: pedrocarlo Date: Thu, 10 Jul 2025 15:55:08 -0300 Subject: [PATCH] only add the sync completion after we call sync in the closure --- simulator/runner/file.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/simulator/runner/file.rs b/simulator/runner/file.rs index 6df14c89d..d1682c353 100644 --- a/simulator/runner/file.rs +++ b/simulator/runner/file.rs @@ -209,15 +209,20 @@ impl File for SimulatorFile { } let c = if let Some(latency) = self.generate_latency_duration() { let cloned_c = c.clone(); - let op = Box::new(|file: &SimulatorFile| file.inner.sync(cloned_c)); + let op = Box::new(|file: &SimulatorFile| -> Result<_> { + let c = file.inner.sync(cloned_c)?; + *file.sync_completion.borrow_mut() = Some(c.clone()); + Ok(c) + }); self.queued_io .borrow_mut() .push(DelayedIo { time: latency, op }); - Ok(c) + c } else { - self.inner.sync(c) - }?; - *self.sync_completion.borrow_mut() = Some(c.clone()); + let c = self.inner.sync(c)?; + *self.sync_completion.borrow_mut() = Some(c.clone()); + c + }; Ok(c) }