Skip to content

Commit 94ebc63

Browse files
committed
chore: avoid IrqTrigger::new().unwrap()
`IrqTrigger::new()` returns a `Result` because creating an `EventFd` might fail with an `std::io::Error` error. All users of `IrqTrigger` create the object and directly unwrap the error. To avoid unwraps all over the place, change `IrqTrigger::new()` to unwrap a potential error while creating the EventFd internally and just return `Self`. Signed-off-by: Babis Chalios <bchalios@amazon.es>
1 parent 1e08025 commit 94ebc63

File tree

10 files changed

+22
-15
lines changed

10 files changed

+22
-15
lines changed

src/vmm/src/device_manager/mmio.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -585,7 +585,7 @@ mod tests {
585585
dummy: 0,
586586
queues: QUEUE_SIZES.iter().map(|&s| Queue::new(s)).collect(),
587587
queue_evts: [EventFd::new(libc::EFD_NONBLOCK).expect("cannot create eventFD")],
588-
interrupt_trigger: IrqTrigger::new().expect("cannot create eventFD"),
588+
interrupt_trigger: IrqTrigger::new(),
589589
}
590590
}
591591
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ impl Balloon {
242242
},
243243
queue_evts,
244244
queues,
245-
irq_trigger: IrqTrigger::new().map_err(BalloonError::EventFd)?,
245+
irq_trigger: IrqTrigger::new(),
246246
device_state: DeviceState::Inactive,
247247
activate_evt: EventFd::new(libc::EFD_NONBLOCK).map_err(BalloonError::EventFd)?,
248248
restored_from_file,

src/vmm/src/devices/virtio/block/vhost_user/device.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ impl<T: VhostUserHandleBackend> VhostUserBlockImpl<T> {
204204
let queue_evts = [EventFd::new(libc::EFD_NONBLOCK).map_err(VhostUserBlockError::EventFd)?;
205205
u64_to_usize(NUM_QUEUES)];
206206
let device_state = DeviceState::Inactive;
207-
let irq_trigger = IrqTrigger::new().map_err(VhostUserBlockError::IrqTrigger)?;
207+
let irq_trigger = IrqTrigger::new();
208208

209209
// We negotiated features with backend. Now these acked_features
210210
// are available for guest driver to choose from.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ impl VirtioBlock {
323323
queues,
324324
queue_evts,
325325
device_state: DeviceState::Inactive,
326-
irq_trigger: IrqTrigger::new().map_err(VirtioBlockError::IrqTrigger)?,
326+
irq_trigger: IrqTrigger::new(),
327327

328328
id: config.drive_id.clone(),
329329
partuuid: config.partuuid,

src/vmm/src/devices/virtio/block/virtio/persist.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ impl Persist<'_> for VirtioBlock {
112112
)
113113
.map_err(VirtioBlockError::Persist)?;
114114

115-
let mut irq_trigger = IrqTrigger::new().map_err(VirtioBlockError::IrqTrigger)?;
115+
let mut irq_trigger = IrqTrigger::new();
116116
irq_trigger.irq_status = Arc::new(AtomicU32::new(state.virtio_state.interrupt_status));
117117

118118
let avail_features = state.virtio_state.avail_features;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ impl Net {
314314
tx_rate_limiter,
315315
rx_frame_buf: [0u8; MAX_BUFFER_SIZE],
316316
tx_frame_headers: [0u8; frame_hdr_len()],
317-
irq_trigger: IrqTrigger::new().map_err(NetError::EventFd)?,
317+
irq_trigger: IrqTrigger::new(),
318318
config_space,
319319
guest_mac,
320320
device_state: DeviceState::Inactive,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ impl Entropy {
7070
let queue_events = (0..RNG_NUM_QUEUES)
7171
.map(|_| EventFd::new(libc::EFD_NONBLOCK))
7272
.collect::<Result<Vec<EventFd>, io::Error>>()?;
73-
let irq_trigger = IrqTrigger::new()?;
73+
let irq_trigger = IrqTrigger::new();
7474

7575
Ok(Self {
7676
avail_features: 1 << VIRTIO_F_VERSION_1,

src/vmm/src/devices/virtio/transport/mmio.rs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -381,12 +381,19 @@ pub struct IrqTrigger {
381381
pub(crate) irq_evt: EventFd,
382382
}
383383

384+
impl Default for IrqTrigger {
385+
fn default() -> Self {
386+
Self::new()
387+
}
388+
}
389+
384390
impl IrqTrigger {
385-
pub fn new() -> std::io::Result<Self> {
386-
Ok(Self {
391+
pub fn new() -> Self {
392+
Self {
387393
irq_status: Arc::new(AtomicU32::new(0)),
388-
irq_evt: EventFd::new(libc::EFD_NONBLOCK)?,
389-
})
394+
irq_evt: EventFd::new(libc::EFD_NONBLOCK)
395+
.expect("Could not create EventFd for IrqTrigger"),
396+
}
390397
}
391398

392399
pub fn trigger_irq(&self, irq_type: IrqType) -> Result<(), std::io::Error> {
@@ -434,7 +441,7 @@ pub(crate) mod tests {
434441
DummyDevice {
435442
acked_features: 0,
436443
avail_features: 0,
437-
interrupt_trigger: IrqTrigger::new().unwrap(),
444+
interrupt_trigger: IrqTrigger::new(),
438445
queue_evts: vec![
439446
EventFd::new(libc::EFD_NONBLOCK).unwrap(),
440447
EventFd::new(libc::EFD_NONBLOCK).unwrap(),
@@ -1047,7 +1054,7 @@ pub(crate) mod tests {
10471054

10481055
#[test]
10491056
fn irq_trigger() {
1050-
let irq_trigger = IrqTrigger::new().unwrap();
1057+
let irq_trigger = IrqTrigger::new();
10511058
assert_eq!(irq_trigger.irq_status.load(Ordering::SeqCst), 0);
10521059

10531060
// Check that there are no pending irqs.

src/vmm/src/devices/virtio/vhost_user.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -899,7 +899,7 @@ pub(crate) mod tests {
899899
queue.initialize(&guest_memory).unwrap();
900900

901901
let event_fd = EventFd::new(0).unwrap();
902-
let irq_trigger = IrqTrigger::new().unwrap();
902+
let irq_trigger = IrqTrigger::new();
903903

904904
let queues = [(0, &queue, &event_fd)];
905905

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ where
103103
backend,
104104
avail_features: AVAIL_FEATURES,
105105
acked_features: 0,
106-
irq_trigger: IrqTrigger::new().map_err(VsockError::EventFd)?,
106+
irq_trigger: IrqTrigger::new(),
107107
activate_evt: EventFd::new(libc::EFD_NONBLOCK).map_err(VsockError::EventFd)?,
108108
device_state: DeviceState::Inactive,
109109
rx_packet: VsockPacketRx::new()?,

0 commit comments

Comments
 (0)