--- /dev/null
+#!/bin/sh
+
+SRCDIR="`dirname $0`/"
+[ -f $SRCDIR/common.sh ] || SRCDIR="/lib/lustre"
+
+. $SRCDIR/common.sh
+
+setup_opts "$@"
+
+[ -c /dev/portals ] || mknod /dev/portals c 10 240
+do_insmod $PORTALS/linux/oslib/portals.o || exit -1
+case $NETWORK in
+elan) do_insmod $PORTALS/linux/qswnal/kqswnal.o || exit -1
+ ;;
+tcp) do_insmod $PORTALS/linux/socknal/ksocknal.o || exit -1
+ ;;
+*) fail "$0: unknown NETWORK '$NETWORK'" ;;
+esac
+
+[ -c /dev/obd ] || mknod /dev/obd c 10 241
+
+do_insmod $LUSTRE/obdclass/obdclass.o || exit -1
+do_insmod $LUSTRE/ptlrpc/ptlrpc.o || exit -1
+do_insmod $LUSTRE/ldlm/ldlm.o || exit -1
+do_insmod $LUSTRE/extN/extN.o || \
+ echo "info: can't load extN.o module, not fatal if using ext3"
+do_insmod $LUSTRE/mds/mds.o || exit -1
+do_insmod $LUSTRE/mds/mds_extN.o || \
+ echo "info: can't load mds_extN.o module, needs extN.o"
+do_insmod $LUSTRE/obdecho/obdecho.o || exit -1
+do_insmod $LUSTRE/obdfilter/obdfilter.o || exit -1
+do_insmod $LUSTRE/ost/ost.o || exit -1
+do_insmod $LUSTRE/osc/osc.o || exit -1
+do_insmod $LUSTRE/mdc/mdc.o || exit -1
+do_insmod $LUSTRE/lov/lov.o || exit -1
+do_insmod $LUSTRE/llite/llite.o || exit -1
+echo "$R/tmp/lustre-log" > /proc/sys/portals/debug_path
+
+list_mods
+
+
import xml.dom.minidom
# Global parameters
-TCP_ACCEPTOR = 'acceptor'
+TCP_ACCEPTOR = '../..//portals/linux/utils/acceptor'
options = {}
#
logall(err)
raise CommandError, err
return ret, out
-
-
+
# create a new device with lctl
def network(self, net, nid):
cmds = """
network %s
mynid %s
- quit""" % (net, nid)
+ add_uuid self %s
+ quit""" % (net, nid, nid)
self.run(cmds)
# create a new connection
self.run(cmds)
# create a new device with lctl
- def newdev(self, attach, setup):
+ def newdev(self, attach, setup = ""):
cmds = """
newdev
attach %s
ret = 0
return (ret, out)
+# Run a command in the background.
+def run_daemon(*args):
+ cmd = string.join(map(str,args))
+ debug ("+", cmd)
+ if isnotouch(): return ([], 0)
+ f = os.popen(cmd + ' 2>&1')
+ ret = f.close()
+ if ret:
+ ret = ret >> 8
+ else:
+ ret = 0
+ return ret
+
# is the path a block device?
def is_block(path):
(name, uuid, type, nid, port) = getNetworkInfo(node)
print 'NETWORK:', name, uuid, type, nid, port
if type == 'tcp':
- run(TCP_ACCEPTOR, port)
+ ret = run_daemon(TCP_ACCEPTOR, port)
+ if ret:
+ print "error:", ret
+ raise CommandError, "cannot run acceptor"
lctl.network(type, nid)
+ lctl.newdev(attach = "ptlrpc RPCDEV")
# need to check /proc/mounts and /etc/mtab before
def cleanup_network(node):
(name, uuid, type, nid, port) = getNetworkInfo(node)
print 'NETWORK:', name, uuid, type, nid, port
- #lctl.network(type, nid)
+ try:
+ lctl.cleanup("RPCDEV", "")
+ except CommandError:
+ print "cleanup failed: ", name
+ # yikes, this ugly! need to save pid in /var/something
+ run("killall acceptor")
+
# need to check /proc/mounts and /etc/mtab before
# formatting anything.
#
def parse_cmdline(argv):
short_opts = "hdv"
- long_opts = ["ldap", "reformat", "lustre=",
+ long_opts = ["ldap", "reformat", "lustre=", "verbose",
"portals=", "makeldiff", "cleanup", "iam=",
"help", "debug", "host="]
opts = []