diff --git a/etc/initd/boot.suse b/etc/initd/boot.suse
index df64e21..83875e2 100644
--- a/etc/initd/boot.suse
+++ b/etc/initd/boot.suse
@@ -4,36 +4,37 @@
 #
 ### BEGIN INIT INFO
 # Provides:          iscsiboot
-# Required-Start:    boot.proc
+# Required-Start:    $null
 # Should-Start:
-# Required-Stop:     
+# Required-Stop:     $null
 # Should-Stop:
 # Default-Start:     B
 # Default-Stop:      
-# Short-Description: Starts the iSCSI initiator daemon
-#                    
+# Short-Description: iSCSI initiator daemon root-fs support
+# Description:       Starts the iSCSI initiator daemon if the
+#                    root-filesystem is on an iSCSI device
+#               
 ### END INIT INFO
 
 ISCSIADM=/sbin/iscsiadm
-PID_FILE=/var/run/iscsi.pid
 CONFIG_FILE=/etc/iscsid.conf
 DAEMON=/sbin/iscsid
-ARGS="-c $CONFIG_FILE -p $PID_FILE"
+ARGS="-c $CONFIG_FILE"
 
 # Source LSB init functions
 . /etc/rc.status
 
 #
-# This service is run right after booting. So all activated targets
-# must be enabled during mkinitrd run and thus should not be removed
-# when the open-iscsi service is stopped.
+# This service is run right after booting. So all targets activated
+# during mkinitrd run should not be removed when the open-iscsi
+# service is stopped.
 #
 iscsi_mark_root_nodes()
 {
     $ISCSIADM -m session 2> /dev/null | while read t num i target ; do
 	ip=${i%%:*}
-	STARTUP=`$ISCSIADM -m node -p $ip -T $target | grep "node.conn\[0\].startup" | cut -d' ' -f3`
-	if [ "$STARTUP" != "onboot" ] ; then
+	STARTUP=`$ISCSIADM -m node -p $ip -T $target 2> /dev/null | grep "node.conn\[0\].startup" | cut -d' ' -f3`
+	if [ "$STARTUP" -a "$STARTUP" != "onboot" ] ; then
 	    $ISCSIADM -m node -p $ip -T $target -o update -n node.conn[0].startup -v onboot
 	fi
     done
@@ -50,13 +51,12 @@ fi
 
 case "$1" in
     start)
-	[ ! -d /var/lib/open-iscsi ] && mkdir -p /var/lib/open-iscsi
 	echo -n "Starting iSCSI initiator for the root device: "
 	startproc $DAEMON $ARGS
 	rc_status -v
 	iscsi_mark_root_nodes
 	;;
-    stop)
+    stop|restart|reload)
 	rc_failed 0
 	;;
     status)
@@ -68,13 +68,8 @@ case "$1" in
 	    rc_status -v
 	fi
 	;;
-    restart)
-	$0 stop
-	sleep 1
-	$0 start
-	;;
     *)
-	echo "Usage: $0 {start|stop|status|restart}"
+	echo "Usage: $0 {start|stop|status|restart|reload}"
 	exit 1
 	;;
 esac
diff --git a/etc/initd/initd.suse b/etc/initd/initd.suse
index 22901af..9c1dbfb 100644
--- a/etc/initd/initd.suse
+++ b/etc/initd/initd.suse
@@ -10,15 +10,16 @@
 # Should-Stop:
 # Default-Start:     3 5
 # Default-Stop:      
-# Short-Description: Starts and stops the iSCSI client initiator
+# Short-Description: iSCSI initiator daemon
+# Description:       The iSCSI initator is used to create and
+#                    manage iSCSI connections to a iSCSI Target.
 #                    
 ### END INIT INFO
 
-PID_FILE=/var/run/iscsi.pid
 CONFIG_FILE=/etc/iscsi/iscsid.conf
 DAEMON=/sbin/iscsid
 ISCSIADM=/sbin/iscsiadm
