api2/node/disks/zfs: instantiate import service
When creating a new zpool for a datastore, also instantiate an import-unit for it. This helps in cases where '/etc/zfs/zool.cache' get corrupted and thus the pool is not imported upon boot. This patch needs the corresponding addition of 'zfs-import@.service' in the zfsonlinux repository. Suggested-by: Fabian Grünbichler <f.gruenbichler@proxmox.com> Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
This commit is contained in:
parent
0c41e0d06b
commit
905147a5ee
|
@ -25,6 +25,8 @@ use crate::server::WorkerTask;
|
||||||
|
|
||||||
use crate::api2::types::*;
|
use crate::api2::types::*;
|
||||||
|
|
||||||
|
use crate::tools::systemd;
|
||||||
|
|
||||||
pub const DISK_ARRAY_SCHEMA: Schema = ArraySchema::new(
|
pub const DISK_ARRAY_SCHEMA: Schema = ArraySchema::new(
|
||||||
"Disk name list.", &BLOCKDEVICE_NAME_SCHEMA)
|
"Disk name list.", &BLOCKDEVICE_NAME_SCHEMA)
|
||||||
.schema();
|
.schema();
|
||||||
|
@ -355,6 +357,9 @@ pub fn create_zpool(
|
||||||
let output = crate::tools::run_command(command, None)?;
|
let output = crate::tools::run_command(command, None)?;
|
||||||
worker.log(output);
|
worker.log(output);
|
||||||
|
|
||||||
|
let import_unit = format!("zfs-import@{}.service", systemd::escape_unit(&name, false));
|
||||||
|
systemd::enable_unit(&import_unit)?;
|
||||||
|
|
||||||
if let Some(compression) = compression {
|
if let Some(compression) = compression {
|
||||||
let mut command = std::process::Command::new("zfs");
|
let mut command = std::process::Command::new("zfs");
|
||||||
command.args(&["set", &format!("compression={}", compression), &name]);
|
command.args(&["set", &format!("compression={}", compression), &name]);
|
||||||
|
|
Loading…
Reference in New Issue