src/tools/disks.rs: add helper to list partitions
This commit is contained in:
parent
ca6124d5fa
commit
0f358204bd
|
@ -31,6 +31,7 @@ pub use smart::*;
|
||||||
pub const SGDISK_BIN_PATH: &str = "/usr/sbin/sgdisk";
|
pub const SGDISK_BIN_PATH: &str = "/usr/sbin/sgdisk";
|
||||||
pub const LSBLK_BIN_PATH: &str = "/usr/bin/lsblk";
|
pub const LSBLK_BIN_PATH: &str = "/usr/bin/lsblk";
|
||||||
pub const BLOCKDEV_BIN_PATH: &str = "/sbin/blockdev";
|
pub const BLOCKDEV_BIN_PATH: &str = "/sbin/blockdev";
|
||||||
|
pub const MKFS_BIN_PATH: &str = "/sbin/mkfs";
|
||||||
|
|
||||||
lazy_static::lazy_static!{
|
lazy_static::lazy_static!{
|
||||||
static ref ISCSI_PATH_REGEX: regex::Regex =
|
static ref ISCSI_PATH_REGEX: regex::Regex =
|
||||||
|
@ -476,6 +477,36 @@ impl Disk {
|
||||||
}
|
}
|
||||||
Ok(None)
|
Ok(None)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// List device partitions
|
||||||
|
pub fn partitions(&self) -> Result<HashMap<u64, Disk>, Error> {
|
||||||
|
|
||||||
|
let sys_path = self.syspath();
|
||||||
|
let device = self.sysname().to_string_lossy().to_string();
|
||||||
|
|
||||||
|
let mut map = HashMap::new();
|
||||||
|
|
||||||
|
for item in crate::tools::fs::read_subdir(libc::AT_FDCWD, sys_path)? {
|
||||||
|
let item = item?;
|
||||||
|
let name = match item.file_name().to_str() {
|
||||||
|
Ok(name) => name,
|
||||||
|
Err(_) => continue, // skip non utf8 entries
|
||||||
|
};
|
||||||
|
|
||||||
|
if !name.starts_with(&device) { continue; }
|
||||||
|
|
||||||
|
let mut part_path = sys_path.to_owned();
|
||||||
|
part_path.push(name);
|
||||||
|
|
||||||
|
let disk_part = self.manager.clone().disk_by_sys_path(&part_path)?;
|
||||||
|
|
||||||
|
if let Some(partition) = disk_part.read_sys_u64("partition")? {
|
||||||
|
map.insert(partition, disk_part);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(map)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns disk usage information (total, used, avail)
|
/// Returns disk usage information (total, used, avail)
|
||||||
|
|
Loading…
Reference in New Issue