⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sanity.sh

📁 lustre 1.6.5 source code
💻 SH
📖 第 1 页 / 共 5 页
字号:
#!/bin/bash## Run select tests by setting ONLY, or as arguments to the script.# Skip specific tests by setting EXCEPT.## e.g. ONLY="22 23" or ONLY="`seq 32 39`" or EXCEPT="31"set -eONLY=${ONLY:-"$*"}# bug number for skipped test:  13297 2108 9789 3637 9789 3561 12622 13310 10764ALWAYS_EXCEPT=${ALWAYS_EXCEPT:-"27u   42a  42b  42c  42d  45   51d   74b   75 $SANITY_EXCEPT" }# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!# Tests that fail on uml, maybe elsewhere, FIXMECPU=`awk '/model/ {print $4}' /proc/cpuinfo`#                                    buffer i/o errs             sock spc runas[ "$CPU" = "UML" ] && EXCEPT="$EXCEPT 27m 27n 27o 27p 27q 27r 31d 54a  64b 99a 99b 99c 99d 99e 99f 101"case `uname -r` in2.4*) FSTYPE=${FSTYPE:-ext3};    ALWAYS_EXCEPT="$ALWAYS_EXCEPT 76"	[ "$CPU" = "UML" ] && ALWAYS_EXCEPT="$ALWAYS_EXCEPT 105a";;2.6*) FSTYPE=${FSTYPE:-ldiskfs}; ALWAYS_EXCEPT="$ALWAYS_EXCEPT " ;;*) error "unsupported kernel" ;;esacSRCDIR=`dirname $0`export PATH=$PWD/$SRCDIR:$SRCDIR:$SRCDIR/../utils:$PATH:/sbinTMP=${TMP:-/tmp}CHECKSTAT=${CHECKSTAT:-"checkstat -v"}CREATETEST=${CREATETEST:-createtest}LFS=${LFS:-lfs}SETSTRIPE=${SETSTRIPE:-"$LFS setstripe"}GETSTRIPE=${GETSTRIPE:-"$LFS getstripe"}LSTRIPE=${LSTRIPE:-"$LFS setstripe"}LFIND=${LFIND:-"$LFS find"}LVERIFY=${LVERIFY:-ll_dirstripe_verify}LSTRIPEINFO=${LSTRIPEINFO:-ll_getstripe_info}LCTL=${LCTL:-lctl}MCREATE=${MCREATE:-mcreate}OPENFILE=${OPENFILE:-openfile}OPENUNLINK=${OPENUNLINK:-openunlink}RANDOM_READS=${RANDOM_READS:-"random-reads"}TOEXCL=${TOEXCL:-toexcl}TRUNCATE=${TRUNCATE:-truncate}MUNLINK=${MUNLINK:-munlink}SOCKETSERVER=${SOCKETSERVER:-socketserver}SOCKETCLIENT=${SOCKETCLIENT:-socketclient}IOPENTEST1=${IOPENTEST1:-iopentest1}IOPENTEST2=${IOPENTEST2:-iopentest2}MEMHOG=${MEMHOG:-memhog}DIRECTIO=${DIRECTIO:-directio}ACCEPTOR_PORT=${ACCEPTOR_PORT:-988}UMOUNT=${UMOUNT:-"umount -d"}CHECK_GRANT=${CHECK_GRANT:-"yes"}GRANT_CHECK_LIST=${GRANT_CHECK_LIST:-""}export NAME=${NAME:-local}SAVE_PWD=$PWDCLEANUP=${CLEANUP:-:}SETUP=${SETUP:-:}TRACE=${TRACE:-""}LUSTRE=${LUSTRE:-`dirname $0`/..}. $LUSTRE/tests/test-framework.shinit_test_env $@. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}[ "$SLOW" = "no" ] && EXCEPT_SLOW="24o 27m 36f 36g 51b 51c 60c 63 64b 68 71 73 77f 78 101 103 115 120g 124b"SANITYLOG=${TESTSUITELOG:-$TMP/$(basename $0 .sh).log}FAIL_ON_ERROR=falsecleanup() {	echo -n "cln.."	pgrep ll_sa > /dev/null && { echo "There are ll_sa thread not exit!"; exit 20; }	cleanupall ${FORCE} $* || { echo "FAILed to clean up"; exit 20; }}setup() {	echo -n "mnt.."        load_modules	setupall || exit 10	echo "done"}check_kernel_version() {	VERSION_FILE=version	WANT_VER=$1	GOT_VER=$(lctl get_param -n $VERSION_FILE | awk '/kernel:/ {print $2}')	[ $GOT_VER == "patchless" ] && return 0	[ $GOT_VER -ge $WANT_VER ] && return 0	log "test needs at least kernel version $WANT_VER, running $GOT_VER"	return 1}if [ "$ONLY" == "cleanup" ]; then 	sh llmountcleanup.sh 	exit 0fi[ "$SANITYLOG" ] && rm -f $SANITYLOG || truecheck_and_setup_lustreDIR=${DIR:-$MOUNT}[ -z "`echo $DIR | grep $MOUNT`" ] && echo "$DIR not in $MOUNT" && exit 99LOVNAME=`lctl get_param -n llite.*.lov.common_name | tail -n 1`OSTCOUNT=`lctl get_param -n lov.$LOVNAME.numobd`STRIPECOUNT=`lctl get_param -n lov.$LOVNAME.stripecount`STRIPESIZE=`lctl get_param -n lov.$LOVNAME.stripesize`ORIGFREE=`lctl get_param -n lov.$LOVNAME.kbytesavail`MAXFREE=${MAXFREE:-$((200000 * $OSTCOUNT))}[ -f $DIR/d52a/foo ] && chattr -a $DIR/d52a/foo[ -f $DIR/d52b/foo ] && chattr -i $DIR/d52b/foorm -rf $DIR/[Rdfs][0-9]*# $RUNAS_ID may get set incorrectly somewhere else[ $UID -eq 0 -a $RUNAS_ID -eq 0 ] && error "\$RUNAS_ID set to 0, but \$UID is also 0!"check_runas_id $RUNAS_ID $RUNASbuild_test_filterecho "preparing for tests involving mounts"EXT2_DEV=${EXT2_DEV:-$TMP/SANITY.LOOP}touch $EXT2_DEVmke2fs -j -F $EXT2_DEV 8000 > /dev/nullecho # add a newline after mke2fs.umask 077OLDDEBUG="`sysctl -n lnet.debug 2> /dev/null`"sysctl -w lnet.debug=-1 2> /dev/null || truetest_0() {	touch $DIR/$tfile	$CHECKSTAT -t file $DIR/$tfile || error	rm $DIR/$tfile	$CHECKSTAT -a $DIR/$tfile || error}run_test 0 "touch .../$tfile ; rm .../$tfile ====================="test_0b() {	chmod 0755 $DIR || error	$CHECKSTAT -p 0755 $DIR || error}run_test 0b "chmod 0755 $DIR ============================="test_1a() {	mkdir $DIR/d1	mkdir $DIR/d1/d2	$CHECKSTAT -t dir $DIR/d1/d2 || error}run_test 1a "mkdir .../d1; mkdir .../d1/d2 ====================="test_1b() {	rmdir $DIR/d1/d2	rmdir $DIR/d1	$CHECKSTAT -a $DIR/d1 || error}run_test 1b "rmdir .../d1/d2; rmdir .../d1 ====================="test_2a() {	mkdir $DIR/d2	touch $DIR/d2/f	$CHECKSTAT -t file $DIR/d2/f || error}run_test 2a "mkdir .../d2; touch .../d2/f ======================"test_2b() {	rm -r $DIR/d2	$CHECKSTAT -a $DIR/d2 || error}run_test 2b "rm -r .../d2; checkstat .../d2/f ======================"test_3a() {	mkdir $DIR/d3	$CHECKSTAT -t dir $DIR/d3 || error}run_test 3a "mkdir .../d3 ======================================"test_3b() {	if [ ! -d $DIR/d3 ]; then		mkdir $DIR/d3	fi	touch $DIR/d3/f	$CHECKSTAT -t file $DIR/d3/f || error}run_test 3b "touch .../d3/f ===================================="test_3c() {	rm -r $DIR/d3	$CHECKSTAT -a $DIR/d3 || error}run_test 3c "rm -r .../d3 ======================================"test_4a() {	mkdir $DIR/d4	$CHECKSTAT -t dir $DIR/d4 || error}run_test 4a "mkdir .../d4 ======================================"test_4b() {	if [ ! -d $DIR/d4 ]; then		mkdir $DIR/d4	fi	mkdir $DIR/d4/d2	$CHECKSTAT -t dir $DIR/d4/d2 || error}run_test 4b "mkdir .../d4/d2 ==================================="test_5() {	mkdir $DIR/d5	mkdir $DIR/d5/d2	chmod 0707 $DIR/d5/d2	$CHECKSTAT -t dir -p 0707 $DIR/d5/d2 || error}run_test 5 "mkdir .../d5 .../d5/d2; chmod .../d5/d2 ============"test_6a() {	touch $DIR/f6a	chmod 0666 $DIR/f6a || error	$CHECKSTAT -t file -p 0666 -u \#$UID $DIR/f6a || error}run_test 6a "touch .../f6a; chmod .../f6a ======================"test_6b() {	[ $RUNAS_ID -eq $UID ] && skip "RUNAS_ID = UID = $UID -- skipping" && return	if [ ! -f $DIR/f6a ]; then		touch $DIR/f6a		chmod 0666 $DIR/f6a	fi	$RUNAS chmod 0444 $DIR/f6a && error	$CHECKSTAT -t file -p 0666 -u \#$UID $DIR/f6a || error}run_test 6b "$RUNAS chmod .../f6a (should return error) =="test_6c() {	[ $RUNAS_ID -eq $UID ] && skip "RUNAS_ID = UID = $UID -- skipping" && return	touch $DIR/f6c	chown $RUNAS_ID $DIR/f6c || error	$CHECKSTAT -t file -u \#$RUNAS_ID $DIR/f6c || error}run_test 6c "touch .../f6c; chown .../f6c ======================"test_6d() {	[ $RUNAS_ID -eq $UID ] && skip "RUNAS_ID = UID = $UID -- skipping" && return	if [ ! -f $DIR/f6c ]; then		touch $DIR/f6c		chown $RUNAS_ID $DIR/f6c	fi	$RUNAS chown $UID $DIR/f6c && error	$CHECKSTAT -t file -u \#$RUNAS_ID $DIR/f6c || error}run_test 6d "$RUNAS chown .../f6c (should return error) =="test_6e() {	[ $RUNAS_ID -eq $UID ] && skip "RUNAS_ID = UID = $UID -- skipping" && return	touch $DIR/f6e	chgrp $RUNAS_ID $DIR/f6e || error	$CHECKSTAT -t file -u \#$UID -g \#$RUNAS_ID $DIR/f6e || error}run_test 6e "touch .../f6e; chgrp .../f6e ======================"test_6f() {	[ $RUNAS_ID -eq $UID ] && skip "RUNAS_ID = UID = $UID -- skipping" && return	if [ ! -f $DIR/f6e ]; then		touch $DIR/f6e		chgrp $RUNAS_ID $DIR/f6e	fi	$RUNAS chgrp $UID $DIR/f6e && error	$CHECKSTAT -t file -u \#$UID -g \#$RUNAS_ID $DIR/f6e || error}run_test 6f "$RUNAS chgrp .../f6e (should return error) =="test_6g() {	[ $RUNAS_ID -eq $UID ] && skip "RUNAS_ID = UID = $UID -- skipping" && return        mkdir $DIR/d6g || error        chmod 777 $DIR/d6g || error        $RUNAS mkdir $DIR/d6g/d || error        chmod g+s $DIR/d6g/d || error        mkdir $DIR/d6g/d/subdir	$CHECKSTAT -g \#$RUNAS_ID $DIR/d6g/d/subdir || error}run_test 6g "Is new dir in sgid dir inheriting group?"test_6h() { # bug 7331	[ $RUNAS_ID -eq $UID ] && skip "RUNAS_ID = UID = $UID -- skipping" && return	touch $DIR/f6h || error "touch failed"	chown $RUNAS_ID:$RUNAS_ID $DIR/f6h || error "initial chown failed"	$RUNAS -G$RUNAS_ID chown $RUNAS_ID:0 $DIR/f6h && error "chown worked"	$CHECKSTAT -t file -u \#$RUNAS_ID -g \#$RUNAS_ID $DIR/f6h || error}run_test 6h "$RUNAS chown RUNAS_ID.0 .../f6h (should return error)"test_7a() {	mkdir $DIR/d7	$MCREATE $DIR/d7/f	chmod 0666 $DIR/d7/f	$CHECKSTAT -t file -p 0666 $DIR/d7/f || error}run_test 7a "mkdir .../d7; mcreate .../d7/f; chmod .../d7/f ===="test_7b() {	if [ ! -d $DIR/d7 ]; then		mkdir $DIR/d7	fi	$MCREATE $DIR/d7/f2	echo -n foo > $DIR/d7/f2	[ "`cat $DIR/d7/f2`" = "foo" ] || error	$CHECKSTAT -t file -s 3 $DIR/d7/f2 || error}run_test 7b "mkdir .../d7; mcreate d7/f2; echo foo > d7/f2 ====="test_8() {	mkdir $DIR/d8	touch $DIR/d8/f	chmod 0666 $DIR/d8/f	$CHECKSTAT -t file -p 0666 $DIR/d8/f || error}run_test 8 "mkdir .../d8; touch .../d8/f; chmod .../d8/f ======="test_9() {	mkdir $DIR/d9	mkdir $DIR/d9/d2	mkdir $DIR/d9/d2/d3	$CHECKSTAT -t dir $DIR/d9/d2/d3 || error}run_test 9 "mkdir .../d9 .../d9/d2 .../d9/d2/d3 ================"test_10() {	mkdir $DIR/d10	mkdir $DIR/d10/d2	touch $DIR/d10/d2/f	$CHECKSTAT -t file $DIR/d10/d2/f || error}run_test 10 "mkdir .../d10 .../d10/d2; touch .../d10/d2/f ======"test_11() {	mkdir $DIR/d11	mkdir $DIR/d11/d2	chmod 0666 $DIR/d11/d2	chmod 0705 $DIR/d11/d2	$CHECKSTAT -t dir -p 0705 $DIR/d11/d2 || error}run_test 11 "mkdir .../d11 d11/d2; chmod .../d11/d2 ============"test_12() {	mkdir $DIR/d12	touch $DIR/d12/f	chmod 0666 $DIR/d12/f	chmod 0654 $DIR/d12/f	$CHECKSTAT -t file -p 0654 $DIR/d12/f || error}run_test 12 "touch .../d12/f; chmod .../d12/f .../d12/f ========"test_13() {	mkdir $DIR/d13	dd if=/dev/zero of=$DIR/d13/f count=10	>  $DIR/d13/f	$CHECKSTAT -t file -s 0 $DIR/d13/f || error}run_test 13 "creat .../d13/f; dd .../d13/f; > .../d13/f ========"test_14() {	mkdir $DIR/d14	touch $DIR/d14/f	rm $DIR/d14/f	$CHECKSTAT -a $DIR/d14/f || error}run_test 14 "touch .../d14/f; rm .../d14/f; rm .../d14/f ======="test_15() {	mkdir $DIR/d15	touch $DIR/d15/f	mv $DIR/d15/f $DIR/d15/f2	$CHECKSTAT -t file $DIR/d15/f2 || error}run_test 15 "touch .../d15/f; mv .../d15/f .../d15/f2 =========="test_16() {	mkdir $DIR/d16	touch $DIR/d16/f	rm -rf $DIR/d16/f	$CHECKSTAT -a $DIR/d16/f || error}run_test 16 "touch .../d16/f; rm -rf .../d16/f ================="test_17a() {	mkdir -p $DIR/d17	touch $DIR/d17/f	ln -s $DIR/d17/f $DIR/d17/l-exist	ls -l $DIR/d17	$CHECKSTAT -l $DIR/d17/f $DIR/d17/l-exist || error	$CHECKSTAT -f -t f $DIR/d17/l-exist || error	rm -f $DIR/d17/l-exist	$CHECKSTAT -a $DIR/d17/l-exist || error}run_test 17a "symlinks: create, remove (real) =================="test_17b() {	mkdir -p $DIR/d17	ln -s no-such-file $DIR/d17/l-dangle	ls -l $DIR/d17	$CHECKSTAT -l no-such-file $DIR/d17/l-dangle || error	$CHECKSTAT -fa $DIR/d17/l-dangle || error	rm -f $DIR/d17/l-dangle	$CHECKSTAT -a $DIR/d17/l-dangle || error}run_test 17b "symlinks: create, remove (dangling) =============="test_17c() { # bug 3440 - don't save failed open RPC for replay	mkdir -p $DIR/d17	ln -s foo $DIR/d17/f17c	cat $DIR/d17/f17c && error "opened non-existent symlink" || true}run_test 17c "symlinks: open dangling (should return error) ===="test_17d() {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -