From daec8aeb22fb69a6527a89f31616a51d5162c1e3 Mon Sep 17 00:00:00 2001 From: PThorpe92 Date: Fri, 25 Jul 2025 22:29:15 -0400 Subject: [PATCH] impl pwritev for simulator file --- simulator/runner/file.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) 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() }