run_test 17g "symlinks: really long symlink name ==============================="
test_17h() { #bug 17378
+ remote_mds_nodsh && skip "remote MDS with nodsh" && return
mkdir -p $DIR/$tdir
$SETSTRIPE $DIR/$tdir -c -1
#define OBD_FAIL_MDS_LOV_PREP_CREATE 0x141
run_test 17h "create objects: lov_free_memmd() doesn't lbug"
test_17i() { #bug 20018
+ remote_mds_nodsh && skip "remote MDS with nodsh" && return
mkdir -p $DIR/$tdir
local foo=$DIR/$tdir/$tfile
ln -s $foo $foo || error "create symlink failed"
local MDSIDX=$(get_mds_dir "$DIR/$tdir")
echo OSTIDX=$OSTIDX MDSIDX=$MDSIDX
- local OST=$(lfs osts | grep ${OSTIDX}": " | \
- awk '{print $2}' | sed -e 's/_UUID$//')
+ local OST=$(ostname_from_index $OSTIDX)
local MDT_INDEX=$(lfs df | grep "\[MDT:$((MDSIDX - 1))\]" | awk '{print $1}' | \
sed -e 's/_UUID$//;s/^.*-//')
reset_enospc
rm -f $DIR/$tdir/$tfile
+ mkdir -p $DIR/$tdir
$MCREATE $DIR/$tdir/$tfile || error "mcreate $DIR/$tdir/$tfile failed"
$TRUNCATE $DIR/$tdir/$tfile 80000000 ||error "truncate $DIR/$tdir/$tfile failed"
$CHECKSTAT -s 80000000 $DIR/$tdir/$tfile || error "checkstat failed"
run_test 27u "skip object creation on OSC w/o objects =========="
test_27v() { # bug 4900
- [ "$OSTCOUNT" -lt "2" ] && skip_env "too few OSTs" && return
- remote_mds_nodsh && skip "remote MDS with nodsh" && return
- remote_ost_nodsh && skip "remote OST with nodsh" && return
+ [ "$OSTCOUNT" -lt "2" ] && skip_env "too few OSTs" && return
+ remote_mds_nodsh && skip "remote MDS with nodsh" && return
+ remote_ost_nodsh && skip "remote OST with nodsh" && return
exhaust_all_precreations 0x215
reset_enospc
touch $DIR/$tdir/$tfile
#define OBD_FAIL_TGT_DELAY_PRECREATE 0x705
# all except ost1
- for (( i=0; i < OSTCOUNT; i++ )) ; do
+ for (( i=1; i < OSTCOUNT; i++ )); do
do_facet ost$i lctl set_param fail_loc=0x705
done
local START=`date +%s`
local FINISH=`date +%s`
local TIMEOUT=`lctl get_param -n timeout`
- [ $((FINISH - START)) -ge $((TIMEOUT / 2)) ] && \
+ local PROCESS=$((FINISH - START))
+ [ $PROCESS -ge $((TIMEOUT / 2)) ] && \
error "$FINISH - $START >= $TIMEOUT / 2"
-
+ sleep $((TIMEOUT / 2 - PROCESS))
reset_enospc
}
run_test 27v "skip object creation on slow OST ================="
run_test 27w "check lfs setstripe -c -s -i options ============="
test_27x() {
+ remote_ost_nodsh && skip "remote OST with nodsh" && return
[ "$OSTCOUNT" -lt "2" ] && skip_env "$OSTCOUNT < 2 OSTs" && return
OFFSET=$(($OSTCOUNT - 1))
OSTIDX=0
- local OST=$(lfs osts | awk '/'${OSTIDX}': / { print $2 }' | sed -e 's/_UUID$//')
+ local OST=$(ostname_from_index $OSTIDX)
mkdir -p $DIR/$tdir
$SETSTRIPE $DIR/$tdir -c 1 # 1 stripe per file
test_27y() {
[ "$OSTCOUNT" -lt "2" ] && skip_env "$OSTCOUNT < 2 OSTs -- skipping" && return
remote_mds_nodsh && skip "remote MDS with nodsh" && return
+ remote_ost_nodsh && skip "remote OST with nodsh" && return
local mdtosc=$(get_mdtosc_proc_path $SINGLEMDS $FSNAME-OST0000)
local last_id=$(do_facet $SINGLEMDS lctl get_param -n \
} fi
done
- OSTIDX=$(lfs osts | grep ${OST} | awk '{print $1}' | sed -e 's/://')
+ OSTIDX=$(index_from_ostuuid $OST)
mkdir -p $DIR/$tdir
$SETSTRIPE $DIR/$tdir -c 1 # 1 stripe / file
- do_facet ost$OSTIDX lctl set_param -n obdfilter.$OST.degraded 1
+ do_facet ost$((OSTIDX+1)) lctl set_param -n obdfilter.$OST.degraded 1
sleep_maxage
createmany -o $DIR/$tdir/$tfile $fcount
- do_facet ost$OSTIDX lctl set_param -n obdfilter.$OST.degraded 0
+ do_facet ost$((OSTIDX+1)) lctl set_param -n obdfilter.$OST.degraded 0
for i in `seq 0 $OFFSET`; do
[ `$GETSTRIPE $DIR/$tdir/$tfile$i | grep -A 10 obdidx | awk '{print $1}'| grep -w "$OSTIDX"` ] || \
local objid=${lmm[$((j+1))]}
local group=${lmm[$((j+3))]}
local dev=$(ostdevname $devnum)
- local dir=${MOUNT%/*}/ost$devnum
- local mntpt=$(facet_mntpt ost$devnum)
+ local dir=$(facet_mntpt ost$devnum)
stop ost$devnum
do_facet ost$devnum mount -t $FSTYPE $dev $dir $OST_MOUNT_OPTS ||
[ $stripe -eq $i ] || { error "stripe mismatch"; return 6; }
echo -e "\t\tost $obdidx, objid $objid, group $group"
- do_facet ost$devnum umount -d $mntpt
+ do_facet ost$devnum umount -d $dir
start ost$devnum $dev $OST_MOUNT_OPTS
done
}
test_27z() {
+ remote_ost_nodsh && skip "remote OST with nodsh" && return
mkdir -p $DIR/$tdir
$SETSTRIPE $DIR/$tdir/$tfile-1 -c 1 -o 0 -s 1m ||
{ error "setstripe -c -1 failed"; return 1; }
local write_bytes
local all_zeros
+ remote_ost_nodsh && skip "remote OST with nodsh" && return
all_zeros=:
rm -fr $DIR/d33
mkdir -p $DIR/d33
TEST_39_ATIME=`date -d "1 year" +%s`
test_39l() {
+ remote_mds_nodsh && skip "remote MDS with nodsh" && return
local atime_diff=$(do_facet $SINGLEMDS lctl get_param -n mdd.*.atime_diff)
mkdir -p $DIR/$tdir
[ "$OSTCOUNT" -lt 2 ] && \
skip_env "skipping other lfs getstripe --obd test" && return
OSTIDX=1
- OBDUUID=$(lfs osts | grep ${OSTIDX}": " | awk '{print $2}')
+ OBDUUID=$(ostuuid_from_index $OSTIDX)
FILENUM=`$GETSTRIPE -ir $DIR/d56 | grep -x $OSTIDX | wc -l`
FOUND=`$GETSTRIPE -r --obd $OBDUUID $DIR/d56 | grep obdidx | wc -l`
[ $FOUND -eq $FILENUM ] || \
run_test 56n "check lfs find -type l ============================="
test_56o() {
- setup_56 $NUMFILES $NUMDIRS
TDIR=$DIR/${tdir}g
+ rm -rf $TDIR
+ setup_56 $NUMFILES $NUMDIRS
utime $TDIR/file1 > /dev/null || error "utime (1)"
utime $TDIR/file2 > /dev/null || error "utime (2)"
utime $TDIR/dir1 > /dev/null || error "utime (3)"
utime $TDIR/dir2 > /dev/null || error "utime (4)"
utime $TDIR/dir1/file1 > /dev/null || error "utime (5)"
+ dd if=/dev/zero count=1 >> $TDIR/dir1/file1 && sync
+
+ EXPECTED=4
+ NUMS=`$LFIND -mtime +0 $TDIR | wc -l`
+ [ $NUMS -eq $EXPECTED ] || \
+ error "lfs find -mtime +0 $TDIR wrong: found $NUMS, expected $EXPECTED"
- EXPECTED=5
- NUMS=`$LFIND -mtime +1 $TDIR | wc -l`
+ EXPECTED=12
+ NUMS=`$LFIND -mtime 0 $TDIR | wc -l`
[ $NUMS -eq $EXPECTED ] || \
- error "lfs find -mtime $TDIR wrong: found $NUMS, expected $EXPECTED"
+ error "lfs find -mtime 0 $TDIR wrong: found $NUMS, expected $EXPECTED"
+
}
run_test 56o "check lfs find -mtime for old files =========================="
[ $NUMS -eq $EXPECTED ] || \
error "lfs find $TDIR ! -size 0 wrong: found $NUMS, expected $EXPECTED"
echo "test" > $TDIR/56r && sync
+ echo "test2" > $TDIR/56r2 && sync
EXPECTED=1
NUMS=`$LFIND -size 5 -t f $TDIR | wc -l`
[ $NUMS -eq $EXPECTED ] || \
NUMS=`$LFIND -size +5 -t f $TDIR | wc -l`
[ $NUMS -eq $EXPECTED ] || \
error "lfs find $TDIR -size +5 wrong: found $NUMS, expected $EXPECTED"
- EXPECTED=13
+ EXPECTED=2
NUMS=`$LFIND -size +0 -t f $TDIR | wc -l`
[ $NUMS -eq $EXPECTED ] || \
error "lfs find $TDIR -size +0 wrong: found $NUMS, expected $EXPECTED"
- EXPECTED=0
+ EXPECTED=2
NUMS=`$LFIND ! -size -5 -t f $TDIR | wc -l`
[ $NUMS -eq $EXPECTED ] || \
error "lfs find $TDIR ! -size -5 wrong: found $NUMS, expected $EXPECTED"
+ EXPECTED=12
+ NUMS=`$LFIND -size -5 -t f $TDIR | wc -l`
+ [ $NUMS -eq $EXPECTED ] || \
+ error "lfs find $TDIR -size -5 wrong: found $NUMS, expected $EXPECTED"
}
run_test 56r "check lfs find -size works =========================="
run_test 57a "verify MDS filesystem created with large inodes =="
test_57b() {
+ remote_mds_nodsh && skip "remote MDS with nodsh" && return
local dir=$DIR/d57b
local FILECOUNT=100
TEST60_HEAD="test_60 run $RANDOM"
test_60a() {
+ remote_mgs_nodsh && skip "remote MGS with nodsh" && return
[ ! -f run-llog.sh ] && skip_env "missing subtest run-llog.sh" && return
log "$TEST60_HEAD - from kernel mode"
do_facet mgs sh run-llog.sh
return 0
}
-export ORIG_CSUM_TYPE=""
+export ORIG_CSUM_TYPE="`lctl get_param -n osc.*osc-[^mM]*.checksum_type |
+ sed 's/.*\[\(.*\)\].*/\1/g' | head -n1`"
CKSUM_TYPES=${CKSUM_TYPES:-"crc32 adler"}
+[ "$ORIG_CSUM_TYPE" = "crc32c" ] && CKSUM_TYPES="$CKSUM_TYPES crc32c"
set_checksum_type()
{
- [ "$ORIG_CSUM_TYPE" ] || \
- ORIG_CSUM_TYPE=`lctl get_param -n osc/*osc-[^mM]*/checksum_type |
- sed 's/.*\[\(.*\)\].*/\1/g' | head -n1`
lctl set_param -n osc.*osc-[^mM]*.checksum_type $1
log "set checksum type to $1"
return 0
run_test 80 "Page eviction is equally fast at high offsets too ===="
test_81a() { # LU-456
+ remote_ost_nodsh && skip "remote OST with nodsh" && return
# define OBD_FAIL_OST_MAPBLK_ENOSPC 0x228
# MUST OR with the OBD_FAIL_ONCE (0x80000000)
do_facet ost0 lctl set_param fail_loc=0x80000228
run_test 81a "OST should retry write when get -ENOSPC ==============="
test_81b() { # LU-456
+ remote_ost_nodsh && skip "remote OST with nodsh" && return
# define OBD_FAIL_OST_MAPBLK_ENOSPC 0x228
# Don't OR with the OBD_FAIL_ONCE (0x80000000)
do_facet ost0 lctl set_param fail_loc=0x228
lfs df $DIR/$tfile || error "lfs df $DIR/$tfile failed"
lfs df -ih $DIR/$tfile || error "lfs df -ih $DIR/$tfile failed"
- OSC=`lctl get_param -n devices | awk '/-osc-/ {print $4}' | head -n 1`
+ OSC=`lctl dl |grep OST0000-osc-[^M] |awk '{print $4}'`
lctl --device %$OSC deactivate
lfs df || error "lfs df with deactivated OSC failed"
- lctl --device %$OSC recover
+ lctl --device %$OSC activate
+ # wait the osc back to normal
+ wait_osc_import_state client ost FULL
+
lfs df || error "lfs df with reactivated OSC failed"
rm -f $DIR/$tfile
}
}
run_test 118k "bio alloc -ENOMEM and IO TERM handling ========="
+test_118l()
+{
+ # LU-646
+ mkdir -p $DIR/$tdir
+ multiop $DIR/$tdir Dy || error "fsync dir failed"
+ rm -rf $DIR/$tdir
+}
+run_test 118l "fsync dir ========="
+
[ "$SLOW" = "no" ] && [ -n "$OLD_RESENDCOUNT" ] && set_resend_count $OLD_RESENDCOUNT
test_119a() # bug 11737
done
echo ""
lctl set_param -n $NSDIR.pool.lock_volume_factor $OLD_LVF
- local LRU_SIZE_A=`lctl get_param -n $NSDIR/lru_size`
+ local LRU_SIZE_A=`lctl get_param -n $NSDIR.lru_size`
[ $LRU_SIZE_B -gt $LRU_SIZE_A ] || {
error "No locks dropped in ${SLEEP}s. LRU size: $LRU_SIZE_A"
}
test_132() { #1028, SOM
+ remote_mds_nodsh && skip "remote MDS with nodsh" && return
local num=$(get_mds_dir $DIR)
local mymds=mds${num}
local MOUNTOPT_SAVE=$MOUNTOPT
case $1 in
$SINGLEMDS) res=`do_facet $SINGLEMDS $LCTL get_param mdt.$FSNAME-MDT0000.md_stats | grep "$2"`
;;
- ost) res=`do_facet ost $LCTL get_param obdfilter.$FSNAME-OST0000.stats | grep "$2"`
+ ost) res=`do_facet ost1 $LCTL get_param obdfilter.$FSNAME-OST0000.stats | grep "$2"`
;;
*) error "Wrong argument $1" ;;
esac
}
test_133a() {
+ remote_ost_nodsh && skip "remote OST with nodsh" && return
+ remote_mds_nodsh && skip "remote MDS with nodsh" && return
local testdir=$DIR/${tdir}/stats_testdir
mkdir -p $DIR/${tdir}
# clear stats.
do_facet $SINGLEMDS $LCTL set_param mdt.*.md_stats=clear
- do_facet ost $LCTL set_param obdfilter.*.stats=clear
+ do_facet ost1 $LCTL set_param obdfilter.*.stats=clear
# verify mdt stats first.
mkdir ${testdir} || error "mkdir failed"
run_test 133a "Verifying MDT stats ========================================"
test_133b() {
+ remote_ost_nodsh && skip "remote OST with nodsh" && return
+ remote_mds_nodsh && skip "remote MDS with nodsh" && return
local testdir=$DIR/${tdir}/stats_testdir
mkdir -p ${testdir} || error "mkdir failed"
touch ${testdir}/${tfile} || "touch failed"
# clear stats.
do_facet $SINGLEMDS $LCTL set_param mdt.*.md_stats=clear
- do_facet ost $LCTL set_param obdfilter.*.stats=clear
+ do_facet ost1 $LCTL set_param obdfilter.*.stats=clear
# extra mdt stats verification.
chmod 444 ${testdir}/${tfile} || error "chmod failed"
run_test 133b "Verifying extra MDT stats =================================="
test_133c() {
+ remote_ost_nodsh && skip "remote OST with nodsh" && return
+ remote_mds_nodsh && skip "remote MDS with nodsh" && return
local testdir=$DIR/${tdir}/stats_testdir
mkdir -p ${testdir} || error "mkdir failed"
# clear stats.
do_facet $SINGLEMDS $LCTL set_param mdt.*.md_stats=clear
- do_facet ost $LCTL set_param obdfilter.*.stats=clear
+ do_facet ost1 $LCTL set_param obdfilter.*.stats=clear
dd if=/dev/zero of=${testdir}/${tfile} conv=notrunc bs=1024k count=1 || error "dd failed"
sync
}
test_155_big_load() {
+ remote_ost_nodsh && skip "remote OST with nodsh" && return
local temp=$TMP/$tfile
local file=$DIR/$tfile
error $*
fi
}
+
+changelog_chmask()
+{
+ MASK=$(do_facet $SINGLEMDS $LCTL get_param mdd.$MDT0.changelog_mask |\
+ grep -c $1)
+
+ if [ $MASK -eq 1 ]; then
+ do_facet $SINGLEMDS $LCTL set_param mdd.$MDT0.changelog_mask="-$1"
+ else
+ do_facet $SINGLEMDS $LCTL set_param mdd.$MDT0.changelog_mask="+$1"
+ fi
+}
+
test_160() {
- USER=$(do_facet $SINGLEMDS lctl --device $MDT0 changelog_register -n)
+ remote_mds_nodsh && skip "remote MDS with nodsh" && return
+ USER=$(do_facet $SINGLEMDS $LCTL --device $MDT0 changelog_register -n)
echo "Registered as changelog user $USER"
- do_facet $SINGLEMDS lctl get_param -n mdd.$MDT0.changelog_users | \
+ do_facet $SINGLEMDS $LCTL get_param -n mdd.$MDT0.changelog_users | \
grep -q $USER || error "User $USER not found in changelog_users"
# change something
$LFS changelog $MDT0 | tail -5
echo "verifying changelog mask"
- do_facet $SINGLEMDS lctl set_param mdd.$MDT0.changelog_mask="-mkdir"
- mkdir -p $DIR/$tdir/pics/2009/sofia
- do_facet $SINGLEMDS lctl set_param mdd.$MDT0.changelog_mask="+mkdir"
- mkdir $DIR/$tdir/pics/2009/zachary
- DIRS=$($LFS changelog $MDT0 | tail -5 | grep -c MKDIR)
- [ $DIRS -eq 1 ] || err17935 "changelog mask count $DIRS != 1"
+ changelog_chmask "MKDIR"
+ changelog_chmask "CLOSE"
+
+ mkdir -p $DIR/$tdir/pics/zach/sofia
+ echo "zzzzzz" > $DIR/$tdir/pics/zach/file
+
+ changelog_chmask "MKDIR"
+ changelog_chmask "CLOSE"
+
+ mkdir -p $DIR/$tdir/pics/2008/sofia
+ echo "zzzzzz" > $DIR/$tdir/pics/zach/file
+
+ $LFS changelog $MDT0
+ MKDIRS=$($LFS changelog $MDT0 | tail -5 | grep -c "MKDIR")
+ CLOSES=$($LFS changelog $MDT0 | tail -5 | grep -c "CLOSE")
+ [ $MKDIRS -eq 1 ] || err17935 "MKDIR changelog mask count $DIRS != 1"
+ [ $CLOSES -eq 1 ] || err17935 "CLOSE changelog mask count $DIRS != 1"
# verify contents
echo "verifying target fid"
[ "$fidc" == "p=$fidf" ] || \
err17935 "pfid in changelog $fidc != dir fid $fidf"
- USER_REC1=$(do_facet $SINGLEMDS lctl get_param -n \
+ USER_REC1=$(do_facet $SINGLEMDS $LCTL get_param -n \
mdd.$MDT0.changelog_users | grep $USER | awk '{print $2}')
$LFS changelog_clear $MDT0 $USER $(($USER_REC1 + 5))
- USER_REC2=$(do_facet $SINGLEMDS lctl get_param -n \
+ USER_REC2=$(do_facet $SINGLEMDS $LCTL get_param -n \
mdd.$MDT0.changelog_users | grep $USER | awk '{print $2}')
echo "verifying user clear: $(( $USER_REC1 + 5 )) == $USER_REC2"
[ $USER_REC2 == $(($USER_REC1 + 5)) ] || \
err17935 "user index should be $(($USER_REC1 + 5)); is $USER_REC2"
- MIN_REC=$(do_facet $SINGLEMDS lctl get_param mdd.$MDT0.changelog_users | \
+ MIN_REC=$(do_facet $SINGLEMDS $LCTL get_param mdd.$MDT0.changelog_users | \
awk 'min == "" || $2 < min {min = $2}; END {print min}')
FIRST_REC=$($LFS changelog $MDT0 | head -1 | awk '{print $1}')
echo "verifying min purge: $(( $MIN_REC + 1 )) == $FIRST_REC"
err17935 "first index should be $(($MIN_REC + 1)); is $FIRST_REC"
echo "verifying user deregister"
- do_facet $SINGLEMDS lctl --device $MDT0 changelog_deregister $USER
- do_facet $SINGLEMDS lctl get_param -n mdd.$MDT0.changelog_users | \
+ do_facet $SINGLEMDS $LCTL --device $MDT0 changelog_deregister $USER
+ do_facet $SINGLEMDS $LCTL get_param -n mdd.$MDT0.changelog_users | \
grep -q $USER && error "User $USER still found in changelog_users"
- USERS=$(( $(do_facet $SINGLEMDS lctl get_param -n \
+ USERS=$(( $(do_facet $SINGLEMDS $LCTL get_param -n \
mdd.$MDT0.changelog_users | wc -l) - 2 ))
if [ $USERS -eq 0 ]; then
- LAST_REC1=$(do_facet $SINGLEMDS lctl get_param -n \
+ LAST_REC1=$(do_facet $SINGLEMDS $LCTL get_param -n \
mdd.$MDT0.changelog_users | head -1 | awk '{print $3}')
touch $DIR/$tdir/chloe
- LAST_REC2=$(do_facet $SINGLEMDS lctl get_param -n \
+ LAST_REC2=$(do_facet $SINGLEMDS $LCTL get_param -n \
mdd.$MDT0.changelog_users | head -1 | awk '{print $3}')
echo "verify changelogs are off if we were the only user: $LAST_REC1 == $LAST_REC2"
[ $LAST_REC1 == $LAST_REC2 ] || error "changelogs not off"
}
test_180a() {
+ remote_ost_nodsh && skip "remote OST with nodsh" && return
local rc=0
local rmmod_local=0
fi
local osc=$($LCTL dl | grep -v mdt | awk '$3 == "osc" {print $4; exit}')
- local host=$(awk '/current_connection:/ {print $2}' /proc/fs/lustre/osc/$osc/import)
- local target=$(awk '/target:/ {print $2}' /proc/fs/lustre/osc/$osc/import)
+ local host=$(lctl get_param -n osc.$osc.import |
+ awk '/current_connection:/ {print $2}' )
+ local target=$(lctl get_param -n osc.$osc.import |
+ awk '/target:/ {print $2}' )
target=${target%_UUID}
[[ -n $target ]] && { setup_obdecho_osc $host $target || rc=1; } || rc=1
run_test 180a "test obdecho on osc"
test_180b() {
+ remote_ost_nodsh && skip "remote OST with nodsh" && return
local rc=0
local rmmod_remote=0
- do_facet ost "lsmod | grep -q obdecho || " \
- "{ insmod ${LUSTRE}/obdecho/obdecho.ko || " \
- "modprobe obdecho; }" && rmmod_remote=1
- target=$(do_facet ost $LCTL dl | awk '/obdfilter/ {print $4;exit}')
- [[ -n $target ]] && { obdecho_create_test $target ost || rc=1; }
- [ $rmmod_remote -eq 1 ] && do_facet ost "rmmod obdecho"
+ do_facet ost1 "lsmod | grep -q obdecho || " \
+ "{ insmod ${LUSTRE}/obdecho/obdecho.ko || " \
+ "modprobe obdecho; }" && rmmod_remote=1
+ target=$(do_facet ost1 $LCTL dl | awk '/obdfilter/ {print $4;exit}')
+ [[ -n $target ]] && { obdecho_create_test $target ost1 || rc=1; }
+ [ $rmmod_remote -eq 1 ] && do_facet ost1 "rmmod obdecho"
return $rc
}
run_test 180b "test obdecho directly on obdfilter"
run_test 215 "/proc/sys/lnet exists and has proper content - bugs 18102, 21079, 21517"
test_216() { # bug 20317
+ remote_ost_nodsh && skip "remote OST with nodsh" && return
local node
local p="$TMP/sanityN-$TESTNAME.parameters"
save_lustre_params $HOSTNAME "osc.*.contention_seconds" > $p
test_217() { # bug 22430
local node
+ local nid
+
for node in $(nodes_list); do
- if [[ $node = *-* ]] ; then
- echo "lctl ping $node@$NETTYPE"
- lctl ping $node@$NETTYPE
+ nid=$(host_nids_address $node $NETTYPE)
+ if [[ $nid = *-* ]] ; then
+ echo "lctl ping $nid@$NETTYPE"
+ lctl ping $nid@$NETTYPE
else
- echo "skipping $node (no hiphen detected)"
+ echo "skipping $node (no hyphen detected)"
fi
done
}
echo "OST still has $count objects"
free=$((count + last_id - next_id))
- echo "create $free files..."
+ echo "create $((free - next_id)) files @next_id..."
createmany -o $DIR/$tdir/f $next_id $free || return 3
- local last_id=$(do_facet mds${MDSIDX} lctl get_param -n \
+ local last_id2=$(do_facet mds${MDSIDX} lctl get_param -n \
osc.$mdtosc_proc1.prealloc_last_id)
- local next_id=$(do_facet mds${MDSIDX} lctl get_param -n \
+ local next_id2=$(do_facet mds${MDSIDX} lctl get_param -n \
osc.$mdtosc_proc1.prealloc_next_id)
- echo "after creation, last_id=$last_id, next_id=$next_id"
+ echo "after creation, last_id=$last_id2, next_id=$next_id2"
$LFS df -i
echo "cleanup..."
do_facet mgs $LCTL pool_remove $FSNAME.$TESTNAME $OST || return 4
do_facet mgs $LCTL pool_destroy $FSNAME.$TESTNAME || return 5
+ echo "unlink $((free - next_id)) files @ $next_id..."
unlinkmany $DIR/$tdir/f $next_id $free || return 3
}
run_test 220 "the preallocated objects in MDS still can be used if ENOSPC is returned by OST with enough disk space"
+test_221() {
+ cp `which date` $MOUNT
+
+ #define OBD_FAIL_LLITE_FAULT_TRUNC_RACE 0x1401
+ $LCTL set_param fail_loc=0x80001401
+
+ $MOUNT/date > /dev/null
+ rm -f $MOUNT/date
+}
+run_test 221 "make sure fault and truncate race to not cause OOM"
+
#
# tests that do cleanup/setup should be run at the end
#