Skip to content

Commit 4744500

Browse files
Yang Kaiyongimeoer
Yang Kaiyong
authored andcommitted
chore: bump vhost version from 0.6.0 to 0.11.0 and prepare for v0.12.1 release
- Follow the RUSTSEC-2024-0002 advisory by bumping the vhost version from 0.6.0 to 0.11.0. - Add the `unexpected-cfgs` flag to address the Clippy error related to the `async_io` feature. - Keep the vm-memory version consistent with the updated vhost version. - Prepare for the release of v0.12.1. Signed-off-by: Yang Kaiyong <[email protected]>
1 parent 652163e commit 4744500

File tree

11 files changed

+50
-34
lines changed

11 files changed

+50
-34
lines changed

Diff for: Cargo.toml

+8-12
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "fuse-backend-rs"
3-
version = "0.12.0"
3+
version = "0.12.1"
44
keywords = ["fuse", "virtio", "virtio-fs", "vhost-user-fs"]
55
categories = ["filesystem", "os::linux-apis"]
66
description = "A rust library for Fuse(filesystem in userspace) servers and virtio-fs devices"
@@ -20,7 +20,7 @@ build = "build.rs"
2020
arc-swap = "1.5"
2121
async-trait = { version = "0.1.42", optional = true }
2222
bitflags = "1.1"
23-
dbs-snapshot = { version = "1.5.0", optional = true }
23+
dbs-snapshot = { version = "1.5.2", optional = true }
2424
io-uring = { version = "0.5.8", optional = true }
2525
lazy_static = "1.4"
2626
libc = "0.2.68"
@@ -31,11 +31,11 @@ radix_trie = "0.2.1"
3131
tokio = { version = "1", optional = true }
3232
tokio-uring = { version = "0.4.0", optional = true }
3333
vmm-sys-util = { version = "0.12.1", optional = true }
34-
vm-memory = { version = "0.16.1", features = ["backend-mmap"] }
35-
virtio-queue = { version = "0.14.0", optional = true }
36-
vhost = { version = "0.6", features = ["vhost-user-slave"], optional = true }
34+
vm-memory = { version = "0.14.1", features = ["backend-mmap"] }
35+
virtio-queue = { version = "0.12.0", optional = true }
36+
vhost = { version = "0.11.0", features = ["vhost-user","vhost-user-backend"], optional = true }
3737
versionize_derive = { version = "0.1.6", optional = true }
38-
versionize = { version = "0.1.10", optional = true }
38+
versionize = { version = "0.2.0", optional = true }
3939

4040
[target.'cfg(target_os = "macos")'.dependencies]
4141
core-foundation-sys = { version = ">=0.8", optional = true }
@@ -46,8 +46,8 @@ tokio-uring = { version = "0.4.0", optional = true }
4646

4747
[dev-dependencies]
4848
tokio-test = "0.4.2"
49-
vmm-sys-util = "0.12.0"
50-
vm-memory = { version = "0.16.1", features = ["backend-mmap", "backend-bitmap"] }
49+
vmm-sys-util = "0.12.1"
50+
vm-memory = { version = "0.14.1", features = ["backend-mmap", "backend-bitmap"] }
5151

5252
[features]
5353
default = ["fusedev"]
@@ -66,7 +66,6 @@ virtiofs = ["virtio-queue", "caps", "vmm-sys-util"]
6666
vhost-user-fs = ["virtiofs", "vhost", "caps"]
6767
persist = ["dbs-snapshot", "versionize", "versionize_derive"]
6868
fuse-t = []
69-
async_io = []
7069

7170
[package.metadata.docs.rs]
7271
all-features = true
@@ -75,6 +74,3 @@ targets = [
7574
"aarch64-unknown-linux-gnu",
7675
"aarch64-apple-darwin",
7776
]
78-
79-
[lints.rust]
80-
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(testff)'] }

Diff for: src/abi/fuse_abi_linux.rs

+7-1
Original file line numberDiff line numberDiff line change
@@ -1322,6 +1322,7 @@ unsafe impl ByteValued for CopyFileRangeIn {}
13221322

