# This test needs to be run on the client
#
SAVE_PWD=$PWD
+export MULTIOP=${MULTIOP:-multiop}
LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)}
SETUP=${SETUP:-}
CLEANUP=${CLEANUP:-}
assert_DIR
rm -rf $DIR/[df][0-9]*
+# LU-482 Avert LVM and VM inability to flush caches in pre .33 kernels
+if [ $LINUX_VERSION_CODE -lt $(version_code 2.6.33) ]; then
+ sync
+ do_facet $SINGLEMDS sync
+fi
+
test_0a() { # was test_0
- sleep 10
mkdir $DIR/$tfile
replay_barrier $SINGLEMDS
fail $SINGLEMDS
usleep 60 # give dd a chance to start
done
- lfs getstripe $DIR/$tfile || return 1
+ $GETSTRIPE $DIR/$tfile || return 1
rm -f $DIR/$tfile || return 2 # make it an orphan
mds_evict_client
client_up || client_up || true # reconnect
replay_barrier $SINGLEMDS
# clear the dmesg buffer so we only see errors from this recovery
- dmesg -c >/dev/null
+ do_facet $SINGLEMDS dmesg -c >/dev/null
fail_abort $SINGLEMDS
kill -USR1 $pid
- dmesg | grep "mds_unlink_orphan.*error .* unlinking orphan" && return 1
+ do_facet $SINGLEMDS dmesg | grep "error .* unlinking .* from PENDING" &&
+ return 1
wait $pid || return 3
sync
return 0
# the page, guarnateeing that the unlock from the RPC completion would
# assert on trying to unlock the unlocked page.
test_41() {
- [ $OSTCOUNT -lt 2 ] && \
- skip_env "skipping test 41: we don't have a second OST to test with" && \
- return
+ [ $OSTCOUNT -lt 2 ] &&
+ skip_env "skipping test 41: we don't have a second OST to test with" &&
+ return
local f=$MOUNT/$tfile
# make sure the start of the file is ost1
- lfs setstripe $f -s $((128 * 1024)) -i 0
+ $SETSTRIPE -S $((128 * 1024)) -i 0 $f
do_facet client dd if=/dev/zero of=$f bs=4k count=1 || return 3
cancel_lru_locks osc
# fail ost2 and read from ost1
local mdtosc=$(get_mdtosc_proc_path $SINGLEMDS $ost2_svc)
local osc2dev=$(do_facet $SINGLEMDS "lctl get_param -n devices" | \
grep $mdtosc | awk '{print $1}')
- [ -z "$osc2dev" ] && echo "OST: $ost2_svc" && lctl get_param -n devices && return 4
+ [ -z "$osc2dev" ] && echo "OST: $ost2_svc" && lctl get_param -n devices &&
+ return 4
do_facet $SINGLEMDS $LCTL --device $osc2dev deactivate || return 1
do_facet client dd if=$f of=/dev/null bs=4k count=1 || return 3
do_facet $SINGLEMDS $LCTL --device $osc2dev activate || return 2
run_test 58a "test recovery from llog for setattr op (test llog_gen_rec)"
test_58b() {
+ local orig
+ local new
+
+ large_xattr_enabled &&
+ orig="$(generate_string $(max_xattr_size))" || orig="bar"
+
mount_client $MOUNT2
mkdir -p $DIR/$tdir
touch $DIR/$tdir/$tfile
replay_barrier $SINGLEMDS
- setfattr -n trusted.foo -v bar $DIR/$tdir/$tfile
+ setfattr -n trusted.foo -v $orig $DIR/$tdir/$tfile
fail $SINGLEMDS
- VAL=`getfattr --absolute-names --only-value -n trusted.foo $MOUNT2/$tdir/$tfile`
- [ x$VAL = x"bar" ] || return 1
+ new=$(get_xattr_value trusted.foo $MOUNT2/$tdir/$tfile)
+ [[ "$new" = "$orig" ]] || return 1
rm -f $DIR/$tdir/$tfile
rmdir $DIR/$tdir
zconf_umount `hostname` $MOUNT2
run_test 58b "test replay of setxattr op"
test_58c() { # bug 16570
- mount_client $MOUNT2
- mkdir -p $DIR/$tdir
- touch $DIR/$tdir/$tfile
- drop_request "setfattr -n trusted.foo -v bar $DIR/$tdir/$tfile" || \
- return 1
- VAL=`getfattr --absolute-names --only-value -n trusted.foo $MOUNT2/$tdir/$tfile`
- [ x$VAL = x"bar" ] || return 2
- drop_reint_reply "setfattr -n trusted.foo1 -v bar1 $DIR/$tdir/$tfile" || \
- return 3
- VAL=`getfattr --absolute-names --only-value -n trusted.foo1 $MOUNT2/$tdir/$tfile`
- [ x$VAL = x"bar1" ] || return 4
- rm -f $DIR/$tdir/$tfile
- rmdir $DIR/$tdir
- zconf_umount `hostname` $MOUNT2
+ local orig
+ local orig1
+ local new
+
+ if large_xattr_enabled; then
+ local xattr_size=$(max_xattr_size)
+ orig="$(generate_string $((xattr_size / 2)))"
+ orig1="$(generate_string $xattr_size)"
+ else
+ orig="bar"
+ orig1="bar1"
+ fi
+
+ mount_client $MOUNT2
+ mkdir -p $DIR/$tdir
+ touch $DIR/$tdir/$tfile
+ drop_request "setfattr -n trusted.foo -v $orig $DIR/$tdir/$tfile" ||
+ return 1
+ new=$(get_xattr_value trusted.foo $MOUNT2/$tdir/$tfile)
+ [[ "$new" = "$orig" ]] || return 2
+ drop_reint_reply "setfattr -n trusted.foo1 -v $orig1 $DIR/$tdir/$tfile" ||
+ return 3
+ new=$(get_xattr_value trusted.foo1 $MOUNT2/$tdir/$tfile)
+ [[ "$new" = "$orig1" ]] || return 4
+ rm -f $DIR/$tdir/$tfile
+ rmdir $DIR/$tdir
+ zconf_umount $HOSTNAME $MOUNT2
}
run_test 58c "resend/reconstruct setxattr op"
at_start || return 0
$LCTL dk > /dev/null
debugsave
- sysctl -w lnet.debug="+other"
+ $LCTL set_param debug="other"
# Slow down a request to the current service time, this is critical
# because previous tests may have caused this value to increase.
REQ_DELAY=`lctl get_param -n mdc.${FSNAME}-MDT0000-mdc-*.timeouts |
at_start || return 0
# turn on D_ADAPTTO
debugsave
- sysctl -w lnet.debug="other trace"
+ $LCTL set_param debug="other trace"
$LCTL dk > /dev/null
# Slow down a request to the current service time, this is critical
# because previous tests may have caused this value to increase.
- lfs setstripe $DIR/$tfile --index=0 --count=1
+ $SETSTRIPE --stripe-index=0 --count=1 $DIR/$tfile
multiop $DIR/$tfile Ow1yc
REQ_DELAY=`lctl get_param -n osc.${FSNAME}-OST0000-osc-*.timeouts |
awk '/portal 6/ {print $5}'`
do_facet ost1 $LCTL set_param fail_loc=0x224
rm -f $DIR/$tfile
- lfs setstripe $DIR/$tfile --index=0 --count=1
+ $SETSTRIPE --stripe-index=0 --count=1 $DIR/$tfile
# force some real bulk transfer
multiop $DIR/$tfile oO_CREAT:O_RDWR:O_SYNC:w4096c
CONN1=$(lctl get_param -n osc.*.stats | awk '/_connect/ {total+=$2} END {print total}')
# exhaust precreations on ost1
- local OST=$(lfs osts | grep ^0": " | awk '{print $2}' | sed -e 's/_UUID$//')
+ local OST=$(ostname_from_index 0)
local mdtosc=$(get_mdtosc_proc_path mds $OST)
local last_id=$(do_facet $SINGLEMDS lctl get_param -n \
osc.$mdtosc.prealloc_last_id)
osc.$mdtosc.prealloc_next_id)
mkdir -p $DIR/$tdir/${OST}
- lfs setstripe $DIR/$tdir/${OST} -o 0 -c 1 || error "setstripe"
+ $SETSTRIPE -i 0 -c 1 $DIR/$tdir/${OST} || error "$SETSTRIPE"
echo "Creating to objid $last_id on ost $OST..."
#define OBD_FAIL_OST_PAUSE_CREATE 0x223
do_facet ost1 "$LCTL set_param fail_val=20000"
rm -rf $DIR/$tdir
mkdir -p $DIR/$tdir
- lfs setstripe $DIR/$tdir --index=0 --count=1
+ $SETSTRIPE --stripe-index=0 --count=1 $DIR/$tdir
#define OBD_FAIL_LDLM_PAUSE_CANCEL 0x312
$LCTL set_param fail_val=$(($TIMEOUT - 1))
$LCTL set_param fail_loc=0x80000312
local clients=${CLIENTS:-$HOSTNAME}
zconf_mount_clients $clients $MOUNT
-
+
local duration=300
[ "$SLOW" = "no" ] && duration=60
# set duration to 900 because it takes some time to boot node
local cmd="rundbench 1 -t $duration"
local pid=""
do_nodesv $clients "set -x; MISSING_DBENCH_OK=$MISSING_DBENCH_OK \
- PATH=:$PATH:$LUSTRE/utils:$LUSTRE/tests/:$DBENCH_LIB \
+ PATH=\$PATH:$LUSTRE/utils:$LUSTRE/tests/:$DBENCH_LIB \
DBENCH_LIB=$DBENCH_LIB TESTSUITE=$TESTSUITE TESTNAME=$TESTNAME \
- LCTL=$LCTL $cmd" &
+ MOUNT=$MOUNT DIR=$DIR/$tdir/\\\$(hostname) LCTL=$LCTL $cmd" &
pid=$!
log "Started rundbench load pid=$pid ..."
# give rundbench a chance to start, bug 24118
- sleep 2
+ sleep 12
local elapsed=0
local num_failovers=0
local start_ts=$(date +%s)
while [ $elapsed -lt $duration ]; do
- if ! check_for_process $clients rundbench; then
- error_noexit "rundbench not found on some of $clients!"
+ if ! check_for_process $clients dbench; then
+ error_noexit "dbench not found on some of $clients!"
killall_process $clients dbench
break
fi
test_85b() { #bug 16774
lctl set_param -n ldlm.cancel_unused_locks_before_replay "1"
- lfs setstripe -o 0 -c 1 $DIR
+ do_facet mgs $LCTL pool_new $FSNAME.$TESTNAME || return 1
+ do_facet mgs $LCTL pool_add $FSNAME.$TESTNAME $FSNAME-OST0000 || return 2
+
+ $SETSTRIPE -c 1 -p $FSNAME.$TESTNAME $DIR
for i in `seq 100`; do
dd if=/dev/urandom of=$DIR/$tfile-$i bs=4096 count=32 >/dev/null 2>&1
addr=`echo $lov_id | awk '{print $4}' | awk -F '-' '{print $3}'`
count=`lctl get_param -n ldlm.namespaces.*OST0000*$addr.lock_unused_count`
echo "before recovery: unused locks count = $count"
+ [ $count != 0 ] || return 3
fail ost1
count2=`lctl get_param -n ldlm.namespaces.*OST0000*$addr.lock_unused_count`
echo "after recovery: unused locks count = $count2"
+ do_facet mgs $LCTL pool_remove $FSNAME.$TESTNAME $FSNAME-OST0000 || return 4
+ do_facet mgs $LCTL pool_destroy $FSNAME.$TESTNAME || return 5
+
if [ $count2 -ge $count ]; then
error "unused locks are not canceled"
fi
do_facet ost1 "lctl set_param -n obdfilter.${ost1_svc}.sync_journal 0"
replay_barrier ost1
- lfs setstripe -i 0 -c 1 $DIR/$tfile
+ $SETSTRIPE -i 0 -c 1 $DIR/$tfile
dd if=/dev/urandom of=$DIR/$tfile bs=1024k count=8 || error "Cannot write"
cksum=`md5sum $DIR/$tfile | awk '{print $1}'`
cancel_lru_locks osc
do_facet ost1 "lctl set_param -n obdfilter.${ost1_svc}.sync_journal 0"
replay_barrier ost1
- lfs setstripe -i 0 -c 1 $DIR/$tfile
+ $SETSTRIPE -i 0 -c 1 $DIR/$tfile
dd if=/dev/urandom of=$DIR/$tfile bs=1024k count=8 || error "Cannot write"
sleep 1 # Give it a chance to flush dirty data
echo TESTTEST | dd of=$DIR/$tfile bs=1 count=8 seek=64
mkdir -p $DIR/$tdir
mkdir -p $TMP/$tdir
- lfs setstripe $DIR/$tdir -o 0 -c 1 || error "setstripe"
+ $SETSTRIPE -i 0 -c 1 $DIR/$tdir || error "$SETSTRIPE"
replay_barrier ost1
replay_barrier $SINGLEMDS
# exhaust precreations on ost1
- local OST=$(lfs osts | grep ^0": " | awk '{print $2}' | sed -e 's/_UUID$//')
+ local OST=$(ostname_from_index 0)
local mdtosc=$(get_mdtosc_proc_path $SINGLEMDS $OST)
local last_id=$(do_facet $SINGLEMDS lctl get_param -n osc.$mdtosc.prealloc_last_id)
local next_id=$(do_facet $SINGLEMDS lctl get_param -n osc.$mdtosc.prealloc_next_id)
wait_mds_ost_sync
wait_destroy_complete
BLOCKS1=$(df -P $MOUNT | tail -n 1 | awk '{ print $3 }')
- lfs setstripe -i 0 -c 1 $DIR/$tdir/$tfile
+ $SETSTRIPE -i 0 -c 1 $DIR/$tdir/$tfile
dd if=/dev/zero bs=1M count=10 of=$DIR/$tdir/$tfile
sync
stop ost1
# file "f${index}" striped over 1 OST
# file "all" striped over all OSTs
- $LFS setstripe -c $OSTCOUNT $dir/all || error "setstripe failed to create $dir/all"
+ $SETSTRIPE -c $OSTCOUNT $dir/all ||
+ error "setstripe failed to create $dir/all"
for (( i=0; i<$OSTCOUNT; i++ )); do
local f=$dir/f$i
- $LFS setstripe -i $i -c 1 $f || error "setstripe failed to create $f"
+ $SETSTRIPE -i $i -c 1 $f || error "$SETSTRIPE failed to create $f"
- # confirm that setstripe actually created the stripe on the requested OST
+ # confirm setstripe actually created the stripe on the requested OST
local uuid=$(ostuuid_from_index $i)
for file in f$i all; do
if [[ $dir/$file != $($LFS find --obd $uuid --name $file $dir) ]]; then
- $LFS getstripe $dir/file
+ $GETSTRIPE $dir/file
error wrong stripe: $file, uuid: $uuid
fi
done
[[ $(echo $list | wc -w) -eq 2 ]] ||
error_noexit "lfs find reports the wrong list of affected files ${#list[@]}"
- echo "Check getstripe: lfs getstripe -r --obd $obd"
- list=$($LFS getstripe -r --obd $obd $dir)
+ echo "Check getstripe: $GETSTRIPE -r --obd $obd"
+ list=$($GETSTRIPE -r --obd $obd $dir)
echo "$list"
for file in all f$index; do
echo "$list" | grep $dir/$file ||