Add systemd-unit for importing specific pools
This patch addresses the problems some users experience when some zpools are created/imported with cachefile (which then causes other pools not to get imported during boot) - when our tooling creates a pool we explictly instantiate the service with the pool's name, ensuring that it will get imported by scanning. Suggested-by: Fabian Grünbichler <f.gruenbichler@proxmox.com> Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
This commit is contained in:
		
							parent
							
								
									38e2c8078f
								
							
						
					
					
						commit
						e3da0bd88a
					
				
							
								
								
									
										75
									
								
								debian/patches/0008-Add-systemd-unit-for-importing-specific-pools.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								debian/patches/0008-Add-systemd-unit-for-importing-specific-pools.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,75 @@ | ||||
| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||||
| From: Stoiko Ivanov <s.ivanov@proxmox.com> | ||||
| 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. | ||||
| 
 | ||||
| Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com> | ||||
| ---
 | ||||
|  etc/systemd/system/50-zfs.preset.in       |  1 + | ||||
|  etc/systemd/system/Makefile.am            |  2 ++ | ||||
|  etc/systemd/system/zfs-import@.service.in | 17 +++++++++++++++++ | ||||
|  3 files changed, 20 insertions(+) | ||||
|  create mode 100644 etc/systemd/system/zfs-import@.service.in | ||||
| 
 | ||||
| diff --git a/etc/systemd/system/50-zfs.preset.in b/etc/systemd/system/50-zfs.preset.in
 | ||||
| index e4056a92c..030611419 100644
 | ||||
| --- a/etc/systemd/system/50-zfs.preset.in
 | ||||
| +++ b/etc/systemd/system/50-zfs.preset.in
 | ||||
| @@ -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/Makefile.am b/etc/systemd/system/Makefile.am
 | ||||
| index 4e14467a0..ae72102af 100644
 | ||||
| --- a/etc/systemd/system/Makefile.am
 | ||||
| +++ b/etc/systemd/system/Makefile.am
 | ||||
| @@ -5,6 +5,7 @@ systemdunit_DATA = \
 | ||||
|  	zfs-zed.service \ | ||||
|  	zfs-import-cache.service \ | ||||
|  	zfs-import-scan.service \ | ||||
| +	zfs-import@.service \
 | ||||
|  	zfs-mount.service \ | ||||
|  	zfs-share.service \ | ||||
|  	zfs-volume-wait.service \ | ||||
| @@ -16,6 +17,7 @@ EXTRA_DIST = \
 | ||||
|  	$(top_srcdir)/etc/systemd/system/zfs-zed.service.in \ | ||||
|  	$(top_srcdir)/etc/systemd/system/zfs-import-cache.service.in \ | ||||
|  	$(top_srcdir)/etc/systemd/system/zfs-import-scan.service.in \ | ||||
| +	$(top_srcdir)/etc/systemd/system/zfs-import@.service.in \
 | ||||
|  	$(top_srcdir)/etc/systemd/system/zfs-mount.service.in \ | ||||
|  	$(top_srcdir)/etc/systemd/system/zfs-share.service.in \ | ||||
|  	$(top_srcdir)/etc/systemd/system/zfs-import.target.in \ | ||||
| diff --git a/etc/systemd/system/zfs-import@.service.in b/etc/systemd/system/zfs-import@.service.in
 | ||||
| new file mode 100644 | ||||
| index 000000000..2db9fdaab
 | ||||
| --- /dev/null
 | ||||
| +++ b/etc/systemd/system/zfs-import@.service.in
 | ||||
| @@ -0,0 +1,17 @@
 | ||||
| +[Unit]
 | ||||
| +Description=Import ZFS pool %i
 | ||||
| +Documentation=man:zpool(8)
 | ||||
| +DefaultDependencies=no
 | ||||
| +Requires=systemd-udev-settle.service
 | ||||
| +After=systemd-udev-settle.service
 | ||||
| +After=cryptsetup.target
 | ||||
| +After=multipathd.target
 | ||||
| +Before=zfs-import.target
 | ||||
| +
 | ||||
| +[Service]
 | ||||
| +Type=oneshot
 | ||||
| +RemainAfterExit=yes
 | ||||
| +ExecStart=@sbindir@/zpool import -N -d /dev/disk/by-id -o cachefile=none %I
 | ||||
| +
 | ||||
| +[Install]
 | ||||
| +WantedBy=zfs-import.target
 | ||||
							
								
								
									
										1
									
								
								debian/patches/series
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								debian/patches/series
									
									
									
									
										vendored
									
									
								
							| @ -5,3 +5,4 @@ | ||||
| 0005-Enable-zed-emails.patch | ||||
| 0006-dont-symlink-zed-scripts.patch | ||||
| 0007-Use-installed-python3.patch | ||||
| 0008-Add-systemd-unit-for-importing-specific-pools.patch | ||||
|  | ||||
							
								
								
									
										1
									
								
								debian/zfsutils-linux.install
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								debian/zfsutils-linux.install
									
									
									
									
										vendored
									
									
								
							| @ -5,6 +5,7 @@ etc/zfs/zpool.d/ | ||||
| lib/systemd/system-preset/ | ||||
| lib/systemd/system/zfs-import-cache.service | ||||
| lib/systemd/system/zfs-import-scan.service | ||||
| lib/systemd/system/zfs-import@.service | ||||
| lib/systemd/system/zfs-import.target | ||||
| lib/systemd/system/zfs-import.service | ||||
| lib/systemd/system/zfs-mount.service | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Stoiko Ivanov
						Stoiko Ivanov