Skip to content

Commit 589160a

Browse files
committed
refactor: cleanup vsock DeviceError and QueueError
Add a #[from] to DeviceError to avoid a couple unnecessary map_err() calls, remove an unneeded variant from QueueError, and delete two unused functions. Signed-off-by: Patrick Roy <[email protected]>
1 parent 12f85ba commit 589160a

File tree

4 files changed

+6
-34
lines changed

4 files changed

+6
-34
lines changed

src/vmm/src/devices/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ pub enum DeviceError {
4545
/// Device received malformed descriptor.
4646
MalformedDescriptor,
4747
/// Error during queue processing: {0}
48-
QueueError(QueueError),
48+
QueueError(#[from] QueueError),
4949
/// Vsock device error: {0}
50-
VsockError(VsockError),
50+
VsockError(#[from] VsockError),
5151
}

src/vmm/src/devices/virtio/net/device.rs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -701,19 +701,15 @@ impl Net {
701701
// are live at the same time, meaning this has exclusive ownership over the memory
702702
if unsafe { self.tx_buffer.load_descriptor_chain(mem, head).is_err() } {
703703
self.metrics.tx_fails.inc();
704-
tx_queue
705-
.add_used(head_index, 0)
706-
.map_err(DeviceError::QueueError)?;
704+
tx_queue.add_used(head_index, 0)?;
707705
continue;
708706
};
709707

710708
// We only handle frames that are up to MAX_BUFFER_SIZE
711709
if self.tx_buffer.len() as usize > MAX_BUFFER_SIZE {
712710
error!("net: received too big frame from driver");
713711
self.metrics.tx_malformed_frames.inc();
714-
tx_queue
715-
.add_used(head_index, 0)
716-
.map_err(DeviceError::QueueError)?;
712+
tx_queue.add_used(head_index, 0)?;
717713
continue;
718714
}
719715

@@ -741,9 +737,7 @@ impl Net {
741737
process_rx_for_mmds = true;
742738
}
743739

744-
tx_queue
745-
.add_used(head_index, 0)
746-
.map_err(DeviceError::QueueError)?;
740+
tx_queue.add_used(head_index, 0)?;
747741
used_any = true;
748742
}
749743

src/vmm/src/devices/virtio/net/test_utils.rs

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,11 @@ use std::str::FromStr;
1212
use std::sync::atomic::{AtomicUsize, Ordering};
1313
use std::sync::{Arc, Mutex};
1414

15-
use crate::devices::DeviceError;
1615
use crate::devices::virtio::net::Net;
1716
#[cfg(test)]
1817
use crate::devices::virtio::net::device::vnet_hdr_len;
1918
use crate::devices::virtio::net::tap::{IfReqBuilder, Tap};
20-
use crate::devices::virtio::queue::{Queue, QueueError};
19+
use crate::devices::virtio::queue::Queue;
2120
use crate::devices::virtio::test_utils::VirtQueue;
2221
use crate::mmds::data_store::Mmds;
2322
use crate::mmds::ns::MmdsNetworkStack;
@@ -265,25 +264,6 @@ pub(crate) fn inject_tap_tx_frame(net: &Net, len: usize) -> Vec<u8> {
265264
frame
266265
}
267266

268-
pub fn write_element_in_queue(net: &Net, idx: u16, val: u64) -> Result<(), DeviceError> {
269-
if idx as usize > net.queue_evts.len() {
270-
return Err(DeviceError::QueueError(QueueError::DescIndexOutOfBounds(
271-
idx,
272-
)));
273-
}
274-
net.queue_evts[idx as usize].write(val).unwrap();
275-
Ok(())
276-
}
277-
278-
pub fn get_element_from_queue(net: &Net, idx: u16) -> Result<u64, DeviceError> {
279-
if idx as usize > net.queue_evts.len() {
280-
return Err(DeviceError::QueueError(QueueError::DescIndexOutOfBounds(
281-
idx,
282-
)));
283-
}
284-
Ok(u64::try_from(net.queue_evts[idx as usize].as_raw_fd()).unwrap())
285-
}
286-
287267
pub fn default_guest_mac() -> MacAddr {
288268
MacAddr::from_str("11:22:33:44:55:66").unwrap()
289269
}

src/vmm/src/devices/virtio/queue.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ pub(super) const FIRECRACKER_MAX_QUEUE_SIZE: u16 = 256;
2828

2929
#[derive(Debug, thiserror::Error, displaydoc::Display)]
3030
pub enum QueueError {
31-
/// Virtio queue number of available descriptors {0} is greater than queue size {1}.
32-
InvalidQueueSize(u16, u16),
3331
/// Descriptor index out of bounds: {0}.
3432
DescIndexOutOfBounds(u16),
3533
/// Failed to write value into the virtio queue used ring: {0}

0 commit comments

Comments
 (0)