#!/usr/bin/bash

ISCSIADM=/usr/sbin/iscsiadm
start_iscsid=0
start_iscsiuio=0

iscsi_restart=$(systemctl show iscsi.service -p ActiveExitTimestampMonotonic)
if [ $? -eq 0 ] ; then
  iscsi_restart=${iscsi_restart#*=}
else
  iscsi_restart=1
fi

if systemctl is-system-running | grep -qE "initializing|starting" &&
 [ $iscsi_restart -eq 0 ]; then
  while read t num p target flash; do
    # strip tag number from portal, keep "ip:port"
    portal=${p%,*}
    transport=${t%:}

    # use session number to find the iface name in use
    num=${num#[}; num=${num%]}
    iface=$(iscsiadm -m session -r $num | grep iface.iscsi_ifacename | cut -d= -f2)

    $ISCSIADM -m node -p $portal -T $target -I $iface -o update -n node.startup -v onboot

    start_iscsid=1

    if [ "$transport" = bnx2i ] || [ "$transport" = qedi ]; then
      start_iscsiuio=1
    fi
  done < <( $ISCSIADM -m session )
fi

# force iscsid and iscsiuio to start if needed for
# recovering sessions created in the initrd

if [ "$start_iscsid" -eq 1 ]; then
  systemctl --no-block start iscsid.service
fi
if [ "$start_iscsiuio" -eq 1 ]; then
  systemctl --no-block start iscsiuio.service
fi

