diff --git a/simulator/runner/file.rs b/simulator/runner/file.rs index ba3680333..9ed80e34c 100644 --- a/simulator/runner/file.rs +++ b/simulator/runner/file.rs @@ -222,6 +222,34 @@ impl File for SimulatorFile { Ok(c) } + fn pwritev( + &self, + pos: usize, + buffers: Vec>>, + c: turso_core::Completion, + ) -> Result { + self.nr_pwrite_calls.set(self.nr_pwrite_calls.get() + 1); + if self.fault.get() { + tracing::debug!("pwritev fault"); + self.nr_pwrite_faults.set(self.nr_pwrite_faults.get() + 1); + return Err(turso_core::LimboError::InternalError( + FAULT_ERROR_MSG.into(), + )); + } + if let Some(latency) = self.generate_latency_duration() { + let cloned_c = c.clone(); + let op = + Box::new(move |file: &SimulatorFile| file.inner.pwritev(pos, buffers, cloned_c)); + self.queued_io + .borrow_mut() + .push(DelayedIo { time: latency, op }); + Ok(c) + } else { + let c = self.inner.pwritev(pos, buffers, c)?; + Ok(c) + } + } + fn size(&self) -> Result { self.inner.size() }