From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Stoiko Ivanov Date: Tue, 15 Sep 2020 19:07:24 +0200 Subject: [PATCH] Add systemd-unit for importing specific pools The unit can be instantiated with a specific poolname, which will get imported by scanning /dev/disk/by-id, irrespective of the existence and content of /etc/zfs/zpool.cache. the instance name is used unescaped (see systemd.unit(5)), since zpool names can contain characters which will be escaped by systemd. Its instances are ordered before the other two "big" import services to avoid races and spurious (cosmetic!) service failures. Signed-off-by: Stoiko Ivanov Signed-off-by: Thomas Lamprecht --- etc/Makefile.am | 1 + etc/systemd/system/50-zfs.preset | 1 + etc/systemd/system/zfs-import@.service.in | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+) create mode 100644 etc/systemd/system/zfs-import@.service.in diff --git a/etc/Makefile.am b/etc/Makefile.am index 7187762d3..de131dc87 100644 --- a/etc/Makefile.am +++ b/etc/Makefile.am @@ -54,6 +54,7 @@ dist_systemdpreset_DATA = \ systemdunit_DATA = \ %D%/systemd/system/zfs-import-cache.service \ %D%/systemd/system/zfs-import-scan.service \ + %D%/systemd/system/zfs-import@.service \ %D%/systemd/system/zfs-import.target \ %D%/systemd/system/zfs-mount.service \ %D%/systemd/system/zfs-scrub-monthly@.timer \ diff --git a/etc/systemd/system/50-zfs.preset b/etc/systemd/system/50-zfs.preset index e4056a92c..030611419 100644 --- a/etc/systemd/system/50-zfs.preset +++ b/etc/systemd/system/50-zfs.preset @@ -1,6 +1,7 @@ # ZFS is enabled by default enable zfs-import-cache.service disable zfs-import-scan.service +enable zfs-import@.service enable zfs-import.target enable zfs-mount.service enable zfs-share.service diff --git a/etc/systemd/system/zfs-import@.service.in b/etc/systemd/system/zfs-import@.service.in new file mode 100644 index 000000000..5bd19fb79 --- /dev/null +++ b/etc/systemd/system/zfs-import@.service.in @@ -0,0 +1,18 @@ +[Unit] +Description=Import ZFS pool %i +Documentation=man:zpool(8) +DefaultDependencies=no +After=systemd-udev-settle.service +After=cryptsetup.target +After=multipathd.target +Before=zfs-import.target +Before=zfs-import-scan.service +Before=zfs-import-cache.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=@sbindir@/zpool import -N -d /dev/disk/by-id -o cachefile=none %I + +[Install] +WantedBy=zfs-import.target