#!/bin/sh
-SRCDIR="`dirname $0`/"
-. $SRCDIR/common.sh
+config=echo.xml
+lmc=../utils/lmc
+lconf=../utils/lconf
-export DEBUG_WAIT=yes
-. $SRCDIR/llsetup.sh $SRCDIR/net-local.cfg $SRCDIR/obdecho.cfg $SRCDIR/client-echo.cfg
+# create nodes
+$lmc -o $config --node localhost --net localhost tcp
+$lmc -m $config --node localhost --obdtype=obdecho --ost
+# force the osc to be configured (this is normally done when it is mounted)
+$lmc -m $config --node localhost --osc OSC_localhost
+
+$lconf --gdb $config
cat <<EOF
run getattr tests as:
-$OBDCTL --device `$OBDCTL name2dev OSCDEV` test_getattr 1000000
+../utils/lctl --device '\$OSC_localhost' test_getattr 1000000
EOF
+
--- /dev/null
+#!/bin/sh
+
+LCONF=../utils/lconf
+
+if [ -f echo.xml ]; then
+ ${LCONF} --cleanup echo.xml
+else
+ echo "no echo.xml found"
+fi
+
log('unloading module:', mod)
if config.noexec():
continue
- run('/sbin/rmmod', mod)
+ (rc, out) = run('/sbin/rmmod', mod)
+ if rc:
+ log('! unable to unload module:', mod)
+ logall(out)
class Network(Module):
srv = Network(net)
try:
lctl.disconnect(srv.net_type, srv.nid, srv.port, srv.uuid)
+ except CommandError:
+ print "disconnect failed: ", self.name
+ try:
lctl.cleanup(self.name, self.uuid)
except CommandError:
print "cleanup failed: ", self.name
# FIXME: check if device is already formatted.
def prepare(self):
self.info(self.obdtype, self.devname, self.size, self.fstype, self.format)
- if not self.obdtype == 'obdecho':
- blkdev = block_dev(self.devname, self.size, self.fstype, self.format)
- else:
+ if self.obdtype == 'obdecho':
blkdev = ''
+ else:
+ blkdev = block_dev(self.devname, self.size, self.fstype, self.format)
lctl.newdev(attach="%s %s %s" % (self.obdtype, self.name, self.uuid),
setup ="%s %s" %(blkdev, self.fstype))
def cleanup(self):
Module.cleanup(self)
- clean_loop(self.devname)
+ if not self.obdtype == 'obdecho':
+ clean_loop(self.devname)
class OST(Module):
def __init__(self,node):
srv = Network(net_uuid)
try:
lctl.disconnect(srv.net_type, srv.nid, srv.port, srv.uuid)
+ except CommandError:
+ print "disconnect failed: ", self.name
+ try:
lctl.cleanup(self.name, self.uuid)
except CommandError:
print "cleanup failed: ", self.name
lustre.appendChild(osc)
lustre.appendChild(ost)
+# this is generally only used by llecho.sh
+def add_osc(gen, lustre, options, args):
+ """ add the osc to the profile for this node. """
+ if len(args) < 1:
+ usage()
+ osc_name = args[0]
+ if options.has_key('node'):
+ node_name = options['node']
+ else:
+ error("--osc requires a --node argument")
+ osc_uuid = name2uuid(lustre, osc_name)
+ node = findByName(lustre, node_name, "node")
+ node_add_profile(gen, node, 'osc', osc_uuid)
+
def add_net(gen, lustre, options, args):
""" create a node with a network config """
if len(args) < 2:
def parse_cmdline(argv):
short_opts = "ho:i:m:"
- long_opts = ["ost", "mtpt", "lov=", "node=", "mds=", "net",
+ long_opts = ["ost", "osc", "mtpt", "lov=", "node=", "mds=", "net",
"mdc", "merge=", "format", "reformat", "output=",
"obdtype=", "in=", "help"]
opts = []
options['output'] = a
if o == "--ost":
options['ost'] = 1
+ if o == "--osc":
+ options['osc'] = 1
if o == "--mds":
options['mds'] = a
if o == "--mdc":
gen = GenConfig(doc)
if options.has_key('ost'):
add_ost(gen, lustre, options, args)
+ elif options.has_key('osc'):
+ add_osc(gen, lustre, options, args)
elif options.has_key('mtpt'):
add_mtpt(gen, lustre, options, args)
elif options.has_key('mds'):