mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-10-05 13:05:45 +00:00
deps: bump io-uring from 0.4.0 to 0.5.0
Bumps [io-uring](https://github.com/tokio-rs/io-uring) from 0.4.0 to 0.5.0. - [Release notes](https://github.com/tokio-rs/io-uring/releases) - [Commits](https://github.com/tokio-rs/io-uring/commits) The API was changed, hence some changes were needed to keep the code building and functional. Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
This commit is contained in:
parent
e31c2be60a
commit
30cd3cb764
4
Cargo.lock
generated
4
Cargo.lock
generated
@ -463,9 +463,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "io-uring"
|
name = "io-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 = "2f7589adca0ddd74f56ed83a5098b45e3abf264dc27e150a8bec3397fcc34338"
|
checksum = "4e06a309d419b77e3036c1eb5683482c9ee51cff165e448d04bd601b6cd16360"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.2.1",
|
"bitflags 1.2.1",
|
||||||
"libc",
|
"libc",
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
use crate::async_io::{
|
use crate::async_io::{
|
||||||
AsyncIo, AsyncIoError, AsyncIoResult, DiskFile, DiskFileError, DiskFileResult,
|
AsyncIo, AsyncIoError, AsyncIoResult, DiskFile, DiskFileError, DiskFileResult,
|
||||||
};
|
};
|
||||||
use io_uring::{opcode, squeue, IoUring};
|
use io_uring::{opcode, squeue, types, IoUring};
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::{Seek, SeekFrom};
|
use std::io::{Seek, SeekFrom};
|
||||||
use std::os::unix::io::{AsRawFd, RawFd};
|
use std::os::unix::io::{AsRawFd, RawFd};
|
||||||
@ -71,28 +71,23 @@ impl AsyncIo for RawFileAsync {
|
|||||||
iovecs: Vec<libc::iovec>,
|
iovecs: Vec<libc::iovec>,
|
||||||
user_data: u64,
|
user_data: u64,
|
||||||
) -> AsyncIoResult<()> {
|
) -> AsyncIoResult<()> {
|
||||||
let (submitter, sq, _) = self.io_uring.split();
|
let (submitter, mut sq, _) = self.io_uring.split();
|
||||||
let mut avail_sq = sq.available();
|
|
||||||
|
|
||||||
// Safe because we know the file descriptor is valid and we
|
// Safe because we know the file descriptor is valid and we
|
||||||
// relied on vm-memory to provide the buffer address.
|
// relied on vm-memory to provide the buffer address.
|
||||||
let _ = unsafe {
|
let _ = unsafe {
|
||||||
avail_sq.push(
|
sq.push(
|
||||||
opcode::Readv::new(
|
&opcode::Readv::new(types::Fd(self.fd), iovecs.as_ptr(), iovecs.len() as u32)
|
||||||
opcode::types::Fd(self.fd),
|
.offset(offset)
|
||||||
iovecs.as_ptr(),
|
.build()
|
||||||
iovecs.len() as u32,
|
.flags(squeue::Flags::ASYNC)
|
||||||
)
|
.user_data(user_data),
|
||||||
.offset(offset)
|
|
||||||
.build()
|
|
||||||
.flags(squeue::Flags::ASYNC)
|
|
||||||
.user_data(user_data),
|
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
// Update the submission queue and submit new operations to the
|
// Update the submission queue and submit new operations to the
|
||||||
// io_uring instance.
|
// io_uring instance.
|
||||||
avail_sq.sync();
|
sq.sync();
|
||||||
submitter.submit().map_err(AsyncIoError::ReadVectored)?;
|
submitter.submit().map_err(AsyncIoError::ReadVectored)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -104,28 +99,23 @@ impl AsyncIo for RawFileAsync {
|
|||||||
iovecs: Vec<libc::iovec>,
|
iovecs: Vec<libc::iovec>,
|
||||||
user_data: u64,
|
user_data: u64,
|
||||||
) -> AsyncIoResult<()> {
|
) -> AsyncIoResult<()> {
|
||||||
let (submitter, sq, _) = self.io_uring.split();
|
let (submitter, mut sq, _) = self.io_uring.split();
|
||||||
let mut avail_sq = sq.available();
|
|
||||||
|
|
||||||
// Safe because we know the file descriptor is valid and we
|
// Safe because we know the file descriptor is valid and we
|
||||||
// relied on vm-memory to provide the buffer address.
|
// relied on vm-memory to provide the buffer address.
|
||||||
let _ = unsafe {
|
let _ = unsafe {
|
||||||
avail_sq.push(
|
sq.push(
|
||||||
opcode::Writev::new(
|
&opcode::Writev::new(types::Fd(self.fd), iovecs.as_ptr(), iovecs.len() as u32)
|
||||||
opcode::types::Fd(self.fd),
|
.offset(offset)
|
||||||
iovecs.as_ptr(),
|
.build()
|
||||||
iovecs.len() as u32,
|
.flags(squeue::Flags::ASYNC)
|
||||||
)
|
.user_data(user_data),
|
||||||
.offset(offset)
|
|
||||||
.build()
|
|
||||||
.flags(squeue::Flags::ASYNC)
|
|
||||||
.user_data(user_data),
|
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
// Update the submission queue and submit new operations to the
|
// Update the submission queue and submit new operations to the
|
||||||
// io_uring instance.
|
// io_uring instance.
|
||||||
avail_sq.sync();
|
sq.sync();
|
||||||
submitter.submit().map_err(AsyncIoError::WriteVectored)?;
|
submitter.submit().map_err(AsyncIoError::WriteVectored)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -133,13 +123,12 @@ impl AsyncIo for RawFileAsync {
|
|||||||
|
|
||||||
fn fsync(&mut self, user_data: Option<u64>) -> AsyncIoResult<()> {
|
fn fsync(&mut self, user_data: Option<u64>) -> AsyncIoResult<()> {
|
||||||
if let Some(user_data) = user_data {
|
if let Some(user_data) = user_data {
|
||||||
let (submitter, sq, _) = self.io_uring.split();
|
let (submitter, mut sq, _) = self.io_uring.split();
|
||||||
let mut avail_sq = sq.available();
|
|
||||||
|
|
||||||
// Safe because we know the file descriptor is valid.
|
// Safe because we know the file descriptor is valid.
|
||||||
let _ = unsafe {
|
let _ = unsafe {
|
||||||
avail_sq.push(
|
sq.push(
|
||||||
opcode::Fsync::new(opcode::types::Fd(self.fd))
|
&opcode::Fsync::new(types::Fd(self.fd))
|
||||||
.build()
|
.build()
|
||||||
.flags(squeue::Flags::ASYNC)
|
.flags(squeue::Flags::ASYNC)
|
||||||
.user_data(user_data),
|
.user_data(user_data),
|
||||||
@ -148,7 +137,7 @@ impl AsyncIo for RawFileAsync {
|
|||||||
|
|
||||||
// Update the submission queue and submit new operations to the
|
// Update the submission queue and submit new operations to the
|
||||||
// io_uring instance.
|
// io_uring instance.
|
||||||
avail_sq.sync();
|
sq.sync();
|
||||||
submitter.submit().map_err(AsyncIoError::Fsync)?;
|
submitter.submit().map_err(AsyncIoError::Fsync)?;
|
||||||
} else {
|
} else {
|
||||||
unsafe { libc::fsync(self.fd) };
|
unsafe { libc::fsync(self.fd) };
|
||||||
@ -161,7 +150,7 @@ impl AsyncIo for RawFileAsync {
|
|||||||
let mut completion_list = Vec::new();
|
let mut completion_list = Vec::new();
|
||||||
|
|
||||||
let cq = self.io_uring.completion();
|
let cq = self.io_uring.completion();
|
||||||
for cq_entry in cq.available() {
|
for cq_entry in cq {
|
||||||
completion_list.push((cq_entry.user_data(), cq_entry.result()));
|
completion_list.push((cq_entry.user_data(), cq_entry.result()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
8
fuzz/Cargo.lock
generated
8
fuzz/Cargo.lock
generated
@ -273,9 +273,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "io-uring"
|
name = "io-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 = "2f7589adca0ddd74f56ed83a5098b45e3abf264dc27e150a8bec3397fcc34338"
|
checksum = "4e06a309d419b77e3036c1eb5683482c9ee51cff165e448d04bd601b6cd16360"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags",
|
||||||
"libc",
|
"libc",
|
||||||
@ -512,9 +512,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_json"
|
name = "serde_json"
|
||||||
version = "1.0.63"
|
version = "1.0.64"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "43535db9747a4ba938c0ce0a98cc631a46ebf943c9e1d604e091df6007620bf6"
|
checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"itoa",
|
"itoa",
|
||||||
"ryu",
|
"ryu",
|
||||||
|
Loading…
Reference in New Issue
Block a user