Skip to content

Commit 47abec7

Browse files
committed
fix and improve
1 parent fa469c9 commit 47abec7

File tree

4 files changed

+12
-34
lines changed

4 files changed

+12
-34
lines changed

openhcl/underhill_core/src/inspect_internal.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,16 @@ use pal_async::task::Spawn;
4444
pub(crate) fn inspect_internal_diagnostics(
4545
req: Request<'_>,
4646
reinspect: &Sender<Deferred>,
47-
driver: DefaultDriver,
47+
driver: &DefaultDriver,
4848
) {
4949
req.respond()
5050
.sensitivity_field("build_info", SensitivityLevel::Safe, build_info::get())
5151
.sensitivity_child("net", SensitivityLevel::Safe, |req| {
52-
net(req, reinspect, driver)
52+
net(req, reinspect.clone(), driver)
5353
});
5454
}
5555

56-
fn net(req: Request<'_>, reinspect: &Sender<Deferred>, driver: DefaultDriver) {
56+
fn net(req: Request<'_>, reinspect: Sender<Deferred>, driver: &DefaultDriver) {
5757
let defer = req.defer();
5858
let driver2 = driver.clone();
5959
driver
@@ -83,7 +83,7 @@ fn net(req: Request<'_>, reinspect: &Sender<Deferred>, driver: DefaultDriver) {
8383

8484
// The existence of a mac address is always known to the host, so this can always be Safe.
8585
resp.sensitivity_child(&mac_name, SensitivityLevel::Safe, |req| {
86-
net_nic(req, nic_entry.name, reinspect, driver2.clone());
86+
net_nic(req, nic_entry.name, reinspect.clone(), &driver2);
8787
});
8888
}
8989
})
@@ -93,7 +93,7 @@ fn net(req: Request<'_>, reinspect: &Sender<Deferred>, driver: DefaultDriver) {
9393

9494
// net/mac_address
9595
// Format for mac address is no separators, lowercase letters, e.g. 00155d121212.
96-
fn net_nic(req: Request<'_>, name: String, reinspect: &Sender<Deferred>, driver: DefaultDriver) {
96+
fn net_nic(req: Request<'_>, name: String, reinspect: Sender<Deferred>, driver: &DefaultDriver) {
9797
let defer = req.defer();
9898
driver
9999
.spawn("inspect-diagnostics-net-nic", async move {
@@ -103,7 +103,7 @@ fn net_nic(req: Request<'_>, name: String, reinspect: &Sender<Deferred>, driver:
103103
let mut vm_inspection = InspectionBuilder::new(&format!("vm/{name}"))
104104
.depth(Some(5))
105105
.sensitivity(Some(SensitivityLevel::Sensitive))
106-
.inspect(inspect::send(reinspect, |req| req));
106+
.inspect(inspect::send(&reinspect, |req| req));
107107
vm_inspection.resolve().await;
108108

109109
if let Node::Dir(nodes) = vm_inspection.results() {

openhcl/underhill_core/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ async fn run_control(
546546
inspect_internal::inspect_internal_diagnostics(
547547
req,
548548
&diag_reinspect_send,
549-
driver.clone(),
549+
&driver,
550550
)
551551
});
552552

openhcl/underhill_core/src/nvme_manager/device.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -334,16 +334,13 @@ impl NvmeDriverManager {
334334

335335
#[derive(Inspect, Debug, Clone)]
336336
pub struct NvmeDriverManagerClient {
337-
pci_id: String,
338337
#[inspect(skip)]
338+
pci_id: String,
339+
#[inspect(flatten, send = "NvmeDriverRequest::Inspect")]
339340
sender: mesh::Sender<NvmeDriverRequest>,
340341
}
341342

342343
impl NvmeDriverManagerClient {
343-
pub fn send_inspect(&self, deferred: Deferred) {
344-
self.sender.send(NvmeDriverRequest::Inspect(deferred));
345-
}
346-
347344
pub async fn get_namespace(&self, nsid: u32) -> anyhow::Result<nvme_driver::Namespace> {
348345
let span = tracing::info_span!(
349346
"nvme_device_manager_get_namespace",

openhcl/underhill_core/src/nvme_manager/manager.rs

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -198,40 +198,21 @@ struct NvmeWorkerContext {
198198
save_restore_supported: bool,
199199
#[inspect(skip)]
200200
driver_source: VmTaskDriverSource,
201-
#[inspect(skip)]
201+
#[inspect(with = "|x| inspect::adhoc(|req| inspect::iter_by_key(&*x.read()).inspect(req))")]
202202
devices: Arc<RwLock<HashMap<String, NvmeDriverManager>>>,
203203
#[inspect(skip)]
204204
nvme_driver_spawner: Arc<dyn CreateNvmeDriver>,
205205
}
206206

207207
#[derive(Inspect)]
208-
#[inspect(extra = "NvmeManagerWorker::inspect_extra")]
209208
struct NvmeManagerWorker {
210-
#[inspect(skip)]
209+
#[inspect(with = "Vec::len")]
211210
tasks: Vec<Task<()>>,
211+
#[inspect(flatten)]
212212
context: NvmeWorkerContext,
213213
}
214214

215215
impl NvmeManagerWorker {
216-
fn inspect_extra(&self, resp: &mut inspect::Response<'_>) {
217-
resp.child("outstanding-tasks", |req| {
218-
req.value(self.tasks.len());
219-
});
220-
221-
resp.child("devices", |req| {
222-
let devices = self.context.devices.read();
223-
let mut resp = req.respond();
224-
for (pci_id, driver) in devices.iter() {
225-
resp.field(
226-
pci_id,
227-
inspect::adhoc(|req| {
228-
driver.client().send_inspect(req.defer());
229-
}),
230-
);
231-
}
232-
});
233-
}
234-
235216
async fn run(&mut self, mut recv: mesh::Receiver<Request>) {
236217
let (join_span, nvme_keepalive) = loop {
237218
let Some(req) = recv.next().await else {

0 commit comments

Comments
 (0)