From ae051e647a46d2060c234e8a33415e9835bf0c21 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Thu, 8 May 2025 12:23:56 +0000 Subject: [PATCH] Implement set_len as tokio-epoll-uring operation (#11817) Co-Authored-By: christian@neon.tech --- pageserver/src/virtual_file/io_engine.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pageserver/src/virtual_file/io_engine.rs b/pageserver/src/virtual_file/io_engine.rs index 7827682498..810714be4d 100644 --- a/pageserver/src/virtual_file/io_engine.rs +++ b/pageserver/src/virtual_file/io_engine.rs @@ -240,10 +240,12 @@ impl IoEngine { } #[cfg(target_os = "linux")] IoEngine::TokioEpollUring => { - // TODO: ftruncate op for tokio-epoll-uring - // Don't forget to use retry_ecanceled_once - let res = file_guard.with_std_file(|std_file| std_file.set_len(len)); - (file_guard, res) + let system = tokio_epoll_uring_ext::thread_local_system().await; + let (resources, res) = retry_ecanceled_once(file_guard, |file_guard| async { + system.ftruncate(file_guard, len).await + }) + .await; + (resources, res.map_err(epoll_uring_error_to_std)) } } }