Update io-uring

This commit is contained in:
asonix 2024-06-09 12:27:32 -05:00
parent b8c83d6f60
commit c9fe2ea89f
3 changed files with 17 additions and 26 deletions

24
Cargo.lock generated
View file

@ -112,9 +112,9 @@ dependencies = [
[[package]] [[package]]
name = "actix-rt" name = "actix-rt"
version = "2.9.0" version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d" checksum = "24eda4e2a6e042aa4e55ac438a2ae052d3b5da0ecf83d7411e1a368946925208"
dependencies = [ dependencies = [
"futures-core", "futures-core",
"tokio", "tokio",
@ -123,9 +123,9 @@ dependencies = [
[[package]] [[package]]
name = "actix-server" name = "actix-server"
version = "2.3.0" version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3eb13e7eef0423ea6eab0e59f6c72e7cb46d33691ad56a726b3cd07ddec2c2d4" checksum = "b02303ce8d4e8be5b855af6cf3c3a08f3eff26880faad82bab679c22d3650cb5"
dependencies = [ dependencies = [
"actix-rt", "actix-rt",
"actix-service", "actix-service",
@ -1482,9 +1482,9 @@ dependencies = [
[[package]] [[package]]
name = "io-uring" name = "io-uring"
version = "0.5.13" version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd1e1a01cfb924fd8c5c43b6827965db394f5a3a16c599ce03452266e1cf984c" checksum = "595a0399f411a508feb2ec1e970a4a30c249351e30208960d58298de8660b0e5"
dependencies = [ dependencies = [
"bitflags 1.3.2", "bitflags 1.3.2",
"libc", "libc",
@ -2665,12 +2665,6 @@ dependencies = [
"pin-utils", "pin-utils",
] ]
[[package]]
name = "scoped-tls"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
[[package]] [[package]]
name = "scopeguard" name = "scopeguard"
version = "1.2.0" version = "1.2.0"
@ -3159,14 +3153,14 @@ dependencies = [
[[package]] [[package]]
name = "tokio-uring" name = "tokio-uring"
version = "0.4.0" version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d5e02bb137e030b3a547c65a3bd2f1836d66a97369fdcc69034002b10e155ef" checksum = "748482e3e13584a34664a710168ad5068e8cb1d968aa4ffa887e83ca6dd27967"
dependencies = [ dependencies = [
"bytes", "bytes",
"futures-util",
"io-uring", "io-uring",
"libc", "libc",
"scoped-tls",
"slab", "slab",
"socket2 0.4.10", "socket2 0.4.10",
"tokio", "tokio",

View file

@ -70,7 +70,7 @@ time = { version = "0.3.0", features = ["serde", "serde-well-known"] }
tokio = { version = "1", features = ["full", "tracing"] } tokio = { version = "1", features = ["full", "tracing"] }
tokio-postgres = { version = "0.7.10", features = ["with-uuid-1", "with-time-0_3", "with-serde_json-1"] } tokio-postgres = { version = "0.7.10", features = ["with-uuid-1", "with-time-0_3", "with-serde_json-1"] }
tokio-postgres-generic-rustls = { version = "0.1.0", default-features = false, features = ["aws-lc-rs"] } tokio-postgres-generic-rustls = { version = "0.1.0", default-features = false, features = ["aws-lc-rs"] }
tokio-uring = { version = "0.4", optional = true, features = ["bytes"] } tokio-uring = { version = "0.5", optional = true, features = ["bytes"] }
tokio-util = { version = "0.7", default-features = false, features = [ tokio-util = { version = "0.7", default-features = false, features = [
"codec", "codec",
"io", "io",

View file

@ -167,10 +167,10 @@ mod io_uring {
while let Some(res) = stream.next().await { while let Some(res) = stream.next().await {
tracing::trace!("write_from_stream while: looping"); tracing::trace!("write_from_stream while: looping");
let mut buf = res?; let buf = res?;
let len = buf.len(); let len = buf.len();
let mut position = 0; let mut position: usize = 0;
loop { loop {
tracing::trace!("write_from_stream: looping"); tracing::trace!("write_from_stream: looping");
@ -179,9 +179,8 @@ mod io_uring {
break; break;
} }
let position_u64: u64 = position.try_into().unwrap(); let (res, _buf) = self
let (res, slice) = self .write_at(buf.slice(position..), cursor + (position as u64))
.write_at(buf.slice(position..len), cursor + position_u64)
.await; .await;
let n = res?; let n = res?;
@ -190,12 +189,10 @@ mod io_uring {
} }
position += n; position += n;
buf = slice.into_inner();
} }
let position: u64 = position.try_into().unwrap(); let len: u64 = len.try_into().unwrap();
cursor += position; cursor += len;
} }
self.inner.sync_all().await?; self.inner.sync_all().await?;
@ -220,7 +217,7 @@ mod io_uring {
} }
async fn write_at<T: IoBuf>(&self, buf: T, pos: u64) -> BufResult<usize, T> { async fn write_at<T: IoBuf>(&self, buf: T, pos: u64) -> BufResult<usize, T> {
self.inner.write_at(buf, pos).await self.inner.write_at(buf, pos).submit().await
} }
} }