src/tools/disks.rs: new helper to reread partition table
This commit is contained in:
parent
2b388026f8
commit
044055062c
|
@ -837,6 +837,29 @@ pub fn get_disks(
|
||||||
Ok(result)
|
Ok(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Try to reload the partition table
|
||||||
|
pub fn reread_partition_table(disk: &Disk) -> Result<(), Error> {
|
||||||
|
|
||||||
|
const BLOCKDEV_BIN_PATH: &str = "/sbin/blockdev";
|
||||||
|
|
||||||
|
let disk_path = match disk.device_path() {
|
||||||
|
Some(path) => path,
|
||||||
|
None => bail!("disk {:?} has no node in /dev", disk.syspath()),
|
||||||
|
};
|
||||||
|
|
||||||
|
let mut command = std::process::Command::new(BLOCKDEV_BIN_PATH);
|
||||||
|
command.arg("--rereadpt");
|
||||||
|
command.arg(disk_path);
|
||||||
|
|
||||||
|
let output = command.output()
|
||||||
|
.map_err(|err| format_err!("failed to execute '{}' - {}", BLOCKDEV_BIN_PATH, err))?;
|
||||||
|
|
||||||
|
crate::tools::command_output(output, None)
|
||||||
|
.map_err(|err| format_err!("re-read partition table failed: {}", err))?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
/// Initialize disk by writing a GPT partition table
|
/// Initialize disk by writing a GPT partition table
|
||||||
pub fn inititialize_gpt_disk(disk: &Disk, uuid: Option<&str>) -> Result<(), Error> {
|
pub fn inititialize_gpt_disk(disk: &Disk, uuid: Option<&str>) -> Result<(), Error> {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue