usbscsid: replace .unwrap() in runtime with explicit error handling

Two runtime .unwrap() calls in the event loop are replaced with
explicit error logging and process::exit(1):
1. event::EventQueue::new() — fail to create event queue
2. event_queue.subscribe() — fail to subscribe to scheme events

Previously these panicked the daemon if the event subsystem
was unavailable. Now they log a clear error and exit gracefully.

Resolves IMPROVEMENT-PLAN §3.6: 'usbscsid: Fix .expect() in runtime'.
This commit is contained in:
Red Bear OS
2026-07-09 00:24:40 +03:00
parent 70e0d79454
commit 46e70a5472
+16 -8
View File
@@ -2,6 +2,7 @@ use std::collections::BTreeMap;
use std::env;
use driver_block::{Disk, DiskScheme, ExecutorTrait};
use log::error;
use syscall::{Error, EIO};
use xhcid_interface::{ConfigureEndpointsReq, PortId, XhciClientHandle};
@@ -107,7 +108,13 @@ fn daemon(daemon: daemon::Daemon) -> ! {
println!("DISK CONTENT: {}", base64::encode(&buffer[..]));
}
let event_queue = event::EventQueue::new().unwrap();
let event_queue = match event::EventQueue::new() {
Ok(q) => q,
Err(e) => {
error!("usbscsid: failed to create event queue: {e}");
std::process::exit(1);
}
};
event::user_data! {
enum Event {
@@ -133,13 +140,14 @@ fn daemon(daemon: daemon::Daemon) -> ! {
//libredox::call::setrens(0, 0).expect("nvmed: failed to enter null namespace");
event_queue
.subscribe(
scheme.event_handle().raw(),
Event::Scheme,
event::EventFlags::READ,
)
.unwrap();
if let Err(e) = event_queue.subscribe(
scheme.event_handle().raw(),
Event::Scheme,
event::EventFlags::READ,
) {
error!("usbscsid: failed to subscribe to events: {e}");
std::process::exit(1);
}
for event in event_queue {
let event = match event {