Whamcloud - gitweb
LU-482 test: sync new fs before first replay test
[fs/lustre-release.git] / lustre / tests / replay-single.sh
index b0d5a60..da4b6f9 100755 (executable)
@@ -35,8 +35,12 @@ mkdir -p $DIR
 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 $(kernel_version 2 6 33) ]; then
+    sync; sleep 5; sync; sleep 5; sync; sleep 5
+fi
+
 test_0a() {    # was test_0
-    sleep 10
     mkdir $DIR/$tfile
     replay_barrier $SINGLEMDS
     fail $SINGLEMDS
@@ -732,10 +736,11 @@ test_37() {
 
     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
@@ -1369,14 +1374,20 @@ test_58a() {
 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
@@ -1384,20 +1395,33 @@ test_58b() {
 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"
 
@@ -2058,7 +2082,10 @@ run_test 85a "check the cancellation of unused locks during recovery(IBITS)"
 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
+
+    lfs 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
@@ -2074,12 +2101,16 @@ test_85b() { #bug 16774
     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