(dev: &Utf8Path)
| 455 | |
| 456 | #[context("Listing device {dev}")] |
| 457 | pub fn list_dev(dev: &Utf8Path) -> Result<Device> { |
| 458 | let mut devs: DevicesOutput = Command::new("lsblk") |
| 459 | .args(["-J", "-b", "-O"]) |
| 460 | .arg(dev) |
| 461 | .log_debug() |
| 462 | .run_and_parse_json()?; |
| 463 | for dev in devs.blockdevices.iter_mut() { |
| 464 | dev.backfill_missing()?; |
| 465 | } |
| 466 | devs.blockdevices |
| 467 | .into_iter() |
| 468 | .next() |
| 469 | .ok_or_else(|| anyhow!("no device output from lsblk for {dev}")) |
| 470 | } |
| 471 | |
| 472 | #[context("Finding block device for ZFS dataset {dataset}")] |
| 473 | fn list_dev_for_zfs_dataset(dataset: &str) -> Result<Device> { |
no test coverage detected