Whamcloud - gitweb
LU-7151 tests: fix sanity test_205 on SLES12
[fs/lustre-release.git] / lustre / tests / sanity.sh
index 7185c99..61d6591 100755 (executable)
@@ -1081,6 +1081,10 @@ run_test 24w "Reading a file larger than 4Gb"
 
 test_24x() {
        [[ $MDSCOUNT -lt 2 ]] && skip "needs >= 2 MDTs" && return
+
+       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.56) ]] &&
+               skip "Need MDS version at least 2.7.56" && return
+
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
        local MDTIDX=1
        local remote_dir=$DIR/$tdir/remote_dir
@@ -8725,7 +8729,7 @@ test_129() {
        has_warning=0
 
        rm -rf $DIR/$tdir
-       test_mkdir -p $DIR/$tdir
+       mkdir -p $DIR/$tdir
 
        # block size of mds1
        local MDT_DEV=$(mdsdevname ${SINGLEMDS//mds/})
@@ -8734,9 +8738,6 @@ test_129() {
        set_dir_limits $MAX $MAX
        local I=$(stat -c%s "$DIR/$tdir")
        local J=0
-       local STRIPE_COUNT=1
-       [[ $MDSCOUNT -ge 2 ]] && STRIPE_COUNT=$($LFS getdirstripe -c $DIR/$tdir)
-       MAX=$((MAX*STRIPE_COUNT))
        while [[ $I -le $MAX ]]; do
                $MULTIOP $DIR/$tdir/$J Oc
                rc=$?
@@ -8750,8 +8751,9 @@ test_129() {
                if [ $rc -eq $EFBIG -o $rc -eq $ENOSPC ]; then
                        set_dir_limits 0 0
                        echo "return code $rc received as expected"
-                       multiop $DIR/$tdir/$J Oc ||
-                               error_exit "multiop failed w/o dir size limit"
+
+                       createmany -o $DIR/$tdir/$J_file_ 1000 ||
+                               error_exit "create failed w/o dir size limit"
 
                        check_mds_dmesg '"has reached"' ||
                                error_exit "has reached message should be output"
@@ -9425,7 +9427,8 @@ run_test 133e "Verifying OST {read,write}_bytes nid stats ================="
 
 proc_dirs=""
 for dir in /proc/fs/lustre/ /proc/sys/lnet/ /proc/sys/lustre/ \
-          /sys/fs/lustre/ /sys/fs/lnet/ /sys/kernel/debug/lustre/; do
+          /sys/fs/lustre/ /sys/fs/lnet/ /sys/kernel/debug/lnet/ \
+          /sys/kernel/debug/lustre/; do
        [[ -d $dir ]] && proc_dirs+=" $dir"
 done
 
@@ -9436,7 +9439,7 @@ test_133f() {
        find $proc_dirs -exec cat '{}' \; &> /dev/null
 
        # Second verifying readability.
-       $LCTL get_param -R &> /dev/null || error "proc file read failed"
+       $LCTL get_param -R '*' &> /dev/null || error "proc file read failed"
 
        # eventually, this can also be replaced with "lctl get_param -R",
        # but not until that option is always available on the server
@@ -11788,6 +11791,7 @@ test_205() { # Job stats
        cmd="dd if=/dev/zero of=$DIR/$tfile bs=1M count=1 oflag=sync"
        verify_jobstats "$cmd" "ost1"
        # read
+       cancel_lru_locks osc
        cmd="dd if=$DIR/$tfile of=/dev/null bs=1M count=1 iflag=direct"
        verify_jobstats "$cmd" "ost1"
        # truncate
@@ -13098,6 +13102,20 @@ test_230h() {
 }
 run_test 230h "migrate .. and root"
 
+test_230i() {
+       [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+       [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+
+       mkdir -p $DIR/$tdir/migrate_dir
+
+       $LFS migrate -m 1 $DIR/$tdir/migrate_dir/ ||
+               error "migration fails with a tailing slash"
+
+       $LFS migrate -m 0 $DIR/$tdir/migrate_dir// ||
+               error "migration fails with two tailing slashes"
+}
+run_test 230i "lfs migrate -m tolerates trailing slashes"
+
 test_231a()
 {
        # For simplicity this test assumes that max_pages_per_rpc
@@ -13543,6 +13561,69 @@ test_252() {
 }
 run_test 252 "check lr_reader tool"
 
+test_256() {
+       local cl_user
+       local cat_sl
+       local mdt_dev
+
+       [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+       remote_mds_nodsh && skip "remote MDS with nodsh" && return
+       [ "$(facet_fstype mds1)" != "ldiskfs" ] &&
+               skip "non-ldiskfs backend" && return
+
+       mdt_dev=$(mdsdevname 1)
+       echo $mdt_dev
+       cl_user=$(do_facet mds1 \
+       "$LCTL get_param -n mdd.$MDT0.changelog_users | grep cl")
+       if [[ -n $cl_user ]]; then
+               skip "active changelog user"
+               return
+       fi
+
+       cl_user=$(do_facet mds1 $LCTL --device $MDT0 changelog_register -n)
+       echo "Registered as changelog user $cl_user"
+
+       rm -rf $DIR/$tdir
+       mkdir -p $DIR/$tdir
+
+       $LFS changelog_clear $MDT0 $cl_user 0
+
+       # change something
+       touch $DIR/$tdir/{1..10}
+
+       # stop the MDT
+       stop mds1 || error "Fail to stop MDT."
+
+       # remount the MDT
+       start mds1 $mdt_dev $MDS_MOUNT_OPTS || error "Fail to start MDT."
+
+       #after mount new plainllog is used
+       touch $DIR/$tdir/{11..19}
+       cat_sl=$(do_facet mds1 \
+       "$DEBUGFS -R \\\"dump changelog_catalog cat.dmp\\\" $mdt_dev; \
+        llog_reader cat.dmp | grep \\\"type=1064553b\\\" | wc -l")
+
+       if (( cat_sl != 2 )); then
+               do_facet mds1 $LCTL --device $MDT0 changelog_deregister $cl_user
+               error "Changelog catalog has wrong number of slots $cat_sl"
+       fi
+
+       $LFS changelog_clear $MDT0 $cl_user 0
+
+       cat_sl=$(do_facet mds1 \
+       "$DEBUGFS -R \\\"dump changelog_catalog cat.dmp\\\" $mdt_dev; \
+        llog_reader cat.dmp | grep \\\"type=1064553b\\\" | wc -l")
+
+       do_facet mds1 $LCTL --device $MDT0 changelog_deregister $cl_user
+
+       if (( cat_sl == 2 )); then
+               error "Empty plain llog was not deleted from changelog catalog"
+       fi
+       if (( cat_sl != 1 )); then
+               error "Active plain llog shouldn\`t be deleted from catalog"
+       fi
+}
+run_test 256 "Check llog delete for empty and not full state"
 
 cleanup_test_300() {
        trap 0
@@ -14158,6 +14239,26 @@ test_300p() {
 }
 run_test 300p "create striped directory without space"
 
+test_300q() {
+       [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+       [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+
+       local fd=$(free_fd)
+       local cmd="exec $fd<$tdir"
+       cd $DIR
+       $LFS mkdir -c $MDSCOUNT $tdir || error "create $tdir fails"
+       eval $cmd
+       cmd="exec $fd<&-"
+       trap "eval $cmd" EXIT
+       cd $tdir || error "cd $tdir fails"
+       rmdir  ../$tdir || error "rmdir $tdir fails"
+       mkdir local_dir && error "create dir succeeds"
+       $LFS setdirstripe -i1 remote_dir && error "create remote dir succeeds"
+       eval $cmd
+       return 0
+}
+run_test 300q "create remote directory under orphan directory"
+
 prepare_remote_file() {
        mkdir $DIR/$tdir/src_dir ||
                error "create remote source failed"
@@ -14289,16 +14390,42 @@ test_400b() { # LU-1606, LU-5011
 }
 run_test 400b "packaged headers can be compiled"
 
-test_401() { #LU-7437
+test_401a() { #LU-7437
        #count the number of parameters by "list_param -R"
        local params=$($LCTL list_param -R '*' 2>/dev/null | wc -l)
        #count the number of parameters by listing proc files
-       local procs=$(find -L $proc_dirs -mindepth 1 2>/dev/null | wc -l)
+       local procs=$(find -L $proc_dirs -mindepth 1 -printf '%P\n' 2>/dev/null|
+                     sort -u | wc -l)
+
+       [ $params -eq $procs ] ||
+               error "found $params parameters vs. $procs proc files"
+
+       # test the list_param -D option only returns directories
+       params=$($LCTL list_param -R -D '*' 2>/dev/null | wc -l)
+       #count the number of parameters by listing proc directories
+       procs=$(find -L $proc_dirs -mindepth 1 -type d -printf '%P\n' 2>/dev/null |
+               sort -u | wc -l)
 
        [ $params -eq $procs ] ||
                error "found $params parameters vs. $procs proc files"
 }
-run_test 401 "Verify if 'lctl list_param -R' can list parameters recursively"
+run_test 401a "Verify if 'lctl list_param -R' can list parameters recursively"
+
+test_401b() {
+       local save=$($LCTL get_param -n jobid_var)
+       local tmp=testing
+
+       $LCTL set_param foo=bar jobid_var=$tmp bar=baz &&
+               error "no error returned when setting bad parameters"
+
+       local jobid_new=$($LCTL get_param -n foe jobid_var baz)
+       [[ "$jobid_new" == "$tmp" ]] || error "jobid tmp $jobid_new != $tmp"
+
+       $LCTL set_param -n fog=bam jobid_var=$save bat=fog
+       local jobid_old=$($LCTL get_param -n foe jobid_var bag)
+       [[ "$jobid_old" == "$save" ]] || error "jobid new $jobid_old != $save"
+}
+run_test 401b "Verify 'lctl {get,set}_param' continue after error"
 
 test_402() {
        $LFS setdirstripe -i 0 $DIR/$tdir || error "setdirstripe -i 0 failed"