mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	 64025fa3a1
			
		
	
	
		64025fa3a1
		
			
		
	
	
	
	
		
			
			Commit d2bce6d03 added the 'make checkbashisms' target but did not
resolve all of the bashisms in the scripts.  This commit doesn't
resolve them all either but it does fix up a few, and it excludes
the others so 'make checkstyle' no longer prints warnings.  It's
a small step in the right direction.
* Dracut is Linux specific and itself depends on bash.  Therefore
  all dracut support scripts can be bash specific, update their
  shebang accordingly.
* zed-functions.sh, zfs-import, zfs-mount, zfs-zed, smart
  paxcheck.sh, make_gitrev.sh - these scripts were excuded from
  the check until they can be updated and properly tested.
* zfsunlock - only whole values for sleep are allowed.
* vdev_id - removed unneeded locals; use && instead of -a.
* dkms.mkconf, dkms.postbuil - use || instead of -o.
Reviewed-by: InsanePrawn <insane.prawny@gmail.com>
Reviewed-by:  Gabriel A. Devenyi <gdevenyi@gmail.com>
Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #10755
		
	
			
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| set -eu
 | |
| if [ ! -e /run/zfs_fs_name ]; then
 | |
| 	echo "Wait for the root pool to be imported or press Ctrl-C to exit."
 | |
| fi
 | |
| while [ ! -e /run/zfs_fs_name ]; do
 | |
| 	if [ -e /run/zfs_unlock_complete ]; then
 | |
| 		exit 0
 | |
| 	fi
 | |
| 	sleep 1
 | |
| done
 | |
| echo
 | |
| echo "Unlocking encrypted ZFS filesystems..."
 | |
| echo "Enter the password or press Ctrl-C to exit."
 | |
| echo
 | |
| zfs_fs_name=""
 | |
| if [ ! -e /run/zfs_unlock_complete_notify ]; then
 | |
| 	mkfifo /run/zfs_unlock_complete_notify
 | |
| fi
 | |
| while [ ! -e /run/zfs_unlock_complete ]; do
 | |
| 	zfs_fs_name=$(cat /run/zfs_fs_name)
 | |
| 	zfs_console_askpwd_cmd=$(cat /run/zfs_console_askpwd_cmd)
 | |
| 	systemd-ask-password "Encrypted ZFS password for ${zfs_fs_name}:" | \
 | |
| 		/sbin/zfs load-key "$zfs_fs_name" || true
 | |
| 	if [ "$(/sbin/zfs get -H -ovalue keystatus "$zfs_fs_name" 2> /dev/null)" = "available" ]; then
 | |
| 		echo "Password for $zfs_fs_name accepted."
 | |
| 		zfs_console_askpwd_pid=$(ps | awk '!'"/awk/ && /$zfs_console_askpwd_cmd/ { print \$1; exit }")
 | |
| 		if [ -n "$zfs_console_askpwd_pid" ]; then
 | |
| 			kill "$zfs_console_askpwd_pid"
 | |
| 		fi
 | |
| 		# Wait for another filesystem to unlock.
 | |
| 		while [ "$(cat /run/zfs_fs_name)" = "$zfs_fs_name" ] && [ ! -e /run/zfs_unlock_complete ]; do
 | |
| 			sleep 1
 | |
| 		done
 | |
| 	else
 | |
| 		echo "Wrong password.  Try again."
 | |
| 	fi
 | |
| done
 | |
| echo "Unlocking complete.  Resuming boot sequence..."
 | |
| echo "Please reconnect in a while."
 | |
| echo "ok" > /run/zfs_unlock_complete_notify
 |