mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	dracut: 90zfs: respect zfs_force=1 on systemd systems
On systemd systems provide an environment generator in order to respect the zfs_force=1 kernel command line option. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Tony Nguyen <tony.nguyen@delphix.com> Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz> Closes #11403 Closes #12195
This commit is contained in:
		
							parent
							
								
									efdfb14fc8
								
							
						
					
					
						commit
						8dc540ae16
					
				
							
								
								
									
										13
									
								
								contrib/dracut/90zfs/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								contrib/dracut/90zfs/.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,11 +1,2 @@ | |||||||
| export-zfs.sh | *.sh | ||||||
| module-setup.sh | *.service | ||||||
| mount-zfs.sh |  | ||||||
| parse-zfs.sh |  | ||||||
| zfs-generator.sh |  | ||||||
| zfs-lib.sh |  | ||||||
| zfs-load-key.sh |  | ||||||
| zfs-needshutdown.sh |  | ||||||
| zfs-env-bootfs.service |  | ||||||
| zfs-snapshot-bootfs.service |  | ||||||
| zfs-rollback-bootfs.service |  | ||||||
|  | |||||||
| @ -10,7 +10,8 @@ pkgdracut_SCRIPTS = \ | |||||||
| 	zfs-generator.sh \
 | 	zfs-generator.sh \
 | ||||||
| 	zfs-load-key.sh \
 | 	zfs-load-key.sh \
 | ||||||
| 	zfs-needshutdown.sh \
 | 	zfs-needshutdown.sh \
 | ||||||
| 	zfs-lib.sh | 	zfs-lib.sh \
 | ||||||
|  | 	import-opts-generator.sh | ||||||
| 
 | 
 | ||||||
| pkgdracut_DATA = \
 | pkgdracut_DATA = \
 | ||||||
| 	zfs-env-bootfs.service \
 | 	zfs-env-bootfs.service \
 | ||||||
|  | |||||||
							
								
								
									
										5
									
								
								contrib/dracut/90zfs/import-opts-generator.sh.in
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								contrib/dracut/90zfs/import-opts-generator.sh.in
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,5 @@ | |||||||
|  | #!/bin/sh | ||||||
|  | 
 | ||||||
|  | . /lib/dracut-zfs-lib.sh | ||||||
|  | 
 | ||||||
