SQUASHME: osd_login: Add autologin script for objlayoutdriver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 03/15/2012 11:27 PM, Boaz Harrosh wrote:
> From: Sachin Bhamare <sbhamare@xxxxxxxxxxx>
> 
> This script is part of the autologin feature mandated by the
> pnfs-objects standard.
> It is called from objlayoutdriver.ko in the kernel.
> 
> Signed-off-by: Sachin Bhamare <sbhamare@xxxxxxxxxxx>
> Signed-off-by: Boaz Harrosh <bharrosh@xxxxxxxxxxx>

As suggested by Trond (Thanks Trond) We add a watchdog
facility to the script so it will timeout after 15s and
will return to the Kernel, even if iscsiadm gets stuck.

We are also logging with the "osd_login" prefix.

Below is the diff from this patch. (ver 1).

I will send a new email patch [version 2] for submission
to nfs-utils, as reply to the original patch.

Please submit, as the Kernel part has been accepted
into Mainline for the 3.4-rc1 merge window

Much obliged
Sachin & Boaz

---
diff --git a/utils/osd_login/osd_login b/utils/osd_login/osd_login
index c08e05c..63967fc 100755
--- a/utils/osd_login/osd_login
+++ b/utils/osd_login/osd_login
@@ -27,6 +27,9 @@ PATH="/sbin:/usr/sbin:/bin:/usr/bin"
 
 iscsiadm=/sbin/iscsiadm
 
+PARENT_PID=$BASHPID
+WATCHDOG_TIMEOUT=15
+
 protocol=""
 portal=""
 uri=""
@@ -71,32 +74,45 @@ parse_cmdline()
 	portal=`echo $uri | awk -F '//' '{print $2}'`
 }
 
-do_cmd()
+watchdog()
 {
-	$* 2>&1 | logger &
+	timeout=$1
+	portal=$2
+
+        sleep $timeout
+	if kill -9 $PARENT_PID; then
+	    echo "watchdog : Timed out (>$timeout seconds) while login into $portal" | logger -t "osd_login"
+	fi
+        echo "watchdog: exiting .."
+        exit 2
 }
 
 login_iscsi_osd()
 {
-	echo "osd_login: login into: $1"
+	echo "login into: $1"
 	if ! $iscsiadm -m discovery -o nonpersistent -t sendtargets -p $1 --login; then
 		echo "$iscsiadm -m discovery -t sendtargets -p $1 --login returned error $? !"
 		sleep 1;
 	fi
 }
 
- echo "============= osd_login ========="
- echo "progname : $0"
+echo "============= osd_login ========="
+echo "progname : $0"
 parse_cmdline "$@"
 echo "protocol: $protocol"
 echo "portal: $portal"
 
+watchdog $WATCHDOG_TIMEOUT $portal &
+watchdog_pid=$!
+
 case $protocol in
 iscsi)
-	login_iscsi_osd $portal |& logger
+	login_iscsi_osd $portal |& logger -t "osd_login"
 	;;
 *)
-	echo "osd_login: Error: protocol $protocol not supported !" | logger
+	echo "Error: protocol $protocol not supported !" | logger -t "osd_login"
 	;;
 esac
 
+kill -9 $watchdog_pid
+exit 0
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux