fi
testname=EXCEPT_$1
if [ ${!testname}x != x ]; then
- echo "skipping excluded test $1"
+ TESTNAME=test_$1 skip "skipping excluded test $1"
return 0
fi
testname=EXCEPT_$base
if [ ${!testname}x != x ]; then
- echo "skipping excluded test $1 (base $base)"
+ TESTNAME=test_$1 skip "skipping excluded test $1 (base $base)"
return 0
fi
run_one $1 "$2"
echo PASS $@
}
+skip () {
+ log "$0: SKIP: $TESTNAME $@"
+ [ "$SANITYLOG" ] && echo "$0: SKIP: $TESTNAME $@" >> $SANITYLOG
+
+}
+
mounted_lustre_filesystems() {
awk '($3 ~ "lustre" && $1 ~ ":") { print $2 }' /proc/mounts
}
run_test 6a "touch .../f6a; chmod .../f6a ======================"
test_6b() {
- [ $RUNAS_ID -eq $UID ] && echo "skipping $TESTNAME" && return
+ [ $RUNAS_ID -eq $UID ] && skip "RUNAS_ID = UID = $UID -- skipping" && return
if [ ! -f $DIR/f6a ]; then
touch $DIR/f6a
chmod 0666 $DIR/f6a
run_test 6b "$RUNAS chmod .../f6a (should return error) =="
test_6c() {
- [ $RUNAS_ID -eq $UID ] && echo "skipping $TESTNAME" && return
+ [ $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 ] && echo "skipping $TESTNAME" && return
+ [ $RUNAS_ID -eq $UID ] && skip "RUNAS_ID = UID = $UID -- skipping" && return
if [ ! -f $DIR/f6c ]; then
touch $DIR/f6c
chown $RUNAS_ID $DIR/f6c
run_test 6d "$RUNAS chown .../f6c (should return error) =="
test_6e() {
- [ $RUNAS_ID -eq $UID ] && echo "skipping $TESTNAME" && return
+ [ $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 ] && echo "skipping $TESTNAME" && return
+ [ $RUNAS_ID -eq $UID ] && skip "RUNAS_ID = UID = $UID -- skipping" && return
if [ ! -f $DIR/f6e ]; then
touch $DIR/f6e
chgrp $RUNAS_ID $DIR/f6e
run_test 6f "$RUNAS chgrp .../f6e (should return error) =="
test_6g() {
- [ $RUNAS_ID -eq $UID ] && echo "skipping $TESTNAME" && return
+ [ $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
run_test 6g "Is new dir in sgid dir inheriting group?"
test_6h() { # bug 7331
- [ $RUNAS_ID -eq $UID ] && echo "skipping $TESTNAME" && return
+ [ $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"
run_test 19b "ls -l .../f19 (should return error) =============="
test_19c() {
- [ $RUNAS_ID -eq $UID ] && echo "skipping $TESTNAME" && return
+ [ $RUNAS_ID -eq $UID ] && skip "RUNAS_ID = UID = $UID -- skipping" && return
$RUNAS touch $DIR/f19 && error || true
}
run_test 19c "$RUNAS touch .../f19 (should return error) =="
run_test 27a "one stripe file =================================="
test_27c() {
- [ "$OSTCOUNT" -lt "2" ] && echo "skipping 2-stripe test" && return
+ [ "$OSTCOUNT" -lt "2" ] && skip "skipping 2-stripe test" && return
mkdir -p $DIR/d27
$SETSTRIPE $DIR/d27/f01 65536 0 2 || error "lstripe failed"
[ `$GETSTRIPE $DIR/d27/f01 | grep -A 10 obdidx | wc -l` -eq 4 ] ||
run_test 27l "check setstripe permissions (should return error)"
test_27m() {
- [ "$OSTCOUNT" -lt "2" ] && echo "skipping out-of-space test on OST0" && return
+ [ "$OSTCOUNT" -lt "2" ] && skip "$OSTCOUNT < 2 OSTs -- skipping" && return
if [ $ORIGFREE -gt $MAXFREE ]; then
- echo "skipping out-of-space test on OST0"
+ skip "$ORIGFREE > $MAXFREE skipping out-of-space test on OST0"
return
fi
mkdir -p $DIR/d27
test_27n() {
[ "$OSTCOUNT" -lt "2" -o -z "$MDS" ] && \
- echo "skip $TESTNAME for remote MDS or OST count" && return
+ skip "too few OSTs, or remote MDS" && return
reset_enospc
rm -f $DIR/d27/f27n
run_test 27n "create file with some full OSTs =================="
test_27o() {
- [ "$OSTCOUNT" -lt "2" -o -z "$MDS" ] && echo "skipping $TESTNAME" && return
+ [ "$OSTCOUNT" -lt "2" -o -z "$MDS" ] && \
+ skip "too few OSTs, or remote MDS" && return
reset_enospc
rm -f $DIR/d27/f27o
run_test 27o "create file with all full OSTs (should error) ===="
test_27p() {
- [ "$OSTCOUNT" -lt "2" -o -z "$MDS" ] && echo "skipping $TESTNAME" && return
+ [ "$OSTCOUNT" -lt "2" -o -z "$MDS" ] && \
+ skip "too few OSTs, or remote MDS" && return
reset_enospc
rm -f $DIR/d27/f27p
run_test 27p "append to a truncated file with some full OSTs ==="
test_27q() {
- [ "$OSTCOUNT" -lt "2" -o -z "$MDS" ] && echo "skipping $TESTNAME" && return
+ [ "$OSTCOUNT" -lt "2" -o -z "$MDS" ] && \
+ skip "too few OSTs, or remote MDS" && return
reset_enospc
rm -f $DIR/d27/f27q
run_test 27q "append to truncated file with all OSTs full (should error) ==="
test_27r() {
- [ "$OSTCOUNT" -lt "2" -o -z "$MDS" ] && echo "skipping $TESTNAME" && return
+ [ "$OSTCOUNT" -lt "2" -o -z "$MDS" ] && \
+ skip "too few OSTs, or remote MDS" && return
reset_enospc
rm -f $DIR/d27/f27r
size=`$LSTRIPEINFO $DIR/d27w/f0 | awk {'print $1'}`
[ $size -ne 65536 ] && error "stripe size $size != 65536" || true
- [ "$OSTCOUNT" -lt "2" ] && echo "skipping multiple stripe count/offset test" && return
+ [ "$OSTCOUNT" -lt "2" ] && skip "skipping multiple stripe count/offset test" && return
for i in `seq 1 $OSTCOUNT`; do
offset=$(($i-1))
$LSTRIPE $DIR/d27w/f$i -c $i -i $offset || error "lstripe -c $i -i $offset failed"
run_test 36d "non-root OST utime check (open, utime) ==========="
test_36e() {
- [ $RUNAS_ID -eq $UID ] && echo "skipping $TESTNAME" && return
+ [ $RUNAS_ID -eq $UID ] && skip "RUNAS_ID = UID = $UID -- skipping" && return
mkdir -p $DIR/$tdir
touch $DIR/$tdir/$tfile
$RUNAS utime $DIR/$tdir/$tfile && \
export FMD_MAX_AGE=`cat $LPROC/obdfilter/*/client_cache_seconds | head -n 1`
fi
test_36g() {
- [ -z "$FMD_MAX_AGE" ] && echo "skip $TESTNAME for remote OST" && return
+ [ -z "$FMD_MAX_AGE" ] && skip "skip test for remote OST" && return
FMD_BEFORE="`awk '/ll_fmd_cache/ { print $2 }' /proc/slabinfo`"
touch $DIR/d36/$tfile
sleep $((FMD_MAX_AGE + 12))
run_test 43c "md5sum of copy into lustre========================"
test_44() {
- [ "$OSTCOUNT" -lt "2" ] && echo "skipping 2-stripe test" && return
+ [ "$OSTCOUNT" -lt "2" ] && skip "skipping 2-stripe test" && return
dd if=/dev/zero of=$DIR/f1 bs=4k count=1 seek=1023
dd if=$DIR/f1 bs=4k count=1
}
test_44a() {
local nstripe=`$LCTL lov_getconfig $DIR | grep default_stripe_count: | \
awk '{print $2}'`
+ [ -z "$nstripe" ] && skip "can't get stripe info" && return
+ [ "$nstripe" -gt "$OSTCOUNT" ] && skip "Wrong default_stripe_count: $nstripe (OSTCOUNT: $OSTCOUNT)" && return
local stride=`$LCTL lov_getconfig $DIR | grep default_stripe_size: | \
awk '{print $2}'`
if [ $nstripe -eq 0 -o $nstripe -gt 1024 ] ; then
nstripe=`$LCTL lov_getconfig $DIR | grep obd_count: | awk '{print $2}'`
fi
- [ -z "$nstripe" ] && error "can't get stripe info"
OFFSETS="0 $((stride/2)) $((stride-1))"
for offset in $OFFSETS ; do
test_51b() {
NUMFREE=`df -i -P $DIR | tail -n 1 | awk '{ print $4 }'`
[ $NUMFREE -lt 21000 ] && \
- echo "skipping $TESTNAME, not enough free inodes ($NUMFREE)" && \
+ skip "not enough free inodes ($NUMFREE)" && \
return
check_kernel_version 40 || NUMTEST=31000
run_test 51b "mkdir .../t-0 --- .../t-$NUMTEST ===================="
test_51c() {
- [ ! -d $DIR/d51b ] && echo "skipping $TESTNAME: $DIR/51b missing" && \
+ [ ! -d $DIR/d51b ] && skip "$DIR/51b missing" && \
return
unlinkmany -d $DIR/d51b/t- $NUMTEST
run_test 51c "rmdir .../t-0 --- .../t-$NUMTEST ===================="
test_51d() {
- [ "$OSTCOUNT" -lt "3" ] && echo "skipping test with few OSTs" && return
+ [ "$OSTCOUNT" -lt "3" ] && skip "skipping test with few OSTs" && return
mkdir -p $DIR/d51d
createmany -o $DIR/d51d/t- 1000
$LFS getstripe $DIR/d51d > $TMP/files
run_test 53 "verify that MDS and OSTs agree on pre-creation ===="
test_54a() {
- [ ! -f "$SOCKETSERVER" ] && echo "no socketserver, skipping" && return
- [ ! -f "$SOCKETCLIENT" ] && echo "no socketclient, skipping" && return
+ [ ! -f "$SOCKETSERVER" ] && skip "no socketserver, skipping" && return
+ [ ! -f "$SOCKETCLIENT" ] && skip "no socketclient, skipping" && return
$SOCKETSERVER $DIR/socket
$SOCKETCLIENT $DIR/socket || error
$MUNLINK $DIR/socket
test_55() {
rm -rf $DIR/d55
mkdir $DIR/d55
- check_fstype && echo "can't find fs $FSTYPE, skipping $TESTNAME" && return
+ check_fstype && skip "can't find fs $FSTYPE" && return
mount -t $FSTYPE -o loop,iopen $EXT2_DEV $DIR/d55 || error "mounting"
touch $DIR/d55/foo
$IOPENTEST1 $DIR/d55/foo $DIR/d55 || error "running $IOPENTEST1"
error "lfs getstripe --obd wrong_uuid should return error message"
[ "$OSTCOUNT" -lt 2 ] && \
- echo "skipping other lfs getstripe --obd test" && return
+ skip "skipping other lfs getstripe --obd test" && return
FILENUM=`$GETSTRIPE --recursive $DIR/d56 | sed -n '/^[ ]*1[ ]/p' | wc -l`
OBDUUID=`$GETSTRIPE --recursive $DIR/d56 | sed -n '/^[ ]*1:/p' | awk '{print $2}'`
FOUND=`$GETSTRIPE -r --obd $OBDUUID $DIR/d56 | wc -l`
test_57a() {
# note test will not do anything if MDS is not local
- [ -z "$MDS" ] && echo "skipping $TESTNAME for remote MDS" && return
+ [ -z "$MDS" ] && skip "skipping test for remote MDS" && return
for DEV in `cat $LPROC/mds/*/mntdev`; do
dumpe2fs -h $DEV > $TMP/t57a.dump || error "can't access $DEV"
DEVISIZE=`awk '/Inode size:/ { print $3 }' $TMP/t57a.dump`
run_test 57b "default LOV EAs are stored inside large inodes ==="
test_58() {
- [ -z "$(which wiretest 2>/dev/null)" ] && echo "skipping $TESTNAME (could not find wiretest)" && return
+ [ -z "$(which wiretest 2>/dev/null)" ] && skip "could not find wiretest" && return
wiretest
}
run_test 58 "verify cross-platform wire constants =============="
TEST60_HEAD="test_60 run $RANDOM"
test_60a() {
- [ ! -f run-llog.sh ] && echo "missing subtest, skipping" && return
+ [ ! -f run-llog.sh ] && skip "missing subtest run-llog.sh" && return
log "$TEST60_HEAD - from kernel mode"
# sh run-llog.sh
}
run_test 64a "verify filter grant calculations (in kernel) ====="
test_64b () {
- [ ! -f oos.sh ] && echo "missing subtest, skipping" && return
+ [ ! -f oos.sh ] && skip "missing subtest oos.sh" && return
sh oos.sh $MOUNT
}
run_test 64b "check out-of-space detection on client ==========="
}
run_test 65j "set default striping on root directory (bug 6367)="
+test_65k() { # bug11679
+ [ "$OSTCOUNT" -lt 2 ] && skip "too few OSTs" && return
+
+ echo "Check OST status: "
+ MDS_OSCS=`do_facet mds lctl dl | awk '/[oO][sS][cC].*md[ts]/ { print $4 }'`
+ for OSC in $MDS_OSCS; do
+ echo $OSC "is activate"
+ do_facet mds lctl --device %$OSC activate
+ done
+ mkdir -p $DIR/$tdir
+ for INACTIVE_OSC in $MDS_OSCS; do
+ echo $INACTIVE_OSC "is Deactivate:"
+ do_facet mds lctl --device %$INACTIVE_OSC deactivate
+ for STRIPE_OSC in $MDS_OSCS; do
+ STRIPE_OST=`osc_to_ost $STRIPE_OSC`
+ STRIPE_INDEX=`do_facet mds cat $LPROC/lov/*md*/target_obd |
+ grep $STRIPE_OST | awk -F: '{print $1}'`
+ echo "$SETSTRIPE $DIR/$tdir/${STRIPE_INDEX} 0 ${STRIPE_INDEX} 1"
+ do_facet mds $SETSTRIPE $DIR/$tdir/${STRIPE_INDEX} 0 ${STRIPE_INDEX} 1
+ RC=$?
+ [ $RC -ne 0 ] && error "setstripe should have succeeded"
+ done
+ rm -f $DIR/$tdir/*
+ echo $INACTIVE_OSC "is Activate."
+ do_facet mds lctl --device %$INACTIVE_OSC activate
+ done
+}
+run_test 65k "validate manual striping works properly with deactivated OSCs"
+
# bug 2543 - update blocks count on client
test_66() {
COUNT=${COUNT:-8}
run_test 66 "update inode blocks count on client ==============="
test_67() {
+ [ ! -f sanity-sec.sh ] && skip "missing subtest sanity-sec.sh" && return
sh sanity-sec.sh
}
run_test 67 "security test ====================================="
# excercise swapping to lustre by adding a high priority swapfile entry
# and then consuming memory until it is used.
test_68() {
- [ "$UID" != 0 ] && echo "skipping $TESTNAME (must run as root)" && return
+ [ "$UID" != 0 ] && skip "must run as root" && return
grep -q obdfilter $LPROC/devices && \
- echo "skip $TESTNAME (local OST)" && return
+ skip "local OST" && return
find_loop_dev
dd if=/dev/zero of=$DIR/f68 bs=64k count=1024
# bug5265, obdfilter oa2dentry return -ENOENT
# #define OBD_FAIL_OST_ENOENT 0x217
test_69() {
- [ $(grep -c obdfilter $LPROC/devices) -eq 0 ] &&
- echo "skipping $TESTNAME for remote OST" && return
- [ ! -z "$USING_KRB5" ] &&
- echo "skipping $TESTNAME (gss with bulk security will triger oops. re-enable this after b10091 get fixed)" && return
+ [ $(grep -c obdfilter $LPROC/devices) -eq 0 ] && \
+ skip "skipping test for remote OST" && return
+ [ ! -z "$USING_KRB5" ] && \
+ skip "gss with bulk security will triger oops. re-enable this after b10091 get fixed" && return
f="$DIR/$tfile"
touch $f
if ! $DIRECTIO write ${f}.2 0 1; then
- echo "skipping $TESTNAME - O_DIRECT not implemented"
+ skip "O_DIRECT not implemented"
return 0
fi
run_test 69 "verify oa2dentry return -ENOENT doesn't LBUG ======"
test_71() {
- which dbench > /dev/null 2>&1 || echo "dbench not installed, skip this test" && return 0
+ which dbench > /dev/null 2>&1 || skip "dbench not installed, skip this test" && return 0
DBENCH_LIB=${DBENCH_LIB:-/usr/lib/dbench}
PATH=${DBENCH_LIB}:${PATH}
cp `which dbench` $DIR
test_72() { # bug 5695 - Test that on 2.6 remove_suid works properly
check_kernel_version 43 || return 0
- [ "$RUNAS_ID" = "$UID" ] && echo "skipping $TESTNAME" && return
+ [ "$RUNAS_ID" = "$UID" ] && skip "RUNAS_ID = UID = $UID -- skipping" && return
# We had better clear the $DIR to get enough space for dd
rm -rf $DIR/*
touch $DIR/f72
test_76() { # bug 1443
DETH=$(grep deathrow /proc/kallsyms /proc/ksyms 2> /dev/null | wc -l)
- [ $DETH -eq 0 ] && echo "No _iget, skipping" && return 0
+ [ $DETH -eq 0 ] && skip "No _iget." && return 0
BEFORE_INODES=`num_inodes`
echo "before inodes: $BEFORE_INODES"
for i in `seq 1000`; do
run_test 77b "checksum error on client write ===================="
test_77c() { # bug 10889
- [ ! -f $DIR/f77b ] && log "requires 77b - skipping" && return
+ [ ! -f $DIR/f77b ] && skip "requires 77b - skipping" && return
cancel_lru_locks osc
#define OBD_FAIL_OSC_CHECKSUM_RECEIVE 0x408
sysctl -w lustre.fail_loc=0x80000408
run_test 77d "checksum error on OST direct write ==============="
test_77e() { # bug 10889
- [ ! -f $DIR/f77 ] && log "requires 77d - skipping" && return
+ [ ! -f $DIR/f77 ] && skip "requires 77d - skipping" && return
#define OBD_FAIL_OSC_CHECKSUM_RECEIVE 0x408
sysctl -w lustre.fail_loc=0x80000408
set_checksums 1
test_77g() { # bug 10889
[ $(grep -c obdfilter $LPROC/devices) -eq 0 ] && \
- echo "skipping $TESTNAME (remote OST)" && return
+ skip "remote OST" && return
[ ! -f $F77_TMP ] && setup_f77
#define OBD_FAIL_OST_CHECKSUM_RECEIVE 0x21a
sysctl -w lustre.fail_loc=0x8000021a
test_77h() { # bug 10889
[ $(grep -c obdfilter $LPROC/devices) -eq 0 ] && \
- echo "skipping $TESTNAME (remote OST)" && return
- [ ! -f $DIR/f77 ] && log "requires 77g - skipping" && return
+ skip "remote OST" && return
+ [ ! -f $DIR/f77 ] && skip "requires 77g - skipping" && return
cancel_lru_locks osc
#define OBD_FAIL_OST_CHECKSUM_SEND 0x21b
sysctl -w lustre.fail_loc=0x8000021b
rm -f $testfile
touch $testfile
- [ "$UID" != 0 ] && echo "skipping $TESTNAME (must run as root)" && return
- [ -z "`grep xattr $LPROC/mdc/*-mdc-*/connect_flags`" ] && echo "skipping $TESTNAME (must have user_xattr)" && return
- [ -z "$(which setfattr 2>/dev/null)" ] && echo "skipping $TESTNAME (could not find setfattr)" && return
+ [ "$UID" != 0 ] && skip "must run as root" && return
+ [ -z "`grep xattr $LPROC/mdc/*-mdc-*/connect_flags`" ] && skip "must have user_xattr" && return
+
+ [ -z "$(which setfattr 2>/dev/null)" ] && skip "could not find setfattr" && return
echo "set/get xattr..."
setfattr -n trusted.name1 -v value1 $testfile || error
test_102b() {
# b10930: get/set/list trusted.lov xattr
echo "get/set/list trusted.lov xattr ..."
- [ "$OSTCOUNT" -lt "2" ] && echo "skipping 2-stripe test" && return
+ [ "$OSTCOUNT" -lt "2" ] && skip "skipping 2-stripe test" && return
local testfile=$DIR/$tfile
$SETSTRIPE $testfile 65536 1 2
getfattr -d -m "^trusted" $testfile 2> /dev/null | \
test_102c() {
# b10930: get/set/list trusted.lov xattr
echo "get/set/list trusted.lov xattr ..."
- [ "$OSTCOUNT" -lt "2" ] && echo "skipping 2-stripe test" && return
+ [ "$OSTCOUNT" -lt "2" ] && skip "skipping 2-stripe test" && return
mkdir -p $DIR/$tdir
chown $RUNAS_ID $DIR/$tdir
local testfile=$DIR/$tdir/$tfile
star --xhelp 2>&1 | grep -q nolustre
if [ $? -ne 0 ]
then
- echo "$TESTNUM being skipped because a lustre-aware star is not installed." && return
+ skip "being skipped because a lustre-aware star is not installed." && return
fi
- [ "$OSTCOUNT" -lt "4" ] && echo "skipping 4-stripe test" && return
+ [ "$OSTCOUNT" -lt "4" ] && skip "skipping 4-stripe test" && return
setup_test102
mkdir -p $DIR/d102d
star -x f=$TMP/f102.tar -C $DIR/d102d
star --xhelp 2>&1 | grep -q nolustre
if [ $? -ne 0 ]
then
- echo "$TESTNUM being skipped because a lustre-aware star is not installed." && return
+ skip "being skipped because a lustre-aware star is not installed." && return
fi
- [ "$OSTCOUNT" -lt "4" ] && echo "skipping 4-stripe test" && return
+ [ "$OSTCOUNT" -lt "4" ] && skip "skipping 4-stripe test" && return
setup_test102
mkdir -p $DIR/d102e
star -x -preserve-osts f=$TMP/f102.tar -C $DIR/d102e
star --xhelp 2>&1 | grep -q nolustre
if [ $? -ne 0 ]
then
- echo "$TESTNUM being skipped because a lustre-aware star is not installed." && return
+ skip "being skipped because a lustre-aware star is not installed." && return
fi
- [ "$OSTCOUNT" -lt "4" ] && echo "skipping 4-stripe test" && return
+ [ "$OSTCOUNT" -lt "4" ] && skip "skipping 4-stripe test" && return
setup_test102
mkdir -p $DIR/d102f
cd $DIR
star --xhelp 2>&1 | grep -q nolustre
if [ $? -ne 0 ]
then
- echo "$TESTNUM being skipped because a lustre-aware star is not installed." && return
+ skip "being skipped because a lustre-aware star is not installed." && return
fi
- [ "$OSTCOUNT" -lt "4" ] && echo "skipping 4-stripe test" && return
+ [ "$OSTCOUNT" -lt "4" ] && skip "skipping 4-stripe test" && return
setup_test102
mkdir -p $DIR/d102g
cd $DIR
}
test_103 () {
- [ "$UID" != 0 ] && echo "skipping $TESTNAME (must run as root)" && return
- [ -z "$(grep acl $LPROC/mdc/*-mdc-*/connect_flags)" ] && echo "skipping $TESTNAME (must have acl enabled)" && return
- [ -z "$(which setfacl 2>/dev/null)" ] && echo "skipping $TESTNAME (could not find setfacl)" && return
- [ ! -z "$USING_KRB5" ] && echo "skipping $TESTNAME (could not run under gss)" && return
+ [ "$UID" != 0 ] && skip "must run as root" && return
+ [ -z "$(grep acl $LPROC/mdc/*-mdc-*/connect_flags)" ] && skip "must have acl enabled" && return
+ [ -z "$(which setfacl 2>/dev/null)" ] && skip "could not find setfacl" && return
+ [ ! -z "$USING_KRB5" ] && skip "could not run under gss" && return
SAVE_UMASK=`umask`
umask 0022
test_115() {
OSTIO_pre=$(ps -e|grep ll_ost_io|awk '{print $4}'|sort -n|tail -1|\
cut -c11-20)
- [ -z "$OSTIO_pre" ] && echo "skipping $TESTNAME: no OSS threads" && \
+ [ -z "$OSTIO_pre" ] && skip "no OSS threads" && \
return
echo "Starting with $OSTIO_pre threads"
}
test_116() {
- [ "$OSTCOUNT" -lt "2" ] && echo "not enough OSTs" && return
+ [ "$OSTCOUNT" -lt "2" ] && skip "$OSTCOUNT < 2 OSTs" && return
[ $(grep -c obdfilter $LPROC/devices) -eq 0 ] &&
- echo "remote MDS, skipping test" && return
+ skip "remote MDS, skipping test" && return
echo -n "Free space priority "
cat $LPROC/lov/*-clilov-*/qos_prio_free
DELAY=$(cat $LPROC/lov/*-clilov-*/qos_maxage | head -1 | awk '{print $1}')
declare -a AVAIL
free_min_max
- [ $MINV -gt 960000 ] && echo "too much free space in OST$MINI, skip" &&\
+ [ $MINV -gt 960000 ] && skip "too much free space in OST$MINI, skip" &&\
return
# generate uneven OSTs
test_119b() # bug 11737
{
- [ "$OSTCOUNT" -lt "2" ] && echo "skipping 2-stripe test" && return
+ [ "$OSTCOUNT" -lt "2" ] && skip "skipping 2-stripe test" && return
lfs setstripe $DIR/$tfile 0 -1 2
dd if=/dev/zero of=$DIR/$tfile bs=1M count=1 seek=1 || error "dd failed"
}
run_test 119b "Sparse directIO read must return actual read amount"
+test_119a() {
+ mkdir $DIR/$tdir
+ cancel_lru_locks mdc
+ stat $DIR/$tdir > /dev/null
+ can1=`awk '/ldlm_cancel/ {print $2}' $LPROC/ldlm/services/ldlm_canceld/stats`
+ blk1=`awk '/ldlm_bl_callback/ {print $2}' $LPROC/ldlm/services/ldlm_cbd/stats`
+ mkdir $DIR/$tdir/d1
+ can2=`awk '/ldlm_cancel/ {print $2}' $LPROC/ldlm/services/ldlm_canceld/stats`
+ blk2=`awk '/ldlm_bl_callback/ {print $2}' $LPROC/ldlm/services/ldlm_cbd/stats`
+ [ $can1 -eq $can2 ] || error $((can2-can1)) "cancel RPC occured."
+ [ $blk1 -eq $blk2 ] || error $((blk2-blk1)) "blocking RPC occured."
+}
+run_test 119a "Early Lock Cancel: mkdir test"
+
+test_119b() {
+ mkdir $DIR/$tdir
+ cancel_lru_locks mdc
+ stat $DIR/$tdir > /dev/null
+ can1=`awk '/ldlm_cancel/ {print $2}' $LPROC/ldlm/services/ldlm_canceld/stats`
+ blk1=`awk '/ldlm_bl_callback/ {print $2}' $LPROC/ldlm/services/ldlm_cbd/stats`
+ touch $DIR/$tdir/f1
+ blk2=`awk '/ldlm_bl_callback/ {print $2}' $LPROC/ldlm/services/ldlm_cbd/stats`
+ can2=`awk '/ldlm_cancel/ {print $2}' $LPROC/ldlm/services/ldlm_canceld/stats`
+ [ $can1 -eq $can2 ] || error $((can2-can1)) "cancel RPC occured."
+ [ $blk1 -eq $blk2 ] || error $((blk2-blk1)) "blocking RPC occured."
+}
+run_test 119b "Early Lock Cancel: create test"
+
+test_119c() {
+ mkdir -p $DIR/$tdir/d1 $DIR/$tdir/d2
+ touch $DIR/$tdir/d1/f1
+ cancel_lru_locks mdc
+ stat $DIR/$tdir/d1 $DIR/$tdir/d2 $DIR/$tdir/d1/f1 > /dev/null
+ can1=`awk '/ldlm_cancel/ {print $2}' $LPROC/ldlm/services/ldlm_canceld/stats`
+ blk1=`awk '/ldlm_bl_callback/ {print $2}' $LPROC/ldlm/services/ldlm_cbd/stats`
+ ln $DIR/$tdir/d1/f1 $DIR/$tdir/d2/f2
+ can2=`awk '/ldlm_cancel/ {print $2}' $LPROC/ldlm/services/ldlm_canceld/stats`
+ blk2=`awk '/ldlm_bl_callback/ {print $2}' $LPROC/ldlm/services/ldlm_cbd/stats`
+ [ $can1 -eq $can2 ] || error $((can2-can1)) "cancel RPC occured."
+ [ $blk1 -eq $blk2 ] || error $((blk2-blk1)) "blocking RPC occured."
+}
+run_test 119c "Early Lock Cancel: link test"
+
+test_119d() {
+ touch $DIR/$tdir
+ cancel_lru_locks mdc
+ stat $DIR/$tdir > /dev/null
+ can1=`awk '/ldlm_cancel/ {print $2}' $LPROC/ldlm/services/ldlm_canceld/stats`
+ blk1=`awk '/ldlm_bl_callback/ {print $2}' $LPROC/ldlm/services/ldlm_cbd/stats`
+ chmod a+x $DIR/$tdir
+ can2=`awk '/ldlm_cancel/ {print $2}' $LPROC/ldlm/services/ldlm_canceld/stats`
+ blk2=`awk '/ldlm_bl_callback/ {print $2}' $LPROC/ldlm/services/ldlm_cbd/stats`
+ [ $can1 -eq $can2 ] || error $((can2-can1)) "cancel RPC occured."
+ [ $blk1 -eq $blk2 ] || error $((blk2-blk1)) "blocking RPC occured."
+}
+run_test 119d "Early Lock Cancel: setattr test"
+
+test_119e() {
+ mkdir $DIR/$tdir
+ dd if=/dev/zero of=$DIR/$tdir/f1 count=1
+ cancel_lru_locks mdc
+ cancel_lru_locks osc
+ dd if=$DIR/$tdir/f1 of=/dev/null
+ stat $DIR/$tdir $DIR/$tdir/f1 > /dev/null
+ can1=`awk '/ldlm_cancel/ {print $2}' $LPROC/ldlm/services/ldlm_canceld/stats`
+ blk1=`awk '/ldlm_bl_callback/ {print $2}' $LPROC/ldlm/services/ldlm_cbd/stats`
+ unlink $DIR/$tdir/f1
+ can2=`awk '/ldlm_cancel/ {print $2}' $LPROC/ldlm/services/ldlm_canceld/stats`
+ blk2=`awk '/ldlm_bl_callback/ {print $2}' $LPROC/ldlm/services/ldlm_cbd/stats`
+ [ $can1 -eq $can2 ] || error $((can2-can1)) "cancel RPC occured."
+ [ $blk1 -eq $blk2 ] || error $((blk2-blk1)) "blocking RPC occured."
+}
+run_test 119e "Early Lock Cancel: unlink test"
+
+test_119f() {
+ mkdir -p $DIR/$tdir/d1 $DIR/$tdir/d2
+ dd if=/dev/zero of=$DIR/$tdir/d1/f1 count=1
+ dd if=/dev/zero of=$DIR/$tdir/d2/f2 count=1
+ cancel_lru_locks mdc
+ cancel_lru_locks osc
+ dd if=$DIR/$tdir/d1/f1 of=/dev/null
+ dd if=$DIR/$tdir/d2/f2 of=/dev/null
+ stat $DIR/$tdir/d1 $DIR/$tdir/d2 $DIR/$tdir/d1/f1 $DIR/$tdir/d2/f2 > /dev/null
+ can1=`awk '/ldlm_cancel/ {print $2}' $LPROC/ldlm/services/ldlm_canceld/stats`
+ blk1=`awk '/ldlm_bl_callback/ {print $2}' $LPROC/ldlm/services/ldlm_cbd/stats`
+ mv $DIR/$tdir/d1/f1 $DIR/$tdir/d2/f2
+ can2=`awk '/ldlm_cancel/ {print $2}' $LPROC/ldlm/services/ldlm_canceld/stats`
+ blk2=`awk '/ldlm_bl_callback/ {print $2}' $LPROC/ldlm/services/ldlm_cbd/stats`
+ [ $can1 -eq $can2 ] || error $((can2-can1)) "cancel RPC occured."
+ [ $blk1 -eq $blk2 ] || error $((blk2-blk1)) "blocking RPC occured."
+}
+run_test 119f "Early Lock Cancel: rename test"
+
+test_119g() {
+ count=10000
+ echo create $count files
+ mkdir $DIR/$tdir
+ cancel_lru_locks mdc
+ cancel_lru_locks osc
+ t0=`date +%s`
+
+ can0=`awk '/ldlm_cancel/ {print $2}' $LPROC/ldlm/services/ldlm_canceld/stats`
+ blk0=`awk '/ldlm_bl_callback/ {print $2}' $LPROC/ldlm/services/ldlm_cbd/stats`
+ createmany -o $DIR/$tdir/f $count
+ sync
+ can1=`awk '/ldlm_cancel/ {print $2}' $LPROC/ldlm/services/ldlm_canceld/stats`
+ blk1=`awk '/ldlm_bl_callback/ {print $2}' $LPROC/ldlm/services/ldlm_cbd/stats`
+ t1=`date +%s`
+ echo total: $((can1-can0)) cancels, $((blk1-blk0)) blockings
+ echo rm $count files
+ rm -r $DIR/$tdir
+ sync
+ can2=`awk '/ldlm_cancel/ {print $2}' $LPROC/ldlm/services/ldlm_canceld/stats`
+ blk2=`awk '/ldlm_bl_callback/ {print $2}' $LPROC/ldlm/services/ldlm_cbd/stats`
+ t2=`date +%s`
+ echo total: $count removes in $((t2-t1))
+ echo total: $((can2-can1)) cancels, $((blk2-blk1)) blockings
+ sleep 2
+ # wait for commitment of removal
+}
+run_test 119g "Early Lock Cancel: performance test"
+
TMPDIR=$OLDTMPDIR
TMP=$OLDTMP
HOME=$OLDHOME
echo '=========================== finished ==============================='
-[ -f "$SANITYLOG" ] && cat $SANITYLOG && exit 1 || true
+[ -f "$SANITYLOG" ] && cat $SANITYLOG && grep -q FAIL $SANITYLOG && exit 1 || true
+echo "$0: completed"