|  | echo ZPOOL_IMPORT_OPTS="$ZPOOL_IMPORT_OPTS" | ||||||
| @ -98,29 +98,40 @@ install() { | |||||||
| 
 | 
 | ||||||
| 	if dracut_module_included "systemd"; then | 	if dracut_module_included "systemd"; then | ||||||
| 		mkdir -p "${initdir}/$systemdsystemunitdir/zfs-import.target.wants" | 		mkdir -p "${initdir}/$systemdsystemunitdir/zfs-import.target.wants" | ||||||
| 		for _item in scan cache ; do | 		for _service in "zfs-import-scan.service" "zfs-import-cache.service" ; do | ||||||
| 			dracut_install @systemdunitdir@/zfs-import-$_item.service | 			dracut_install "@systemdunitdir@/$_service" | ||||||
| 			if ! [ -L "${initdir}/$systemdsystemunitdir/zfs-import.target.wants"/zfs-import-$_item.service ]; then | 			if ! [ -L "${initdir}/$systemdsystemunitdir/zfs-import.target.wants/$_service" ]; then | ||||||
| 				ln -s ../zfs-import-$_item.service "${initdir}/$systemdsystemunitdir/zfs-import.target.wants"/zfs-import-$_item.service | 				ln -sf ../$_service "${initdir}/$systemdsystemunitdir/zfs-import.target.wants/$_service" | ||||||
| 				type mark_hostonly >/dev/null 2>&1 && mark_hostonly @systemdunitdir@/zfs-import-$_item.service | 				type mark_hostonly >/dev/null 2>&1 && mark_hostonly "@systemdunitdir@/$_service" | ||||||
| 			fi | 			fi | ||||||
| 		done | 		done | ||||||
|  | 
 | ||||||
| 		inst "${moddir}"/zfs-env-bootfs.service "${systemdsystemunitdir}"/zfs-env-bootfs.service | 		inst "${moddir}"/zfs-env-bootfs.service "${systemdsystemunitdir}"/zfs-env-bootfs.service | ||||||
| 		ln -s ../zfs-env-bootfs.service "${initdir}/${systemdsystemunitdir}/zfs-import.target.wants"/zfs-env-bootfs.service | 		ln -s ../zfs-env-bootfs.service "${initdir}/${systemdsystemunitdir}/zfs-import.target.wants"/zfs-env-bootfs.service | ||||||
| 		type mark_hostonly >/dev/null 2>&1 && mark_hostonly @systemdunitdir@/zfs-env-bootfs.service | 		type mark_hostonly >/dev/null 2>&1 && mark_hostonly @systemdunitdir@/zfs-env-bootfs.service | ||||||
|  | 
 | ||||||
| 		dracut_install systemd-ask-password | 		dracut_install systemd-ask-password | ||||||
| 		dracut_install systemd-tty-ask-password-agent | 		dracut_install systemd-tty-ask-password-agent | ||||||
|  | 
 | ||||||
| 		mkdir -p "${initdir}/$systemdsystemunitdir/initrd.target.wants" | 		mkdir -p "${initdir}/$systemdsystemunitdir/initrd.target.wants" | ||||||
| 		dracut_install @systemdunitdir@/zfs-import.target | 		dracut_install @systemdunitdir@/zfs-import.target | ||||||
| 		if ! [ -L "${initdir}/$systemdsystemunitdir/initrd.target.wants"/zfs-import.target ]; then | 		if ! [ -L "${initdir}/$systemdsystemunitdir/initrd.target.wants"/zfs-import.target ]; then | ||||||
| 			ln -s ../zfs-import.target "${initdir}/$systemdsystemunitdir/initrd.target.wants"/zfs-import.target | 			ln -s ../zfs-import.target "${initdir}/$systemdsystemunitdir/initrd.target.wants"/zfs-import.target | ||||||
| 			type mark_hostonly >/dev/null 2>&1 && mark_hostonly @systemdunitdir@/zfs-import.target | 			type mark_hostonly >/dev/null 2>&1 && mark_hostonly @systemdunitdir@/zfs-import.target | ||||||
| 		fi | 		fi | ||||||
|  | 
 | ||||||
| 		for _service in zfs-snapshot-bootfs.service zfs-rollback-bootfs.service ; do | 		for _service in zfs-snapshot-bootfs.service zfs-rollback-bootfs.service ; do | ||||||
| 			inst "${moddir}"/$_service "${systemdsystemunitdir}"/$_service | 			inst "${moddir}/$_service" "${systemdsystemunitdir}/$_service" | ||||||
| 			if ! [ -L "${initdir}/$systemdsystemunitdir/initrd.target.wants"/$_service ]; then | 			if ! [ -L "${initdir}/$systemdsystemunitdir/initrd.target.wants/$_service" ]; then | ||||||
| 				ln -s ../$_service "${initdir}/$systemdsystemunitdir/initrd.target.wants"/$_service | 				ln -s "../$_service" "${initdir}/$systemdsystemunitdir/initrd.target.wants/$_service" | ||||||
| 			fi | 			fi | ||||||
| 		done | 		done | ||||||
|  | 
 | ||||||
|  | 		# There isn't a pkg-config variable for this, | ||||||
|  | 		# and dracut doesn't automatically resolve anything this'd be next to | ||||||
|  | 		local systemdsystemenvironmentgeneratordir | ||||||
|  | 		systemdsystemenvironmentgeneratordir="$(pkg-config --variable=prefix systemd || echo "/usr")/lib/systemd/system-environment-generators" | ||||||
|  | 		mkdir -p "${initdir}/${systemdsystemenvironmentgeneratordir}" | ||||||
|  | 		inst "${moddir}"/import-opts-generator.sh "${systemdsystemenvironmentgeneratordir}"/zfs-import-opts.sh | ||||||
| 	fi | 	fi | ||||||
| } | } | ||||||
|  | |||||||
| @ -14,7 +14,7 @@ ConditionPathIsDirectory=/sys/module/zfs | |||||||
| [Service] | [Service] | ||||||
| Type=oneshot | Type=oneshot | ||||||
| RemainAfterExit=yes | RemainAfterExit=yes | ||||||
| ExecStart=@sbindir@/zpool import -c @sysconfdir@/zfs/zpool.cache -aN | ExecStart=@sbindir@/zpool import -c @sysconfdir@/zfs/zpool.cache -aN ${ZPOOL_IMPORT_OPTS} | ||||||
| 
 | 
 | ||||||
| [Install] | [Install] | ||||||
| WantedBy=zfs-import.target | WantedBy=zfs-import.target | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ ConditionPathIsDirectory=/sys/module/zfs | |||||||
| [Service] | [Service] | ||||||
| Type=oneshot | Type=oneshot | ||||||
| RemainAfterExit=yes | RemainAfterExit=yes | ||||||
| ExecStart=@sbindir@/zpool import -aN -o cachefile=none | ExecStart=@sbindir@/zpool import -aN -o cachefile=none ${ZPOOL_IMPORT_OPTS} | ||||||
| 
 | 
 | ||||||
| [Install] | [Install] | ||||||
| WantedBy=zfs-import.target | WantedBy=zfs-import.target | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 наб
						наб