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