48 lines
1.2 KiB
Bash
Executable File
48 lines
1.2 KiB
Bash
Executable File
#!/bin/sh
|
|
# SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
set -e
|
|
|
|
if [ "$1" = "setup" ]
|
|
then
|
|
. /usr/share/initramfs-tools/hook-functions
|
|
copy_exec /bin/grep
|
|
copy_exec /bin/sleep
|
|
copy_exec /usr/sbin/iscsiadm
|
|
copy_exec /usr/sbin/iscsid
|
|
# hm, not sure why expr is copied
|
|
copy_exec /usr/bin/expr
|
|
copy_file config /etc/iscsi/iscsid.conf
|
|
copy_file config /etc/iscsi/initiatorname.iscsi
|
|
# needed to resolve UIDs (LP: #1922976)
|
|
copy_exec /usr/lib/*/libnss_files.so.*
|
|
exit 0
|
|
fi
|
|
|
|
# if not present in the environment, then fake a trivial passwd file (LP: #1922976)
|
|
if [ ! -e /etc/passwd ] ; then
|
|
echo "root:x:0:0:root:/:/bin/sh" > /etc/passwd
|
|
fi
|
|
|
|
# re-establish connection and logout during shutdown
|
|
# if initramfs did bring up open-iscsi on boot
|
|
[ -f /open-iscsi.interface ] || exit 0
|
|
|
|
iscsid
|
|
|
|
# After restarting iscsid, wait for an active connection.
|
|
# Limit the wait time in case of unexpected failure of iscsid.
|
|
MAX_RETRIES=30
|
|
RETRY=0
|
|
while ! iscsiadm -m session -P 1 | grep -q "iSCSI Connection State: LOGGED IN"; do
|
|
RETRY=$(($RETRY + 1))
|
|
if [ $RETRY -gt $MAX_RETRIES ]; then
|
|
echo "Unexpected iSCSI Connection State, forcing iSCSI logout."
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
# Issue an iSCSI logout.
|
|
iscsiadm -m node -u
|