13231323
#[cfg(test)]
13241324
mod tests {
1325+
13251326
use super::*;
13261327

13271328
#[test]
@@ -1346,7 +1347,12 @@ mod tests {
13461347
let buf = [
13471348
0x1u8, 0x2u8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5u8, 0x6u8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
13481349
];
1349-
let forget: &ForgetOne = ForgetOne::from_slice(&buf).unwrap();
1350+
let forget = match ForgetOne::from_slice(&buf) {
1351+
Some(f) => f,
1352+
None => {
1353+
panic!("Failed to parse ForgetOne from buffer: {:?}", buf)
1354+
}
1355+
};
13501356

13511357
assert_eq!(forget.nodeid, 0x201u64);
13521358
assert_eq!(forget.nlookup, 0x605u64);

Diff for: src/abi/fuse_abi_macos.rs

+6-1
Original file line numberDiff line numberDiff line change
@@ -1090,7 +1090,12 @@ mod tests {
10901090
let buf = [
10911091
0x1u8, 0x2u8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5u8, 0x6u8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10921092
];
1093-
let forget: &ForgetOne = ForgetOne::from_slice(&buf).unwrap();
1093+
let forget = match ForgetOne::from_slice(&buf) {
1094+
Some(f) => f,
1095+
None => {
1096+
panic!("Failed to parse ForgetOne from buffer: {:?}", buf)
1097+
}
1098+
};
10941099

10951100
assert_eq!(forget.nodeid, 0x201u64);
10961101
assert_eq!(forget.nlookup, 0x605u64);

Diff for: src/common/file_buf.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,8 @@ impl<'a> FileVolatileSlice<'a> {
180180
}
181181
}
182182

183-
impl Bytes<usize> for FileVolatileSlice<'_> {
183+
#[allow(clippy::needless_lifetimes)]
184+
impl<'a> Bytes<usize> for FileVolatileSlice<'a> {
184185
type E = VError;
185186

186187
fn write(&self, buf: &[u8], addr: usize) -> Result<usize, Self::E> {

Diff for: src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// SPDX-License-Identifier: Apache-2.0
55

66
#![deny(missing_docs)]
7+
#![allow(unexpected_cfgs)]
78

89
//! A rust library for Fuse(filesystem in userspace) servers and virtio-fs devices.
910
//!

Diff for: src/passthrough/file_handle.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ mod tests {
328328
buf: Vec<libc::c_char>,
329329
) -> CFileHandle {
330330
let mut wrapper = CFileHandle::new(handle_bytes);
331-
let fh = wrapper.wrapper.as_mut_fam_struct();
331+
let fh = unsafe { wrapper.wrapper.as_mut_fam_struct() };
332332
fh.handle_type = handle_type;
333333
unsafe {
334334
fh.f_handle
@@ -401,7 +401,7 @@ mod tests {
401401
fn test_c_file_handle_wrapper() {
402402
let buf = (0..=127).collect::<Vec<libc::c_char>>();
403403
let mut wrapper = generate_c_file_handle(MAX_HANDLE_SIZE, 3, buf.clone());
404-
let fh = wrapper.wrapper.as_mut_fam_struct();
404+
let fh = unsafe { wrapper.wrapper.as_mut_fam_struct() };
405405

406406
assert_eq!(fh.handle_bytes as usize, MAX_HANDLE_SIZE);
407407
assert_eq!(fh.handle_type, 3);

Diff for: src/transport/fs_cache_req_handler.rs

+10-10
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ mod virtiofs {
1616

1717
#[cfg(feature = "vhost-user-fs")]
1818
use vhost::vhost_user::message::{
19-
VhostUserFSSlaveMsg, VhostUserFSSlaveMsgFlags, VHOST_USER_FS_SLAVE_ENTRIES,
19+
VhostUserFSBackendMsg, VhostUserFSBackendMsgFlags, VHOST_USER_FS_BACKEND_ENTRIES,
2020
};
2121
#[cfg(feature = "vhost-user-fs")]
22-
use vhost::vhost_user::{SlaveFsCacheReq, VhostUserMasterReqHandler};
22+
use vhost::vhost_user::{Backend, VhostUserFrontendReqHandler};
2323

2424
use crate::abi::virtio_fs::RemovemappingOne;
2525
#[cfg(feature = "vhost-user-fs")]
@@ -54,7 +54,7 @@ mod virtiofs {
5454
}
5555

5656
#[cfg(feature = "vhost-user-fs")]
57-
impl FsCacheReqHandler for SlaveFsCacheReq {
57+
impl FsCacheReqHandler for Backend {
5858
fn map(
5959
&mut self,
6060
foffset: u64,
@@ -63,31 +63,31 @@ mod virtiofs {
6363
flags: u64,
6464
fd: RawFd,
6565
) -> io::Result<()> {
66-
let mut msg: VhostUserFSSlaveMsg = Default::default();
66+
let mut msg: VhostUserFSBackendMsg = Default::default();
6767
msg.fd_offset[0] = foffset;
6868
msg.cache_offset[0] = moffset;
6969
msg.len[0] = len;
7070
msg.flags[0] = if (flags & SetupmappingFlags::WRITE.bits()) != 0 {
71-
VhostUserFSSlaveMsgFlags::MAP_W | VhostUserFSSlaveMsgFlags::MAP_R
71+
VhostUserFSBackendMsgFlags::MAP_W | VhostUserFSBackendMsgFlags::MAP_R
7272
} else {
73-
VhostUserFSSlaveMsgFlags::MAP_R
73+
VhostUserFSBackendMsgFlags::MAP_R
7474
};
7575

76-
self.fs_slave_map(&msg, &fd)?;
76+
self.fs_backend_map(&msg, &fd)?;
7777

7878
Ok(())
7979
}
8080

8181
fn unmap(&mut self, requests: Vec<RemovemappingOne>) -> io::Result<()> {
82-
for chunk in requests.chunks(VHOST_USER_FS_SLAVE_ENTRIES) {
83-
let mut msg: VhostUserFSSlaveMsg = Default::default();
82+
for chunk in requests.chunks(VHOST_USER_FS_BACKEND_ENTRIES) {
83+
let mut msg: VhostUserFSBackendMsg = Default::default();
8484

8585
for (ind, req) in chunk.iter().enumerate() {
8686
msg.len[ind] = req.len;
8787
msg.cache_offset[ind] = req.moffset;
8888
}
8989

90-
self.fs_slave_unmap(&msg)?;
90+
self.fs_backend_unmap(&msg)?;
9191
}
9292

9393
Ok(())

Diff for: src/transport/fusedev/fuse_t_session.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ fn fuse_kern_mount(
416416
cmd.arg("-r");
417417
}
418418
cmd.arg(mountpoint);
419-
cmd.exec();
419+
let _ = cmd.exec();
420420
panic!("never arrive here")
421421
}
422422
}

Diff for: src/transport/fusedev/macos_session.rs

+9-3
Original file line numberDiff line numberDiff line change
@@ -395,8 +395,14 @@ fn create_disk(mountpoint: &Path, dasession: DASessionRef) -> DADiskRef {
395395
let url =
396396
CFURLCreateWithFileSystemPath(std::ptr::null(), url_str, kCFURLPOSIXPathStyle, 1u8);
397397
let disk = DADiskCreateFromVolumePath(std::ptr::null(), dasession, url);
398-
CFRelease(std::mem::transmute(url_str));
399-
CFRelease(std::mem::transmute(url));
398+
CFRelease(std::mem::transmute::<
399+
*const core_foundation_sys::string::__CFString,
400+
*const libc::c_void,
401+
>(url_str));
402+
CFRelease(std::mem::transmute::<
403+
*const core_foundation_sys::url::__CFURL,
404+
*const libc::c_void,
405+
>(url));
400406
disk
401407
}
402408
}
@@ -419,7 +425,7 @@ fn fuse_kern_umount(file: File, disk: Option<DADiskRef>) -> Result<()> {
419425
None,
420426
std::ptr::null_mut(),
421427
);
422-
CFRelease(std::mem::transmute(disk));
428+
CFRelease(std::mem::transmute::<DADiskRef, *const libc::c_void>(disk));
423429
}
424430
}
425431
Ok(())

Diff for: src/transport/mod.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -797,27 +797,29 @@ mod tests {
797797
#[test]
798798
fn test_mark_dirty() {
799799
let mut buf1 = vec![0x0u8; 16];
800-
let bitmap1 = AtomicBitmap::new(16, 2);
800+
let bitmap1 = AtomicBitmap::new(16, std::num::NonZero::new(2).unwrap());
801801

802802
assert_eq!(bitmap1.len(), 8);
803803
for i in 0..8 {
804804
assert_eq!(bitmap1.is_bit_set(i), false);
805805
}
806806

807807
let mut buf2 = vec![0x0u8; 16];
808-
let bitmap2 = AtomicBitmap::new(16, 2);
808+
let bitmap2 = AtomicBitmap::new(16, std::num::NonZero::new(2).unwrap());
809809
let mut bufs = VecDeque::new();
810810

811811
unsafe {
812812
bufs.push_back(VolatileSlice::with_bitmap(
813813
buf1.as_mut_ptr(),
814814
buf1.len(),
815815
bitmap1.slice_at(0),
816+
None,
816817
));
817818
bufs.push_back(VolatileSlice::with_bitmap(
818819
buf2.as_mut_ptr(),
819820
buf2.len(),
820821
bitmap2.slice_at(0),
822+
None,
821823
));
822824
}
823825
let mut buffers = IoBuffers {

Diff for: src/transport/virtiofs/mod.rs

-1
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,6 @@ mod async_io {
388388

389389
/// Disabled since vm-virtio doesn't export any DescriptorChain constructors.
390390
/// Should re-enable once it does.
391-
#[allow(unexpected_cfgs)]
392391
#[cfg(testff)]
393392
mod tests {
394393
use super::*;

0 commit comments

Comments
 (0)