Whamcloud - gitweb
LU-3553 tests: volatile file test fails interop testing
[fs/lustre-release.git] / lustre / tests / sanity.sh
index c3a8d1a..4bd99e6 100644 (file)
@@ -3853,13 +3853,11 @@ test_53() {
 run_test 53 "verify that MDS and OSTs agree on pre-creation ===="
 
 test_54a() {
-       [ ! -f "$SOCKETSERVER" ] &&
-               skip_env "no socketserver, skipping" && return
-       [ ! -f "$SOCKETCLIENT" ] &&
-               skip_env "no socketclient, skipping" && return
-       $SOCKETSERVER $DIR/socket
-       $SOCKETCLIENT $DIR/socket || error "$SOCKETCLIENT $DIR/socket failed"
-       $MUNLINK $DIR/socket
+       $SOCKETSERVER $DIR/socket ||
+               error "$SOCKETSERVER $DIR/socket failed: $?"
+       $SOCKETCLIENT $DIR/socket ||
+               error "$SOCKETCLIENT $DIR/socket failed: $?"
+       $MUNLINK $DIR/socket || error "$MUNLINK $DIR/socket failed: $?"
 }
 run_test 54a "unix domain socket test =========================="
 
@@ -4624,7 +4622,8 @@ TEST60_HEAD="test_60 run $RANDOM"
 test_60a() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
        remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-        [ ! -f run-llog.sh ] && skip_env "missing subtest run-llog.sh" && return
+       do_facet mgs "! which run-llog.sh &> /dev/null" &&
+               skip_env "missing subtest run-llog.sh" && return
        log "$TEST60_HEAD - from kernel mode"
        do_facet mgs sh run-llog.sh
 }
@@ -4752,8 +4751,7 @@ run_test 64a "verify filter grant calculations (in kernel) ====="
 
 test_64b () {
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
-       [ ! -f oos.sh ] && skip_env "missing subtest oos.sh" && return
-       sh oos.sh $MOUNT
+       sh oos.sh $MOUNT || error "oos.sh failed: $?"
 }
 run_test 64b "check out-of-space detection on client ==========="
 
@@ -8814,20 +8812,23 @@ dot_lustre_fid_permission_check() {
        mrename $test_dir/$tdir $MOUNT/.lustre/fid &&
                error "rename to $MOUNT/.lustre/fid should fail."
 
-       local old_obf_mode=$(stat --format="%a" $DIR/.lustre/fid)
-       local new_obf_mode=777
+       if [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.3.51) ]
+       then            # LU-3547
+               local old_obf_mode=$(stat --format="%a" $DIR/.lustre/fid)
+               local new_obf_mode=777
 
-       echo "change mode of $DIR/.lustre/fid to $new_obf_mode"
-       chmod $new_obf_mode $DIR/.lustre/fid ||
-               error "chmod $new_obf_mode $DIR/.lustre/fid failed"
+               echo "change mode of $DIR/.lustre/fid to $new_obf_mode"
+               chmod $new_obf_mode $DIR/.lustre/fid ||
+                       error "chmod $new_obf_mode $DIR/.lustre/fid failed"
 
-       local obf_mode=$(stat --format=%a $DIR/.lustre/fid)
-       [ $obf_mode -eq $new_obf_mode ] ||
-               error "stat $DIR/.lustre/fid returned wrong mode $obf_mode"
+               local obf_mode=$(stat --format=%a $DIR/.lustre/fid)
+               [ $obf_mode -eq $new_obf_mode ] ||
+                       error "stat $DIR/.lustre/fid returned wrong mode $obf_mode"
 
-       echo "restore mode of $DIR/.lustre/fid to $old_obf_mode"
-       chmod $old_obf_mode $DIR/.lustre/fid ||
-               error "chmod $old_obf_mode $DIR/.lustre/fid failed"
+               echo "restore mode of $DIR/.lustre/fid to $old_obf_mode"
+               chmod $old_obf_mode $DIR/.lustre/fid ||
+                       error "chmod $old_obf_mode $DIR/.lustre/fid failed"
+       fi
 
        $OPENFILE -f O_LOV_DELAY_CREATE:O_CREAT $test_dir/$tfile-2
        fid=$($LFS path2fid $test_dir/$tfile-2)
