# LDADD := -lreadline -ltermcap # -lefence
noinst_DATA = disk1_4.zip
-noinst_SCRIPTS = leak_finder.pl llecho.sh llmount.sh llmountcleanup.sh
-noinst_SCRIPTS += sanity.sh rundbench test-framework.sh
-noinst_SCRIPTS += acceptance-small.sh compile.sh conf-sanity.sh
-noinst_SCRIPTS += echo.sh insanity.sh lfscktest.sh llechocleanup.sh
-noinst_SCRIPTS += llog-test.sh lockorder.sh lstiming.sh mount2fs.sh oos2.sh
-noinst_SCRIPTS += oos.sh recovery-cleanup.sh recovery-small.sh replay-dual.sh
-noinst_SCRIPTS += replay-ost-single.sh replay-single.sh routed.sh run-llog.sh
-noinst_SCRIPTS += run-quotacheck.sh run-quotactl.sh run-quotafmt.sh
-noinst_SCRIPTS += sanity-buffalo.sh sanityN.sh sanity-quota.sh tmpfs-sanity.sh
-noinst_SCRIPTS += kbuild lkcdmap rundbench runiozone runvmstat runslabinfo
-noinst_SCRIPTS += runtests socketclient socketserver sanity-sec.sh
-nobase_noinst_SCRIPTS = cfg/insanity-local.sh cfg/insanity-ltest.sh
+noinst_SCRIPTS = leak_finder.pl llecho.sh llmount.sh llmountcleanup.sh
+noinst_SCRIPTS += test-framework.sh runvmstat runiozone runtests
+noinst_SCRIPTS += sanity.sh rundbench acceptance-small.sh compile.sh
+noinst_SCRIPTS += conf-sanity.sh insanity.sh lfscktest.sh oos.sh oos2.sh
+noinst_SCRIPTS += llog-test.sh recovery-small.sh replay-dual.sh sanity-quota.sh
+noinst_SCRIPTS += replay-ost-single.sh replay-single.sh run-llog.sh sanityN.sh
+noinst_SCRIPTS += lockorder.sh socketclient socketserver sanity-sec.sh
+nobase_noinst_SCRIPTS = cfg/insanity-local.sh cfg/insanity-ltest.sh
nobase_noinst_SCRIPTS += cfg/local.sh acl/make-tree acl/run
-nobase_noinst_DATA = acl/cp.test acl/getfacl-noacl.test acl/inheritance.test
+nobase_noinst_DATA = acl/cp.test acl/getfacl-noacl.test acl/inheritance.test
nobase_noinst_DATA += acl/misc.test acl/permissions.test acl/setfacl.test
EXTRA_DIST = $(noinst_SCRIPTS) $(noinst_DATA) \
$(nobase_noinst_SCRIPTS) $(nobase_noinst_DATA)
if TESTS
-noinst_PROGRAMS = openunlink truncate directio openme writeme
+noinst_PROGRAMS = openunlink truncate directio openme writeme mlink utime
noinst_PROGRAMS += tchmod toexcl fsx test_brw openclose createdestroy
-noinst_PROGRAMS += stat createmany chownmany statmany multifstat createtest mlink utime
+noinst_PROGRAMS += stat createmany chownmany statmany multifstat createtest
noinst_PROGRAMS += opendirunlink opendevunlink unlinkmany fchdir_test checkstat
-noinst_PROGRAMS += wantedi statone runas openfile getdents o_directory
+noinst_PROGRAMS += wantedi statone runas openfile getdents o_directory rmdirmany
noinst_PROGRAMS += small_write multiop sleeptest ll_sparseness_verify cmknod
-noinst_PROGRAMS += ll_sparseness_write mrename ll_dirstripe_verify mkdirmany rmdirmany
+noinst_PROGRAMS += ll_sparseness_write mrename ll_dirstripe_verify mkdirmany
noinst_PROGRAMS += openfilleddirunlink rename_many memhog iopentest1 iopentest2
noinst_PROGRAMS += mmap_sanity flock_test writemany random-reads flocks_test
noinst_PROGRAMS += ll_getstripe_info write_time_limit
+++ /dev/null
-#!/bin/bash
-
-LOV=${LOV:-0}
-while [ "$1" ]; do
- case $1 in
- --lov) LOV="1" ;;
- *) [ -z $config ] && config=$1 || OPTS="$OPTS $1" ;;
- esac
- shift
-done
-
-config=${config:-$(basename $0 .sh).xml}
-LMC=${LMC:-../utils/lmc -m $config}
-TMP=${TMP:-/tmp}
-
-HOSTNAME=`hostname`
-SERVER=${SERVER:-$HOSTNAME}
-CLIENT=${CLIENT:-$HOSTNAME}
-NET=${NET:-tcp}
-[ "$ACCEPTOR_PORT" ] && PORT_OPT="--port $ACCEPTOR_PORT"
-
-h2tcp () {
- case $1 in
- client) echo '\*' ;;
- *) echo $1 ;;
- esac
-}
-
-h2mx () {
- case $1 in
- client) echo '\*' ;;
- *) echo $1 ;;
- esac
-}
-
-h2gm () {
- echo `gmnalnid -n $1`
-}
-
-h2elan () {
- echo $1 | sed 's/[^0-9]*//g'
-}
-
-h2iib () {
- case $1 in
- client) echo '\*' ;;
- *) echo $1 | sed "s/[^0-9]*//" ;;
- esac
-}
-
-#
-# PJK: I believe this is correct
-# PTL NID's are of the form
-# num@ptl
-#
-h2ptl () {
- echo $1 | sed 's/[^0-9]*//g'
-}
-
-# FIXME: make LMC not require MDS for obdecho LOV
-MDSDEV=${MDSDEV:-$TMP/mds1-`hostname`}
-MDSSIZE=10000
-FSTYPE=${FSTYPE:-ext3}
-
-STRIPE_BYTES=1048576
-STRIPES_PER_OBJ=2 # 0 means stripe over all OSTs
-
-rm -f $config
-# create nodes
-$LMC --add node --node $SERVER || exit 1
-$LMC --add net --node $SERVER --nid `h2$NET $SERVER` --nettype $NET $PORT_OPT|| exit 2
-
-if (($LOV)); then
- $LMC --add mds --node $SERVER --mds mds1 --fstype $FSTYPE --dev $MDSDEV --size $MDSSIZE || exit 10
- $LMC --add lov --lov lov1 --mds mds1 --stripe_sz $STRIPE_BYTES --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0 || exit 11
- $LMC --add ost --node $SERVER --lov lov1 --osdtype=obdecho || exit 12
- $LMC --add ost --node $SERVER --lov lov1 --osdtype=obdecho || exit 13
- OBD_NAME=lov1
-else
- $LMC --add ost --ost obd1 --node $SERVER --osdtype=obdecho || exit 12
- OBD_NAME=obd1
-fi
-
-if [ "$SERVER" != "$CLIENT" ]; then
- $LMC --add node --node $CLIENT || exit 1
- $LMC --add net --node $CLIENT --nid `h2$NET $CLIENT` --nettype $NET $PORT_OPT || exit 2
-fi
-
-$LMC --add echo_client --node $CLIENT --ost ${OBD_NAME} || exit 3
-
+++ /dev/null
-#! /bin/sh
-
-#
-# lustre/lustre/tests/kbuild
-#
-# Copyright (C) 2005 Cluster File Systems, Inc.
-#
-# Author: Nikita Danilov <nikita@clusterfs.com>
-#
-# This file is part of Lustre, http://www.lustre.org.
-#
-# Lustre is free software; you can redistribute it and/or modify it
-# under the terms of version 2 of the GNU General Public License as
-# published by the Free Software Foundation.
-#
-# Lustre 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 Lustre; if not, write to the Free Software Foundation,
-# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-#
-#
-# kbuild is a swiss-army linux kernel build script. Its purpose is to run
-# automated kernel builds on given target file system (presumably Lustre) to
-# measure file system performance and, occasionally, correctness.
-#
-# Usual kernel build doesn't not stress file system, because the bottleneck
-# is CPU consumption by the user level (compiler). To work around this,
-# kbuild uses ccache(1) that eliminates most of CPU load by the compiler,
-# once the cache is primed.
-#
-# Options:
-
-function usage()
-{
- cat <<EOF
- $pname --- builds a kernel.
-
-Usage: $pname [-s <source>] \\
- [-t <target>] \\
- [-m <make-options>] \\
- [-i <iterations>] \\
- [-v <verbosity>] \\
- [-c <config-target>] \\
- [-S] \\
- [-C <config-file>]
-
- -s <source> source of kernel to build. This can be:
-
- . path to directory;
-
- . tar.gz, .tgz, or .tar.bz2 archive;
-
- . ftp or http URL to the source archive;
-
- defaults to "$src".
-
- -t <target> target directory, where build process takes place.
- Defaults to "$tgt".
-
- -m <make-options> additional options supplied to each make invocation.
- Defaults to "$mopt"
-
- -c <config-target> kernel makefile target to invoke to configure kernel
- (defconfig, allyesconfig, allmodconfig, etc.). This
- option conflicts with -C <config-file>. Defaults to
- "$mconfig".
-
- -C <config-file> use given .config file as kernel configuration. Not
- used by default.
-
- -S skip kernel copying: kernel source is already unpacked
- in $target. Defaults to false.
-
- -v increase verbosity level.
-
-Examples:
-
- $pname -s /usr/src/linux-2.6.10-base.tar.gz -t /mnt/lustre2 \\
- -m -j4 -C /usr/src/.config.fc3
-
- $pname -s ftp://ftp.clusterfs.com/pub/kernels/fc3-2.6/linux-2.6.10-base.tgz \\
- -m -j4 -c defconfig -vvv
-
-EOF
- exit 1
-}
-
-#
-# Results:
-#
-# The output of kbuild are times as reported by time. First line is for build
-# that fills the ccache cache (that is also located on the target file
-# system). Consecutive times are repeated builds that reuse ccache
-# cache. Number of iteration is set through -i option. Example output:
-#
-# R 783.757 S 319.615 U 281.720
-# R 540.823 S 277.387 U 54.168
-# R 557.762 S 263.566 U 53.222
-# R 543.877 S 278.569 U 54.412
-# R 544.455 S 279.096 U 53.697
-# R 545.445 S 280.546 U 53.943
-#
-# Notes:
-#
-# Kernel builds can be quite slow as example output above shows. Create your
-# own .config file to build smaller kernel.
-#
-#
-
-OPTVAL=`getopt -o s:m:i:t:vc:SC:h -n 'kbuild' -- "$@"` || usage
-
-# Note the quotes around `$OPTVAL': they are essential!
-eval set -- "$OPTVAL"
-
-LOG_CRIT=0
-LOG_ERROR=1
-LOG_WARN=2
-LOG_INFO=3
-LOG_PROGRESS=4
-LOG_TRACE=5
-LOG_ALL=6
-LOG_DEBUG=7
-
-src=/usr/src/linux
-tgt=/mnt/lustre
-verbose=$LOG_CRIT
-
-pname=$(basename $0)
-
-mopt=""
-mconfig=allyesconfig
-it=3
-lfile=/tmp/$pname-tmp-log.$$
-skip_copy=0
-conf_file=""
-
-while : ;do
- case "$1" in
- -s)
- src="$2"
- shift 2
- ;;
- -t)
- tgt="$2"
- shift 2
- ;;
- -m)
- mopt="$2"
- shift 2
- ;;
- -C)
- conf_file="$2"
- shift 2
- ;;
- -i)
- it="$2"
- shift 2
- ;;
- -c)
- mconfig="$2"
- shift 2
- ;;
- -S)
- skip_copy=1
- shift
- ;;
- -v)
- verbose=$(($verbose + 1))
- shift
- ;;
- -h)
- usage
- ;;
- --)
- shift
- break
- ;;
- *)
- echo "Internal error!"
- usage
- ;;
- esac
-done
-
-[ $verbose -ge $LOG_ALL ] && set -x
-
-
-function warning()
-{
- echo WARNING $pname: $*
-}
-
-function fail()
-{
- local rc
-
- rc=$1
- shift
- warning $* ... failing.
- exit $rc
-}
-
-function log()
-{
- local level
-
- level=$1
- shift
- if [ $verbose -ge $level ] ;then
- echo $*
- fi
-}
-
-function doquiet()
-{
- local cmd
-
- cmd="$*"
- echo >> $lfile
- echo ---- start: $(date +"%Y-%m-%d %H:%M:%S") ---- >> $lfile
- for i in $cmd ;do
- echo "ARG: $i" >> $lfile
- done
- log $LOG_PROGRESS "Running '$cmd'..."
- $cmd >>$lfile 2>&1 || \
- fail 1 "Errors while running '$cmd'. See $lfile for transcript"
- log $LOG_PROGRESS "Finished '$cmd'."
- echo ---- done: $(date +"%Y-%m-%d %H:%M:%S") ---- >> $lfile
-}
-
-function dotime()
-{
- local cmd
-
- cmd="$*"
- export TIMEFORMAT="R %3R S %3S U %3U"
- time $cmd
-}
-
-ccache_dir=$tgt/ccache_dir
-cc_script=$tgt/cc_script
-
-which ccache >/dev/null || fail 2 "No ccache found"
-mkdir -p $ccache_dir || fail 3 "Cannot create $ccache_dir"
-
-export CCACHE_DIR=$ccache_dir
-
-# start the stuff
-
-cd $tgt || fail 4 "Cannot cd into $tgt"
-
-echo '#! /bin/sh' > $cc_script || fail 5 "Cannot write into $cc_script"
-echo 'ccache cc $*' >> $cc_script || fail 6 "Cannot append to $cc_script"
-chmod u+rx $cc_script || fail 7 "Cannot chmod u+rx $cc_script"
-
-cc_opt="CC=$cc_script"
-
-[ $verbose -ge $LOG_TRACE ] && vopt=-v
-
-if [ $skip_copy -eq 0 ] ;then
- case "$src" in
- ftp://*|http://*)
- wget -c $src
- src=$(basename $src)
- ;;
- esac
-
- case "$src" in
- */)
- log $LOG_PROGRESS "Copying directory $src into $tgt"
- cp -a$vopt "$src" .
- ;;
- *.tar.gz|*.tgz)
- tar xzf "$src" $vopt
- ;;
- *.tar.bz2)
- tar xjf "$src" $vopt
- ;;
- *)
- fail 10 "No $src"
- ;;
- esac
-fi
-
-cd linux-* || fail 20 "Cannot change to linux-* from $PWD"
-
-function dokernel()
-{
- doquiet make $mopt mrproper
- if [ x$conf_file = x ] ;then
- doquiet make $mopt $mconfig
- else
- cp $conf_file .config
- doquiet make $mopt oldconfig
- fi
-
- dotime doquiet make $mopt $cc_opt bzImage modules
-}
-
-log $LOG_PROGRESS Fill the cache...
-
-dokernel
-
-for i in $(seq 1 $it) ;do
- log $LOG_PROGRESS Iteration $i...
- dokernel
-done
+++ /dev/null
-#!/bin/sh
-TMP=${TMP:-/tmp}
-LCMD=$TMP/lkcd-cmds-`hostname`
-echo "Storing LKCD module info in $LCMD"
-cat /tmp/ogdb-`hostname` | while read JUNK M JUNK; do
- MOD="../$M"
- MODNAME="`basename $MOD .o`"
- MAP="$TMP/$MODNAME.map"
-
- nm $MOD > $MAP
- echo namelist -a $PWD/$MOD | tee -a $LCMD
- echo symtab -a $MAP $MODNAME | tee -a $LCMD
-done
+++ /dev/null
-#!/bin/sh
-
-LCONF=../utils/lconf
-NAME=${NAME:-echo}
-TMP=${TMP:-/tmp}
-
-config=$NAME.xml
-mkconfig=$NAME.sh
-
-if [ ! -f $config ]; then
- sh $mkconfig $config || exit 1
-fi
-
-${LCONF} --cleanup $NAME.xml
-
+++ /dev/null
-#!/bin/bash
-
-set -e
-
-PATH=$PATH:.
-
-CHECKSTAT=${CHECKSTAT:-"checkstat -v"}
-MOUNT1=${MOUNT1:-/mnt/lustre1}
-MOUNT2=${MOUNT2:-/mnt/lustre2}
-DIRNAME=${DIRNAME:-"ls-timing"}
-DIRSIZE=${DIRSIZE:-200}
-export NAME=${NAME:-mount2}
-
-error () {
- echo FAIL
- exit 1
-}
-
-pass() {
- echo PASS
-}
-echo "Mounting..."
-mount | grep $MOUNT1 || sh llmount.sh
-
-echo -n "Preparing test directory with $DIRSIZE files..."
-rm -rf "$MOUNT1/$DIRNAME"
-rm -rf "$MOUNT2/$DIRNAME"
-mkdir -p "$MOUNT1/$DIRNAME"
-[ -d "$MOUNT2/$DIRNAME" ] || error
-createmany -o $MOUNT1/$DIRNAME/file 0 $DIRSIZE &> /dev/null
-echo "done"
-
-echo -n "Cached ls: "
-time ls -lr $MOUNT1/$DIRNAME 1> /dev/null
-
-echo -n "Uncached ls: "
-time ls -lr $MOUNT2/$DIRNAME 1> /dev/null
-
-
-fsx $MOUNT1/$DIRNAME/fsx.file &>/dev/null &
-fsxpid=$!
-
-echo -n "Cached busy ls:"
-time ls -lr $MOUNT1/$DIRNAME 1> /dev/null
-
-echo -n "Uncached busy ls: "
-time ls -lr $MOUNT2/$DIRNAME 1> /dev/null
-
-kill $fsxpid
-
-exit
+++ /dev/null
-#!/bin/bash
-#
-# Test case for 2 different filesystems mounted on the same client.
-# Uses 3 umls
-
-config=${config:-`basename $0 .sh`.xml}
-LMC=${LMC-../utils/lmc}
-TMP=${TMP:-/tmp}
-
-MDSDEV=${MDSDEV:-$TMP/mds1-`hostname`}
-MDSDEV2=${MDSDEV2:-$TMP/mds2-`hostname`}
-MOUNT=${MOUNT:-/mnt/lustre}
-MOUNT1=${MOUNT1:-$MOUNT}
-MOUNT2=${MOUNT2:-${MOUNT}2}
-MDSSIZE=50000
-FSTYPE=${FSTYPE:-ext3}
-
-STRIPE_BYTES=${STRIPE_BYTES:-1048576}
-OSTDEV1=${OSTDEV1:-$TMP/ost1-`hostname`}
-OSTDEV2=${OSTDEV2:-$TMP/ost2-`hostname`}
-OSTSIZE=100000
-
-MDSNODE=${MDSNODE:-uml1}
-OSTNODE=${OSTNODE:-uml2}
-CLIENT=${CLIENT:-client1}
-CLIENT2=${CLIENT2:-client2}
-
-# create nodes
-${LMC} -o $config --add net --node $MDSNODE --nid $MDSNODE --nettype tcp || exit 1
-${LMC} -m $config --add net --node $OSTNODE --nid $OSTNODE --nettype tcp || exit 2
-${LMC} -m $config --add net --node $CLIENT --nid '*' --nettype tcp || exit 3
-if [ "$CLIENT" != "$CLIENT2" ]; then
- ${LMC} -m $config --add net --node $CLIENT2 --nid '*' --nettype tcp || exit 3
-fi
-
-# configure mds server
-${LMC} -m $config --add mds --node $MDSNODE --mds mds1 --group fs1 --fstype $FSTYPE --dev $MDSDEV --size $MDSSIZE ||exit 10
-${LMC} -m $config --add mds --node $MDSNODE --mds mds2 --group fs2 --fstype $FSTYPE --dev $MDSDEV2 --size $MDSSIZE ||exit 10
-
-# configure ost
-${LMC} -m $config --add lov --lov lov1 --mds mds1 --stripe_sz $STRIPE_BYTES --stripe_cnt 0 --stripe_pattern 0 || exit 20
-${LMC} -m $config --add lov --lov lov2 --mds mds2 --stripe_sz $STRIPE_BYTES --stripe_cnt 0 --stripe_pattern 0 || exit 20
-${LMC} -m $config --add ost --node $OSTNODE --group fs1 --lov lov1 --fstype $FSTYPE --dev $OSTDEV1 --size $OSTSIZE || exit 21
-${LMC} -m $config --add ost --node $OSTNODE --group fs2 --lov lov2 --fstype $FSTYPE --dev $OSTDEV2 --size $OSTSIZE || exit 22
-
-# create client config
-${LMC} -m $config --add mtpt --node $CLIENT --path ${MOUNT1} --mds mds1 --lov lov1 || exit 30
-${LMC} -m $config --add mtpt --node $CLIENT2 --path ${MOUNT2} --mds mds2 --lov lov2 || exit 30
+++ /dev/null
-#!/bin/sh
-
-set -ex
-
-LUSTRE=${LUSTRE:-`dirname $0`/..}
-LTESTDIR=${LTESTDIR:-"$LUSTRE/../ltest"}
-PATH=$PATH:$LUSTRE/utils:$LUSTRE/tests
-
-. $LTESTDIR/functional/llite/common/common.sh
-
-# Allow us to override the setup if we already have a mounted system by
-# setting SETUP=" " and CLEANUP=" "
-SETUP=${SETUP:-"setup"}
-CLEANUP=${CLEANUP:-"cleanup"}
-
-PDSH='pdsh -S -w'
-
-# XXX I wish all this stuff was in some default-config.sh somewhere
-MDSNODE=${MDSNODE:-mdev6}
-OSTNODE=${OSTNODE:-mdev7}
-CLIENT=${CLIENT:-mdev8}
-NETTYPE=${NETTYPE:-tcp}
-MOUNTPT=${MOUNTPT:-/mnt/lustre}
-CONFIG=${CONFIG:-recovery-cleanup.xml}
-MDSDEV=${MDSDEV:-/tmp/mds1-`hostname`}
-MDSSIZE=${MDSSIZE:-100000}
-FSTYPE=${FSTYPE:-ext3}
-OSTDEV=${OSTDEV:-/tmp/ost1-`hostname`}
-OSTSIZE=${OSTSIZE:-100000}
-STRIPE_BYTES=${STRIPE_BYTES:-1048576}
-
-do_mds() {
- $PDSH $MDSNODE "PATH=\$PATH:$LUSTRE/utils:$LUSTRE/tests; cd $PWD; $@" || exit $?
-}
-
-do_client() {
- $PDSH $CLIENT "PATH=\$PATH:$LUSTRE/utils:$LUSTRE/tests; cd $PWD; $@" || exit $?
-}
-
-do_ost() {
- $PDSH $OSTNODE "PATH=\$PATH:$LUSTRE/utils:$LUSTRE/tests; cd $PWD; $@" || exit $?
-}
-
-drop_request() {
- do_mds "echo 0x121 > /proc/sys/lustre/fail_loc"
- do_client "$1 & sleep ${TIMEOUT:-5}; sleep 2; kill \$!"
- do_mds "echo 0 > /proc/sys/lustre/fail_loc"
-}
-
-make_config() {
- rm -f $CONFIG
- for NODE in $CLIENT $MDSNODE $OSTNODE; do
- lmc -m $CONFIG --add net --node $NODE --nid `h2$NETTYPE $NODE` \
- --nettype $NETTYPE || exit 4
- done
- lmc -m $CONFIG --add mds --node $MDSNODE --mds mds1 --fstype $FSTYPE \
- --dev $MDSDEV --size $MDSSIZE || exit 5
- lmc -m $CONFIG --add lov --lov lov1 --mds mds1 --stripe_sz $STRIPE_BYTES \
- --stripe_cnt 0 --stripe_pattern 0 || exit 6
- lmc -m $CONFIG --add ost --nspath /mnt/ost_ns --node $OSTNODE \
- --lov lov1 --dev $OSTDEV --size $OSTSIZE --fstype $FSTYPE || exit 7
- lmc -m $CONFIG --add mtpt --node $CLIENT --path $MOUNTPT \
- --mds mds1 --lov lov1 || exit 8
-}
-
-start_mds() {
- do_mds "lconf $@ $CONFIG"
-}
-
-shutdown_mds() {
- do_mds "lconf $@ --cleanup $CONFIG"
-}
-
-start_ost() {
- do_ost "lconf $@ $CONFIG"
-}
-
-shutdown_ost() {
- do_ost "lconf $@ --cleanup $CONFIG"
-}
-
-mount_client() {
- do_client "lconf $@ $CONFIG"
-}
-
-unmount_client() {
- do_client "lconf $@ --cleanup $CONFIG"
-}
-
-setup() {
- make_config
- start_mds ${REFORMAT:---reformat}
- start_ost ${REFORMAT:---reformat}
- mount_client --timeout=${TIMEOUT:-5} --lustre_upcall=/bin/true
-}
-
-cleanup() {
- do_mds "echo 0 > /proc/sys/lustre/fail_loc"
- unmount_client $@ || exit 97
- shutdown_mds $@ || exit 98
- shutdown_ost $@ || exit 99
-}
-
-wait_for_timeout() {
- # wait to make sure we enter recovery
- # it'd be better if the upcall notified us somehow, I think
- sleep $(( ${TIMEOUT:-5} + 2 ))
-}
-
-try_to_cleanup() {
- kill -INT $!
- unmount_client --force --dump $TMP/recovery-cleanup-`hostname`.log
- mount_client --timeout=${TIMEOUT:-5} --lustre_upcall=/bin/true
-}
-
-if [ ! -z "$ONLY" ]; then
- eval "$ONLY"
- exit $?
-fi
-
-$SETUP
-
-drop_request "mcreate /mnt/lustre/1" & wait_for_timeout
-try_to_cleanup
-
-drop_request "tchmod 111 /mnt/lustre/2" & wait_for_timeout
-try_to_cleanup
-
-drop_request "statone /mnt/lustre/2" & wait_for_timeout
-try_to_cleanup
-
-do_client "cp /etc/inittab /mnt/lustre/inittab"
-drop_request "cat /mnt/lustre/inittab > /dev/null" & wait_for_timeout
-try_to_cleanup
-
-drop_request "mv /mnt/lustre/inittab /mnt/lustre/renamed" & wait_for_timeout
-try_to_cleanup
-
-drop_request "mlink /mnt/lustre/renamed-again /mnt/lustre/link1" & wait_for_timeout
-try_to_cleanup
-
-drop_request "munlink /mnt/lustre/link1" & wait_for_timeout
-try_to_cleanup
-
-FORCE=--force $CLEANUP '--dump $TMP/recovery-cleanup-`hostname`.log'
+++ /dev/null
-#!/bin/sh -vx
-
-set -e
-
-export PATH=`dirname $0`/../utils:$PATH
-
-config=${1:-`basename $0 .sh`.xml}
-
-BATCH=/tmp/lmc-batch.$$
-save_cmd() {
- echo "$@" >> $BATCH
-}
-
-LMC_REAL="${LMC:-lmc} -m $config"
-LMC="save_cmd"
-
-TMP=${TMP:-/tmp}
-
-MOUNT=${MOUNT:-/mnt/lustre}
-
-STRIPE_BYTES=$((1024*1024))
-STRIPES_PER_OBJ=1
-
-# specific journal size for the ost, in MB
-JSIZE=${JSIZE:-0}
-JARG=""
-[ "$JSIZE" -gt 0 ] && JARG="--journal_size $JSIZE"
-
-MDSNODE=${MDSNODE:-srv1}
-MDSDEV=${MDSDEV:-$TMP/mds1-$MDSNODE}
-MDSSIZE=${MDSSIZE:-400000}
-OSTNODES=${OSTNODES:-"srv2 srv3 srv2 srv3"}
-OSTSIZE=${OSTSIZE:-150000}
-# OSTDEVN will still override the device for OST N
-OSTFAILOVER=${OSTFAILOVER:---failover}
-ROUTERS=${ROUTERS:-"cli1 cli2"}
-CLIENT_NETTYPE=elan
-CLIENT_CLUSTER=${CLIENT_CLUSTER:-0x0000}
-CLIENT_LO=${CLIENT_LO:-cli3}
-CLIENT_HI=${CLIENT_HI:-cli4}
-CLIENTS=${CLIENTS:-client}
-SERVER_NETTYPE=tcp
-SERVER_CLUSTER=${SERVER_CLUSTER:-0x1000}
-FSNAME=fs1
-
-h2tcp () {
- case $1 in
- client) echo '\*' ;;
- *) echo $1 ;;
- esac
-}
-
-h2elan () { # assumes node names of the form fooN, where N is elan node ID
- case $1 in
- client) echo '\*' ;;
- *) echo $1 | sed "s/[^0-9]*//" ;;
- esac
-}
-
-rm -f $config $BATCH
-
-# MDSNODE
-echo; echo -n "adding MDS on: $MDSNODE"
-eval "NODE$MDSNODE=y"
-$LMC --add net --node $MDSNODE --nid `h2$SERVER_NETTYPE $MDSNODE` \
- --nettype $SERVER_NETTYPE --cluster_id $SERVER_CLUSTER
-$LMC --add mds --node $MDSNODE --mds mds-$FSNAME --dev $MDSDEV $MDSOPT \
- --size $MDSSIZE
-$LMC --add lov --lov lov-$FSNAME --mds mds-$FSNAME --stripe_sz $STRIPE_BYTES \
- --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
-# MDS route to elan client
-for R in $ROUTERS; do
- echo -n " [r=$R]"
- $LMC --node $MDSNODE --add route --nettype $SERVER_NETTYPE \
- --gw `h2$CLIENT_NETTYPE $R` \
- --lo `h2$CLIENT_NETTYPE $CLIENT_LO` \
- --hi `h2$CLIENT_NETTYPE $CLIENT_HI` \
- --gateway_cluster_id $SERVER_CLUSTER \
- --target_cluster_id $SERVER_CLUSTER
-done
-
-# OSTNODE
-COUNT=1
-for OSTNODE in $OSTNODES; do
- OST=ost$COUNT
- eval OSTDEV=\$OSTDEV$COUNT
- if [ -z "$OSTDEV" ]; then
- eval OSTDEV=${!OSTDEV:=$TMP/$OST-$OSTNODE}
- fi
- DEV=`basename $OSTDEV`
- echo; echo -n "adding OST on: $OSTNODE[$DEV]"
- if [ "`eval echo \\$NODE$OSTNODE`" != "y" ]; then
- $LMC --add net --node $OSTNODE --nid $OSTNODE \
- --nettype $SERVER_NETTYPE --cluster_id $SERVER_CLUSTER
- # OST route to elan clients
- for R in $ROUTERS; do
- echo -n " [r=$R]"
- $LMC --node $OSTNODE --add route \
- --nettype $SERVER_NETTYPE \
- --gw `h2$CLIENT_NETTYPE $R` \
- --lo `h2$CLIENT_NETTYPE $CLIENT_LO` \
- --hi `h2$CLIENT_NETTYPE $CLIENT_HI` \
- --gateway_cluster_id $SERVER_CLUSTER \
- --target_cluster_id $SERVER_CLUSTER
- done
- eval "NODE$OSTNODE=y"
- fi
-
- $LMC --add ost --node $OSTNODE --ost ost-$FSNAME-$OSTNODE-$DEV \
- --lov lov-$FSNAME $OSTFAILOVER --dev $OSTDEV --size $OSTSIZE \
- $OSTOPT
- COUNT=`expr $COUNT + 1`
-done
-
-# ROUTER
-echo; echo -n "adding ROUTER on: "
-for ROUTER in $ROUTERS; do
- echo -n " $ROUTER"
- $LMC --node $ROUTER --add net --nid `h2$CLIENT_NETTYPE $ROUTER` \
- --cluster_id $SERVER_CLUSTER --nettype $SERVER_NETTYPE \
- --hostaddr $ROUTER --router
- $LMC --node $ROUTER --add net --nid `h2$CLIENT_NETTYPE $ROUTER` \
- --cluster_id $CLIENT_CLUSTER --nettype $CLIENT_NETTYPE \
- --router
- # ROUTER route to OSTs and MDS
- for NODE in `echo $MDSNODE $OSTNODES | tr -s " " "\n" | sort -u`; do
- $LMC --node $ROUTER --add route \
- --nettype $SERVER_NETTYPE \
- --gw `h2$CLIENT_NETTYPE $ROUTER` \
- --lo `h2$SERVER_NETTYPE $NODE` \
- --gateway_cluster_id $SERVER_CLUSTER \
- --target_cluster_id $SERVER_CLUSTER
- done
- # ROUTER route to clients
- $LMC --node $ROUTER --add route --nettype $CLIENT_NETTYPE \
- --gw `h2$CLIENT_NETTYPE $ROUTER` \
- --lo `h2$CLIENT_NETTYPE $CLIENT_LO` \
- --hi `h2$CLIENT_NETTYPE $CLIENT_HI` \
- --gateway_cluster_id $CLIENT_CLUSTER \
- --target_cluster_id $CLIENT_CLUSTER
-done
-
-# CLIENT
-echo; echo -n "adding CLIENT on: "
-for CLIENT in $CLIENTS; do
- echo -n " $CLIENT"
- $LMC --node $CLIENT --add net --nid `h2$CLIENT_NETTYPE $CLIENT` \
- --cluster_id $CLIENT_CLUSTER --nettype $CLIENT_NETTYPE
- $LMC --node $CLIENT --add mtpt --path $MOUNT --mds mds-$FSNAME \
- --lov lov-$FSNAME $CLIENTOPT
-done
-echo
-
-set -vx
-echo "generating config $config from $BATCH"
-$LMC_REAL --batch $BATCH
+++ /dev/null
-#!/bin/bash
-PATH=`dirname $0`:`dirname $0`/../utils:$PATH
-TMP=${TMP:-/tmp}
-
-OBD=${1:-obdfilter}
-TARGET=`ls /proc/fs/lustre/$OBD | grep -v num_refs | head -n 1`
-[ -z "$TARGET" ] && echo "no TARGET available, skipping quotacheck test" && exit 0
-
-insmod ../lvfs/quotacheck_test.ko || exit 1
-lctl modules > $TMP/ogdb-`hostname`
-echo "NOW reload debugging syms.."
-
-RC=0
-lctl <<EOT || RC=2
-newdev
-attach quotacheck_test qchk_name qchk_uuid
-setup $TARGET
-EOT
-
-# Using ignore_errors will allow lctl to cleanup even if the test fails.
-lctl <<EOC
-cfg_device qchk_name
-ignore_errors
-cleanup
-detach
-EOC
-rmmod quotacheck_test || RC2=3
-[ $RC -eq 0 -a "$RC2" ] && RC=$RC2
-
-exit $RC
+++ /dev/null
-#!/bin/bash
-PATH=`dirname $0`:`dirname $0`/../utils:$PATH
-TMP=${TMP:-/tmp}
-OBD=${1:-obdfilter}
-
-TARGET=`ls /proc/fs/lustre/$OBD | grep -v num_refs | head -n 1`
-[ -z "$TARGET" ] && echo "no TARGET available, skipping quotactl test" && exit 0
-
-insmod ../lvfs/quotactl_test.ko || exit 1
-lctl modules > $TMP/ogdb-`hostname`
-echo "NOW reload debugging syms.."
-
-RC=0
-lctl <<EOT || RC=2
-newdev
-attach quotactl_test qctl_name qctl_uuid
-setup $TARGET
-EOT
-
-# Using ignore_errors will allow lctl to cleanup even if the test fails.
-lctl <<EOC
-cfg_device qctl_name
-ignore_errors
-cleanup
-detach
-EOC
-rmmod quotactl_test || RC2=3
-[ $RC -eq 0 -a "$RC2" ] && RC=$RC2
-
-exit $RC
+++ /dev/null
-#!/bin/bash
-PATH=`dirname $0`:`dirname $0`/../utils:$PATH
-TMP=${TMP:-/tmp}
-
-MDS=`ls /proc/fs/lustre/mdt | grep -v num_refs | head -n 1`
-[ -z "$MDS" ] && echo "no MDS available, skipping quotafile test" && exit 0
-
-insmod ../ldiskfs/quotafmt_test.ko || exit 1
-lctl modules > $TMP/ogdb-`hostname`
-echo "NOW reload debugging syms.."
-
-RC=0
-lctl <<EOT || RC=2
-newdev
-attach quotfmt_test quotfmt_name quotfmt_uuid
-setup $MDS
-EOT
-
-# Using ignore_errors will allow lctl to cleanup even if the test fails.
-lctl <<EOC
-cfg_device quotfmt_name
-ignore_errors
-cleanup
-detach
-EOC
-rmmod quotafmt_test || RC2=3
-[ $RC -eq 0 -a "$RC2" ] && RC=$RC2
-
-exit $RC
+++ /dev/null
-#!/bin/sh
-while sleep 1 ; do
- echo '-----------------------'
- egrep "ll_|ldlm|filp|dentry|inode|portals|size-[0-9]* " /proc/slabinfo
- cat /proc/meminfo
-done
+++ /dev/null
-#!/bin/sh
-
-# sanity-buffalo.sh
-#
-# This script is used to report the results from a sanity run to buffalo.
-#
-# Assumptions:
-# - the target host on which you are running the test (be it
-# a real machine or a uml session) is accessible via DSH
-
-export TMP=${TMP:-"/tmp"}
-export LOG=${LOG:-"$TMP/sanity-buffalo.log"}
-export DMESGLOG=${DMESGLOG:-"$TMP/sanity-buffalo-dmesg.log"}
-export OUTPUT=${OUTPUT:-"$TMP/buffalo_mail"}
-export DSH=${DSH:-"pdsh -S -w"}
-export LUSTRE_SRC=${LUSTRE_SRC:-"$PWD/.."}
-export LTESTDIR=${LTESTDIR:-"$PWD/../../ltest"}
-export TARGET=${TARGET:-"uml"}
-export SCP=${SCP:-"scp"}
-#export NO_SHARED_FS=0
-
-# Changeable buffalo config variables.
-
-# The following RECIPIENTS string sends results to the buffalo-sandbox.
-RECIPIENTS=${RECIPIENTS:-"buffalo-sandbox@clusterfs.com"}
-# The following RECIPIENTS string sends results to buffalo proper.
-# RECIPIENTS=${RECIPIENTS:-"buffalo_results@clusterfs.com"}
-
-export TESTNAME=${TESTNAME:-"sanity-buffalo"}
-export TESTDESC=${TESTDESC:-"Local test in $TARGET for correctness"}
-export TESTGROUP=${TESTGROUP:-"correctness"}
-export LUSTRE_TAG=${LUSTRE_TAG:-`cat $PWD/CVS/Tag | cut -c 2-`}
-export TESTARCH=${TESTARCH:-`uname -r`}
-export NETTYPE=${NETTYPE:-"tcp"}
-export MACHINENAME=${MACHINENAME:-`hostname`}
-
-usage() {
-
- echo "echo
-Usage: sanity-buffalo.sh --sender=email_address [--config=config_name] [--test=test_name] [--extra-params=extra_parameters] [--target=hostname] [--help]"
- if [ x$1 = x-h ]
- then
- echo "
-
---sender=email_address
- Email address of the person running the test. (Required)
-
---config=config_name
- Config type to use for lustre setup. Any of the standard script names
- from lustre/tests are allowable:
- lov, local, mount2lov, local-large-inode (default)
-
---test=test_script
- Name of the test script to run. Default is \"sanity.sh\".
-
---target=hostname
- The machine (or uml session) on which to run the test.
- Defaults to \"uml\"
-
---extra-params=extra_parameters
- Extra parameters to pass to the test script.
- e.g. --extra-params=\"START=' ' CLEAN=' '\"
- NOTE: NAME=lov should not be set here, use --config
-
---help
- Display this usage message
-
-"
- exit 0
- else
- exit 1
- fi
-}
-
-check_mail() {
- if [ -z "$SENDER" ] ; then
- echo "Please supply a valid email address for --sender"
- usage
- fi
-}
-
-check_config() {
- if [ -z "$CONFIG_NAME" ] ; then
- echo "Using default config: local-large-inode"
- CONFIG_NAME="local-large-inode"
- fi
-}
-
-check_test() {
- if [ -z "$TESTSCRIPT" ] ; then
- echo "Running default test: sanity.sh"
- TESTSCRIPT="sanity.sh"
- fi
-}
-
-
-do_prepare() {
- if [ -e $LOG ] ; then
- rm -fr $LOG
- fi
- dmesg -c > /dev/null
- $DSH $TARGET "dmesg -c > /dev/null" || exit 1
- return 0
-}
-
-run_test() {
- $DSH $TARGET "cd $LUSTRE_SRC/tests && PATH=/sbin:/usr/sbin:\$PATH NAME=$CONFIG_NAME sh llmount.sh 2>&1" | dshbak -c >> $LOG
- if ! [ $? = 0 ] ; then
- echo "Can not mount lustre on remoute machine: $TARGET "
- exit 2
- fi
- if [ $NO_SHARED_FS ]; then
- $SCP $TARGET:$LUSTRE_SRC/tests/${CONFIG_NAME}.xml $PWD/config.xml
- if ! [ $? = 0 ] ; then
- echo "Can not get the config file from remoute machine: $TARGET "
- exit 3
- fi
- fi
-
- COMMAND="cd $LUSTRE_SRC/tests && NAME=$CONFIG_NAME PATH=/sbin:/usr/sbin:\$PATH $EXTRA_PARAMS sh $TESTSCRIPT"
- echo >> $LOG;echo "COMMAND: $COMMAND" >> $LOG;echo >> $LOG
-
- $DSH $TARGET "$COMMAND 2>&1" | dshbak -c >> $LOG
- return $?
-}
-
-do_eval() {
- RC=$1
-
- if [ $RC -eq 0 ]; then
- RESULT="pass"
- else
- RESULT="fail"
- fi
-
- if [ "$RESULT" = "fail" ] ; then
- $DSH $TARGET "dmesg" | dshbak -c >> $DMESGLOG
- fi
-}
-
-send_report() {
- . $LTESTDIR/acceptance/harness/config/common/buffalo.sh
-
- if [ $NO_SHARED_FS ]; then
- CONFIG="$PWD/config.xml"
- else
- CONFIG="${LUSTRE_SRC}/tests/${CONFIG_NAME}.xml"
- fi
- CONFIGDESC=${CONFIGDESC:-"${TARGET}-${CONFIG_NAME}"}
-
- ### send buffalo reports
- echo "Sending buffalo report..."
- rm -fr $OUTPUT
- buffalo_format_result > $OUTPUT
- buffalo_format_config $CONFIG >> $OUTPUT
- buffalo_format_log $LOG >> $OUTPUT
- buffalo_format_dmesg $DMESGLOG >> $OUTPUT
- buffalo_send_report $OUTPUT
- rm -f $OUTPUT
- rm -f $DMESGLOG
- rm -f $LOG
- echo "done."
-}
-
-do_cleanup() {
- $DSH $TARGET "cd $LUSTRE_SRC/tests && NAME=$CONFIG_NAME sh llmountcleanup.sh 2>&1" | dshbak -c >> $LOG
- if ! [ $? = 0 ] ; then
- echo "failed to clean up lustre"
- fi
-}
-
-options=`getopt -o h --long extra-params:,target:,sender:,config:,test:,help -- "$@"`
-
-if [ $? -ne 0 ] ; then
- usage
-fi
-eval set -- "$options"
-while true
- do
- case "$1" in
- --config)
- CONFIG_NAME=$2
- shift 2 ;;
- --sender)
- SENDER=$2
- shift 2 ;;
- --target)
- TARGET=$2
- shift 2 ;;
- --extra-params)
- EXTRA_PARAMS=$2
- shift 2 ;;
- --test)
- TESTSCRIPT=$2
- shift 2 ;;
- --help)
- usage -h ;;
- -h)
- usage -h ;;
- --)
- shift
- break ;;
- esac
-done
-
-if [ ! -d ${LUSTRE_SRC} ]; then
- echo "LUSTRE_SRC dir $LUSTRE_SRC doesn't exist"
- exit 1
-fi
-
-if [ ! -d ${LTESTDIR} ]; then
- echo "LTESTDIR dir $LTESTDIR doesn't exist"
- exit 2
-fi
-
-# Gather some buffalo variable before we run the test.
-export KERNEL=`$DSH $TARGET uname -r | sed "s/^.*\ //g"`
-export LUSTRE_BUILD=`${LUSTRE_SRC}/utils/lctl lustre_build_version 2>/dev/null|grep "^lctl" | awk '/^lctl/ {print $3}'`
-
-check_mail && check_config && check_test
-
-do_prepare
-run_test
-do_eval $?
-do_cleanup
-
-send_report
-
-exit 0
-
-
createmany -o $DIR/d27u/t- 1000
sysctl -w lustre.fail_loc=0
- $GETSTRIPE $DIR/d27u > $TMP/files
- OBJS=`cat $TMP/files | awk -vobjs=0 '($1 == 0) { objs += 1 } END { print objs;}'`
+ TLOG=$DIR/$tfile.getstripe
+ $GETSTRIPE $DIR/d27u > $TLOG
+ OBJS=`awk -vobj=0 '($1 == 0) { obj += 1 } END { print obj;}' $TLOG`
unlinkmany $DIR/d27u/t- 1000
[ $OBJS -gt 0 ] && \
- error "Found $OBJS objects were created on OST-0" || pass
+ error "$OBJS objects created on OST-0. See $TLOG" || pass
}
run_test 27u "skip object creation on OSC w/o objects =========="
+++ /dev/null
-#!/bin/bash
-
-fail()
-{
- echo "ERROR: $@"
- exit 1
-}
-
-check_xattr()
-{
- name=$1
- value=$2
- file="$3"
-
- if test "x$value" != "x<deleted>"; then
- res=`$getattr -n $name $file 2>/dev/null | grep -v "^#" | sed 's/\"//g'`
-
- if test "x$res" = "x$name=$value"; then
- return 0
- else
- return 1
- fi
- else
- res=`$getattr -d -m ".*" $file 2>/dev/null | grep -v "^#" | sed 's/\"//g'`
-
- if echo $res | grep $name > /dev/null 2>&1; then
- return 1
- else
- return 0
- fi
- fi
-}
-
-test_del_xattr()
-{
- name=$1
- file=$2
- message=$3
-
- echo -n "$message..."
- `$setattr -x $name $file 2> /dev/null`
-
- if test "x$?" != "x0"; then
- echo "failed"
- return 1
- else
- check_xattr $name "<deleted>" $file && echo "done" || echo "failed"
- return 0
- fi
-}
-
-test_set_xattr()
-{
- name=$1
- value=$2
- file=$3
- message=$4
-
- echo -n "$message..."
- `$setattr -n $name -v $value $file 2>/dev/null`
-
- if test "x$?" != "x0"; then
- echo "failed"
- return 1
- else
- check_xattr $name $value $file && echo "done" || echo "failed"
- return 0
- fi
-}
-
-test_list_xattr()
-{
- file=$1
- message=$2
-
- echo -n "$message..."
- `$setattr -n list_name0 -v list_value0 $file 2>/dev/null` || {
- echo "failed"
- return 1
- }
-
- `$setattr -n list_name1 -v list_value1 $file 2>/dev/null` || {
- echo "failed"
- return 1
- }
-
- `$setattr -n list_name2 -v list_value2 $file 2>/dev/null` || {
- echo "failed"
- return 1
- }
-
- values=`$getattr -d -m ".*" $file 2>/dev/null | grep -v "^#" | \
-grep list_name | sed 's/\"//g'`
-
- i=0
-
- for chunk in $values; do
- if test "x$chunk" != "xlist_name$i=list_value$i"; then
- echo "failed"
- return 1
- fi
-
- let i=$i+1
- done
-
- echo "done"
- return 0
-}
-
-# check each function related to xattrs
-test_individual()
-{
- file="$1"
-
- test_set_xattr test_name0 test_value0 $file "Create new attribute" &&
- test_set_xattr test_name0 test_value012345 $file "Expanding attribute" &&
- test_set_xattr test_name0 test_value0123 $file "Shrinking attribute" &&
- test_del_xattr test_name0 $file "Delete attribute"
- test_list_xattr $file "Getting list of attributes"
-}
-
-# checking xattr code as a whole. Not implemented yet.
-test_composite()
-{
- return 0
-}
-
-getattr=$(which getfattr 2>/dev/null)
-setattr=$(which setfattr 2>/dev/null)
-
-if test "x$getattr" = "x" -o "x$setattr" = "x"; then
- fail "Can't find getfattr or setfattr utilities in current path."
-fi
-
-if ! mount | grep tmpfs > /dev/null 2>&1; then
- fail "tmpfs is not mounted"
-fi
-
-mntpoint=$(mount | grep tmpfs | awk '{print $3}')
-
-if test "x$mntpoint" = "x"; then
- fail "Can't find tmpfs mount point"
-fi
-
-rm -fr $mntpoint/test_file0 2> /dev/null
-touch "$mntpoint/test_file0"
-
-test_individual "$mntpoint/test_file0" &&
-test_composite "$mntpoint/test_file0" && echo "All tests passed"