btrfs_cli/rescue/
create_control_device.rs1use crate::{RunContext, Runnable};
2use anyhow::{Context, Result};
3use clap::Parser;
4use std::ffi::CString;
5
6#[derive(Parser, Debug)]
13pub struct RescueCreateControlDeviceCommand {}
14
15impl Runnable for RescueCreateControlDeviceCommand {
16 fn run(&self, _ctx: &RunContext) -> Result<()> {
17 const PATH: &str = "/dev/btrfs-control";
18 let dev = libc::makedev(10, 234);
19 let path = CString::new(PATH).unwrap();
20 let ret =
22 unsafe { libc::mknod(path.as_ptr(), libc::S_IFCHR | 0o600, dev) };
23 if ret != 0 {
24 return Err(std::io::Error::last_os_error())
25 .with_context(|| format!("could not create {PATH}"));
26 }
27 Ok(())
28 }
29}