@@ -9866,6 +9867,10 @@ run_test 184d "allow stripeless layouts swap"
 
 
 test_185() { # LU-2441
+       # LU-3553 - no volatile file support in old servers
+       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.3.60) ]] ||
+               { skip "Need MDS version at least 2.3.60"; return 0; }
+
        mkdir -p $DIR/$tdir || error "creating dir $DIR/$tdir"
        touch $DIR/$tdir/spoo
        local mtime1=$(stat -c "%Y" $DIR/$tdir)
@@ -10487,6 +10492,57 @@ test_207b() {
 }
 run_test 207b "can refresh layout at open"
 
+test_208() {
+       # FIXME: in this test suite, only RD lease is used. This is okay
+       # for now as only exclusive open is supported. After generic lease
+       # is done, this test suite should be revised. - Jinshan
+
+       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.4.52) ]] ||
+               { skip "Need MDS version at least 2.4.52"; return 0; }
+
+       echo "==== test 1: verify get lease work"
+       $MULTIOP $DIR/$tfile oO_CREAT:O_RDWR:eRE+eU || error "get lease error"
+
+       echo "==== test 2: verify lease can be broken by upcoming open"
+       $MULTIOP $DIR/$tfile oO_RDONLY:eR_E-eUc &
+       local PID=$!
+       sleep 1
+
+       $MULTIOP $DIR/$tfile oO_RDONLY:c
+       kill -USR1 $PID && wait $PID || error "break lease error"
+
+       echo "==== test 3: verify lease can't be granted if an open already exists"
+       $MULTIOP $DIR/$tfile oO_RDONLY:_c &
+       local PID=$!
+       sleep 1
+
+       $MULTIOP $DIR/$tfile oO_RDONLY:eReUc && error "apply lease should fail"
+       kill -USR1 $PID && wait $PID || error "open file error"
+
+       echo "==== test 4: lease can sustain over recovery"
+       $MULTIOP $DIR/$tfile oO_RDONLY:eR_E+eUc &
+       PID=$!
+       sleep 1
+
+       fail mds1
+
+       kill -USR1 $PID && wait $PID || error "lease broken over recovery"
+
+       echo "==== test 5: lease broken can't be regained by replay"
+       $MULTIOP $DIR/$tfile oO_RDONLY:eR_E-eUc &
+       PID=$!
+       sleep 1
+
+       # open file to break lease and then recovery
+       $MULTIOP $DIR/$tfile oO_RDWR:c || error "open file error"
+       fail mds1
+
+       kill -USR1 $PID && wait $PID || error "lease not broken over recovery"
+
+       rm -f $DIR/$tfile
+}
+run_test 208 "Exclusive open"
+
 test_212() {
        size=`date +%s`
        size=$((size % 8192 + 1))
@@ -11175,7 +11231,6 @@ test_229() { # LU-2482, LU-3448
        [ $stripe_count -eq 2 ] || error "stripe count not 2 ($stripe_count)"
        stat $DIR/$tfile || error "failed to stat released file"
 
-       # Truncate should fail.
        $TRUNCATE $DIR/$tfile 200000 &&
                error "truncate of released file should fail"
 
@@ -11187,9 +11242,18 @@ test_229() { # LU-2482, LU-3448
        stripe_count=$($GETSTRIPE -c $DIR/$tfile) || error "getstripe failed"
        [ $stripe_count -eq 2 ] || error "after trunc: ($stripe_count)"
 
+       chown $RUNAS_ID $DIR/$tfile ||
+               error "chown $RUNAS_ID $DIR/$tfile failed"
+
+       chgrp $RUNAS_ID $DIR/$tfile ||
+               error "chgrp $RUNAS_ID $DIR/$tfile failed"
+
+       touch $DIR/$tfile ||
+               error "touch $DIR/$tfile failed"
+
        rm $DIR/$tfile || error "failed to remove released file"
 }
-run_test 229 "getstripe/stat/rm work on released files (stripe count = 2)"
+run_test 229 "getstripe/stat/rm/attr changes work on released files"
 
 test_230a() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return