From: Boaz Harrosh <bharrosh@panasas.com>
To: Steve Dickson <steved@redhat.com>,
"Bhamare, Sachin" <sbhamare@panasas.com>,
Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: NFS list <linux-nfs@vger.kernel.org>,
open-osd <osd-dev@open-osd.org>,
Benny Halevy <bhalevy@tonian.com>,
"Welch, Brent" <welch@panasas.com>
Subject: [PATCH version2] osd_login: Add autologin script for objlayoutdriver.
Date: Thu, 22 Mar 2012 19:57:23 -0700 [thread overview]
Message-ID: <4F6BE693.1000107@panasas.com> (raw)
In-Reply-To: <4F62DD6C.4040504@panasas.com>
From: Sachin Bhamare <sbhamare@panasas.com>
This script is part of the autologin feature mandated by the
pnfs-objects standard.
It is called from objlayoutdriver.ko in the kernel.
It invokes iscsiadm program to perform the iscsi login to OSDs.
It also features a watchdog which will make sure that control
returns to kernel after 15s timeout.
Signed-off-by: Sachin Bhamare <sbhamare@panasas.com>
Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
---
configure.ac | 1 +
utils/Makefile.am | 1 +
utils/osd_login/Makefile.am | 13 +++++
utils/osd_login/osd_login | 118 +++++++++++++++++++++++++++++++++++++++++++
4 files changed, 133 insertions(+), 0 deletions(-)
create mode 100644 utils/osd_login/Makefile.am
create mode 100755 utils/osd_login/osd_login
diff --git a/configure.ac b/configure.ac
index 67e8d2d..011a2bf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -467,6 +467,7 @@ AC_CONFIG_FILES([
utils/nfsidmap/Makefile
utils/showmount/Makefile
utils/statd/Makefile
+ utils/osd_login/Makefile
tests/Makefile
tests/nsm_client/Makefile])
AC_OUTPUT
diff --git a/utils/Makefile.am b/utils/Makefile.am
index d074b85..c7e5d27 100644
--- a/utils/Makefile.am
+++ b/utils/Makefile.am
@@ -28,6 +28,7 @@ SUBDIRS = \
nfsstat \
showmount \
statd \
+ osd_login \
$(OPTDIRS)
MAINTAINERCLEANFILES = Makefile.in
diff --git a/utils/osd_login/Makefile.am b/utils/osd_login/Makefile.am
new file mode 100644
index 0000000..e931e36
--- /dev/null
+++ b/utils/osd_login/Makefile.am
@@ -0,0 +1,12 @@
+## Process this file with automake to produce Makefile.in
+
+OSD_LOGIN_FILES= osd_login
+
+EXTRA_DIST= $(OSD_LOGIN_FILES)
+
+all-local: $(OSD_LOGIN_FILES)
+
+install-data-hook:
+ $(INSTALL) --mode 755 osd_login $(DESTDIR)/sbin/osd_login
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/utils/osd_login/osd_login b/utils/osd_login/osd_login
new file mode 100755
index 0000000..63967fc
--- /dev/null
+++ b/utils/osd_login/osd_login
@@ -0,0 +1,118 @@
+#!/bin/bash
+#
+# osd_login : This script is part of the autologin feature
+# mandated by the pnfs-objects standard.
+# It is called from objlayoutdriver.ko in the kernel.
+
+# Copyright (C) 2012, Sachin Bhamare <sbhamare@panasas.com>
+# Copyright (C) 2012, Boaz Harrosh <bharrosh@panasas.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+umask 022
+
+PATH="/sbin:/usr/sbin:/bin:/usr/bin"
+
+iscsiadm=/sbin/iscsiadm
+
+PARENT_PID=$BASHPID
+WATCHDOG_TIMEOUT=15
+
+protocol=""
+portal=""
+uri=""
+osdname=""
+systemid=""
+
+usage()
+{
+ echo "Usage: $0 -u <URI> -o <OSDNAME> -s <SYSTEMID>"
+ echo "Options:"
+ echo "-u target uri e.g. iscsi://<ip>:<port>"
+ echo "-o osdname of the target OSD"
+ echo "-s systemid of the target OSD"
+}
+
+parse_cmdline()
+{
+ argc=$#
+ if [ $# -lt 3 ]; then
+ usage
+ exit 1
+ fi
+
+ # parse the input arguments
+ while getopts "u:o:s:" options; do
+ case $options in
+ u ) uri=$OPTARG;;
+ o ) osdname=$OPTARG;;
+ s ) systemid=$OPTARG;;
+ \? ) usage
+ exit 1;;
+ * ) usage
+ exit 1;;
+ esac
+ done
+
+ echo "-u : $uri"
+ echo "-o : $osdname"
+ echo "-s : $systemid"
+
+ protocol=`echo $uri | awk -F ':' '{print $1}'`
+ portal=`echo $uri | awk -F '//' '{print $2}'`
+}
+
+watchdog()
+{
+ 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 "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"
+parse_cmdline "$@"
+echo "protocol: $protocol"
+echo "portal: $portal"
+
+watchdog $WATCHDOG_TIMEOUT $portal &
+watchdog_pid=$!
+
+case $protocol in
+iscsi)
+ login_iscsi_osd $portal |& logger -t "osd_login"
+ ;;
+*)
+ echo "Error: protocol $protocol not supported !" | logger -t "osd_login"
+ ;;
+esac
+
+kill -9 $watchdog_pid
+exit 0
--
1.7.6.2
next prev parent reply other threads:[~2012-03-23 2:57 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-16 6:17 [PATCHSET 0/4] Auto-login support for the pnfs-objects protocol Boaz Harrosh
2012-03-16 6:19 ` [PATCH 1/4] pnfsd-exofs: Add autologin support to exofs Boaz Harrosh
2012-03-16 6:30 ` Boaz Harrosh
2012-03-16 6:21 ` [PATCH 2/4] pnfs-obj: Remove unused variable from objlayout_get_deviceinfo() Boaz Harrosh
2012-03-16 6:23 ` [PATCH 3/4] pnfs-obj: autologin: Add support for protocol autologin Boaz Harrosh
2012-03-16 21:40 ` Myklebust, Trond
2012-03-19 20:58 ` Boaz Harrosh
2012-03-19 21:12 ` Myklebust, Trond
2012-03-19 23:23 ` Boaz Harrosh
2012-03-20 1:16 ` Boaz Harrosh
2012-03-20 3:10 ` Boaz Harrosh
2012-03-20 3:26 ` Boaz Harrosh
2012-03-20 3:47 ` [PATCH version2] " Boaz Harrosh
2012-03-16 6:27 ` [PATCH 4/4] osd_login: Add autologin script for objlayoutdriver Boaz Harrosh
2012-03-23 2:36 ` SQUASHME: " Boaz Harrosh
2012-03-23 2:57 ` Boaz Harrosh [this message]
2012-05-01 18:50 ` [PATCH 4/4] " Steve Dickson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F6BE693.1000107@panasas.com \
--to=bharrosh@panasas.com \
--cc=Trond.Myklebust@netapp.com \
--cc=bhalevy@tonian.com \
--cc=linux-nfs@vger.kernel.org \
--cc=osd-dev@open-osd.org \
--cc=sbhamare@panasas.com \
--cc=steved@redhat.com \
--cc=welch@panasas.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).