diff -aur lio-utils/scripts/rc.target lio-utils.new/scripts/rc.target
--- lio-utils/scripts/rc.target	2011-05-06 23:16:58.000000000 +0200
+++ lio-utils.new/scripts/rc.target	2012-02-29 02:48:36.032877118 +0100
@@ -27,10 +27,13 @@
 
 # Source function library.
 #. /etc/init.d/functions
+. /etc/rc.conf
+. /etc/rc.d/functions
 
 #########################################################################
 # Our product file definitions
 
+daemon_name=target
 MODNAME="target_core_mod"
 
 TCM_CFS_DIR="/sys/kernel/config/target/core"
@@ -112,11 +115,22 @@
 			continue
 		fi
 
-		if [[ $i =~ ".rpmsave" ]]; then
+		# files from arch package manager
+		if [[ $i =~ ".pacsave" ]]; then
+			continue
+		fi
+		if [[ $i =~ ".pacnew" ]]; then
+			continue
+		fi
+		if [[ $i =~ ".pacorig" ]]; then
 			continue
 		fi
 
-		if [[ $i =~ ".dpkg-dist" ]]; then
+		# files from the free branch
+		if [[ $i =~ ".json" ]]; then
+			continue
+		fi
+		if [[ $i =~ ".backup" ]]; then
 			continue
 		fi
 
@@ -259,7 +273,7 @@
 
 function shutdown_fabrics() {
 	
-	echo -n $"Unloading fabric/configfs: "
+	echo "Unloading fabric/configfs: "
 	${TCM_FABRIC} --unloadall
 	RETVAL=$?
 	if [ $RETVAL == 0 ]; then
@@ -274,7 +288,7 @@
 		return 0
 	fi
 
-	echo -n $"Unloading LIO-Target/ConfigFS fabric: "
+	echo "Unloading LIO-Target/ConfigFS fabric: "
 	${LIO_NODE} --unload
         RETVAL=$?
         if [ $RETVAL == 0 ]; then
@@ -285,7 +299,10 @@
 }
 
 function unload_tcm_mod() {
-	
+	if [ ! -d /sys/kernel/config/target/ ]; then
+		return 0
+	fi
+
 	shutdown_fabrics
 	shutdown_lio_mod
 
@@ -446,28 +463,57 @@
 
 case "$1" in
 	start)
+		stat_busy "Starting LIO targets"
 		start 0
+		if [ $? != 0 ]; then
+			stat_fail
+			exit 1
+		else
+			add_daemon $daemon_name
+			stat_done
+		fi
 		;;
 	startbak)
 		if [ "$ARGS_COUNT" -ne "$ARGS_CHECK" ]; then
 			echo "Usage: /etc/init.d/target startbak <DATE_TIME>"
 			exit 1
 		fi
+		stat_busy "Starting LIO target backup $2"
 		start $2
+		if [ $? != 0 ]; then
+			stat_fail
+			exit 1
+		else
+			add_daemon $daemon_name
+			stat_done
+		fi
 		;;
 	stop)
+		stat_busy "Stopping LIO targets"
 		stop 1
+		if [ $? != 0 ]; then
+			stat_fail
+			exit 1
+		else
+			rm_daemon $daemon_name
+			stat_done
+		fi
 		;;
 	status)
-		tcm_status
-		RETVAL=$?
+		stat_busy "Checking status of LIO targets"
+		ck_status $daemon_name
+		# targetcli might have mounted configfs/target
+		if [ -d /sys/kernel/config/target/ ]; then
+			tcm_status
+		fi
 		;;
 	restart|reload)
-		restart 1
+		$0 stop
+		sleep 3
+		$0 start
 		;;
 	*)
-		echo $"Usage: $0 {start|startbak|stop|status|restart}"
-		exit 1
+		echo "Usage: $0 {start|startbak|stop|status|restart}"
 esac
 
 exit $?
diff -aur lio-utils/tcm-py/tcm_node.py lio-utils.new/tcm-py/tcm_node.py
--- lio-utils/tcm-py/tcm_node.py	2011-05-06 23:16:58.000000000 +0200
+++ lio-utils.new/tcm-py/tcm_node.py	2012-02-29 02:48:24.306210014 +0100
@@ -591,7 +591,9 @@
 
 	# Unload TCM subsystem plugin modules
 	for module in ("iblock", "file", "pscsi", "stgt"):
-		os.system("rmmod target_core_%s" % module)
+		module_name = "target_core_%s" % module
+		if not os.system("lsmod | grep %s > /dev/null" % module_name):
+			os.system("rmmod %s" % module_name)
 
 	# Unload TCM Core
 	rmmod_op = "rmmod target_core_mod"