-ARGS="-c $CONFIG_FILE -p $PID_FILE"
+ARGS="-c $CONFIG_FILE -n"
 
 # Source LSB init functions
 . /etc/rc.status
@@ -101,41 +102,8 @@ iscsi_list_all_nodes()
     done
 }
 
-iscsi_discover_all_targets()
-{
-	# Strip off any existing ID information
-	RAW_NODE_LIST=`iscsiadm -m node | sed -nre 's/^(\[[0-9a-f]*\] )?(.*)$/\2/p'`
-	# Obtain IPv4 list
-	IPV4_NODE_LIST=`echo "$RAW_NODE_LIST" | sed -nre 's/^([0-9]{1,3}(\.[0-9]{1,3}){3}):[^: ]* (.*)$/\1 \3/p'`
-	# Now obtain IPv6 list
-	IPV6_NODE_LIST=`echo "$RAW_NODE_LIST" | sed -nre 's/^([0-9a-f]{1,4}(:[0-9a-f]{0,4}){6}:[0-9a-f]{1,4}):[^: ]* (.*)$/\1 \3/p'`
-
-	DISC_TARGETS=""
-	while read NODE_ADDR NODE_NAME; do
-		[ -z "$NODE_ADDR" -a -z "$NODE_NAME" ] && continue
-		NODE_ATTRS=`iscsiadm -m node -p "$NODE_ADDR" -T "$NODE_NAME"`
-		NODE_STATUS=`echo "$NODE_ATTRS" | sed -nre 's/^.*node\.conn\[0\]\.startup = ([a-z]*).*$/\1/p'`
-
-		if [ "$NODE_STATUS" == 'automatic' ]; then
-			DISC_TARGETS=`echo "$DISC_TARGETS" | sed -re '/'"$NODE_ADDR"'/!{s/(.*)/\1 '"$NODE_ADDR"'/}'`
-		fi
-	done < <(echo "$IPV4_NODE_LIST"; echo "$IPV6_NODE_LIST")
-
-	for TARGET_ADDR in $DISC_TARGETS; do
-		echo -n "Attempting discovery on target at ${TARGET_ADDR}: "
-		iscsiadm -m discovery -t st -p "$TARGET_ADDR" > /dev/null 2>&1
-		if [ "$?" -ne 0 ]; then
-			rc_failed 1
-			rc_status -v
-			return 1
-		fi
-		rc_status -v
-	done
-}
-
 case "$1" in
     start)
-	[ ! -d /var/lib/iscsi ] && mkdir -p /var/lib/iscsi
 	if checkproc $DAEMON ; then
 	    RETVAL=0
 	else
@@ -147,24 +115,19 @@ case "$1" in
 	    rc_status -v
 	fi
 	if [ "$RETVAL" == "0" ]; then
-	    iscsi_discover_all_targets
-	    RETVAL=$?
-	fi
-	if [ "$RETVAL" == "0" ]; then
 	    iscsi_login_all_nodes
 	fi
 	;;
     stop)
 	iscsi_umount_all_luns
+	echo -n "Stopping iSCSI initiator service: "
 	if iscsi_logout_all_nodes ; then
 	    killproc -KILL $DAEMON
 	    RETVAL=$?
 	else
 	    RETVAL=1
 	fi
-	echo -n "Stopping iSCSI initiator service: "
 	if [ "$RETVAL" == "0" ]; then
-	    rm -f $PID_FILE
 	    status=0
 	    modprobe -r iscsi_tcp
 	    if [ "$?" -ne "0" -a "$?" -ne "1" ]; then
@@ -190,7 +153,7 @@ case "$1" in
 	    rc_status -v
 	fi
 	;;
-    restart)
+    restart|reload)
 	$0 stop
 	RETVAL=$?
 	if [ "$RETVAL" != "0" ]; then
@@ -201,7 +164,7 @@ case "$1" in
 	$0 start
 	;;
     *)
-	echo "Usage: $0 {start|stop|status|restart}"
+	echo "Usage: $0 {start|stop|status|restart|reload}"
 	exit 1
 	;;
 esac
