Whamcloud - gitweb
LU-8066 sysfs: make ping sysfs file read and writable
[fs/lustre-release.git] / lustre / tests / sanity.sh
index 18ad4eb..f785522 100755 (executable)
@@ -23,8 +23,8 @@ fi
 if [[ $(uname -m) = aarch64 ]]; then
        # bug number:    LU-11596 (all below)
        ALWAYS_EXCEPT+=" 42d 42e 63a 63b 64a 64b 64c"
-       # bug number:    LU-11671 LU-11665 LU-11594 LU-11667
-       ALWAYS_EXCEPT+=" 45       101c     103a     317"
+       # bug number:    LU-11671 LU-11665 LU-11594 LU-11667 LU-11729
+       ALWAYS_EXCEPT+=" 45       101c     103a     317      810"
 fi
 
 # Check Grants after these tests
@@ -8630,7 +8630,6 @@ test_104b() {
        [ $RUNAS_ID -eq $UID ] &&
                skip_env "RUNAS_ID = UID = $UID -- skipping"
 
-       chmod 666 /dev/obd
        denied_cnt=$(($($RUNAS $LFS check servers 2>&1 |
                        grep "Permission denied" | wc -l)))
        if [ $denied_cnt -ne 0 ]; then
@@ -13991,7 +13990,7 @@ test_205() { # Job stats
        local old_jobenv=$($LCTL get_param -n jobid_var)
        [ $old_jobenv != $JOBENV ] && jobstats_set $JOBENV
 
-       if [[ $PERM_CMD = *"set_param -P"* ]]; then
+       if [[ $PERM_CMD == *"set_param -P"* ]]; then
                stack_trap "do_facet mgs $PERM_CMD jobid_var=$old_jobenv" EXIT
        else
                stack_trap "do_facet mgs $PERM_CMD \
@@ -15468,6 +15467,68 @@ test_230j() {
 }
 run_test 230j "DoM file data not changed after dir migration"
 
+test_230k() {
+       [ $MDSCOUNT -lt 4 ] && skip "needs >= 4 MDTs"
+       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.56) ] &&
+               skip "Need MDS version at least 2.11.56"
+
+       local total=20
+       local files_on_starting_mdt=0
+
+       $LFS mkdir -i -1 -c 2 $DIR/$tdir || error "mkdir failed"
+       $LFS getdirstripe $DIR/$tdir
+       for i in $(seq $total); do
+               echo $((i*i - i)) > $DIR/$tdir/$tfile.$i || error "write failed"
+               [[ $($LFS getstripe -m $DIR/$tdir/$tfile.$i) -eq 0 ]] &&
+                       files_on_starting_mdt=$((files_on_starting_mdt + 1))
+       done
+
+       echo "$files_on_starting_mdt files on MDT0"
+
+       $LFS migrate -m 1,3 $DIR/$tdir || error "migrate -m 1,3 failed"
+       $LFS getdirstripe $DIR/$tdir
+
+       files_on_starting_mdt=0
+       for i in $(seq $total); do
+               $(echo $((i*i - i)) | cmp $DIR/$tdir/$tfile.$i -) ||
+                       error "file $tfile.$i mismatch after migration"
+               [[ $($LFS getstripe -m $DIR/$tdir/$tfile.$i) -eq 1 ]] &&
+                       files_on_starting_mdt=$((files_on_starting_mdt + 1))
+       done
+
+       echo "$files_on_starting_mdt files on MDT1 after migration"
+       [[ $files_on_starting_mdt -eq $total ]] && error "all files on MDT1"
+
+       $LFS migrate -m 0 -c 2 $DIR/$tdir || error "migrate -m 0 -c 2 failed"
+       $LFS getdirstripe $DIR/$tdir
+
+       files_on_starting_mdt=0
+       for i in $(seq $total); do
+               $(echo $((i*i - i)) | cmp $DIR/$tdir/$tfile.$i -) ||
+                       error "file $tfile.$i mismatch after 2nd migration"
+               [[ $($LFS getstripe -m $DIR/$tdir/$tfile.$i) -eq 0 ]] &&
+                       files_on_starting_mdt=$((files_on_starting_mdt + 1))
+       done
+
+       echo "$files_on_starting_mdt files on MDT0 after 2nd migration"
+       [[ $files_on_starting_mdt -eq $total ]] && error "all files on MDT0"
+
+       true
+}
+run_test 230k "file data not changed after dir migration"
+
+test_230l() {
+       [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
+       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.56) ] &&
+               skip "Need MDS version at least 2.11.56"
+
+       $LFS mkdir -i 0 -c 1 $DIR/$tdir || error "mkdir failed"
+       createmany -o $DIR/$tdir/f___________________________________ 1000 ||
+               error "create files under remote dir failed $i"
+       $LFS migrate -m 1 $DIR/$tdir || error "migrate failed"
+}
+run_test 230l "readdir between MDTs won't crash"
+
 test_231a()
 {
        # For simplicity this test assumes that max_pages_per_rpc
@@ -19573,11 +19634,12 @@ test_803() {
        done
 
        sync; sleep 3
+       wait_delete_completed # ensure old test cleanups are finished
        echo "before create:"
        $LFS df -i $MOUNT
        local before_used=$($LFS df -i | grep MDT0000_UUID | awk '{print $3}')
 
-       for ((i=0; i<10; i++)); do
+       for i in {1..10}; do
                $LFS mkdir -c 1 -i 1 $DIR/$tdir/foo$i ||
                        error "Fail to create $DIR/$tdir/foo$i"
        done
@@ -19587,10 +19649,11 @@ test_803() {
        $LFS df -i $MOUNT
        local after_used=$($LFS df -i | grep MDT0000_UUID | awk '{print $3}')
 
-       [ $after_used -ge $((before_used + 10)) ] ||
+       # allow for an llog to be cleaned up during the test
+       [ $after_used -ge $((before_used + 10 - 1)) ] ||
                error "before ($before_used) + 10 > after ($after_used)"
 
-       for ((i=0; i<10; i++)); do
+       for i in {1..10}; do
                rm -rf $DIR/$tdir/foo$i ||
                        error "Fail to remove $DIR/$tdir/foo$i"
        done
@@ -19599,11 +19662,11 @@ test_803() {
        wait_delete_completed
        echo "after unlink:"
        $LFS df -i $MOUNT
-       before_used=$after_used
        after_used=$($LFS df -i | grep MDT0000_UUID | awk '{print $3}')
 
-       [ $after_used -le $((before_used - 8)) ] ||
-               error "before ($before_used) - 8 < after ($after_used)"
+       # allow for an llog to be created during the test
+       [ $after_used -le $((before_used + 1)) ] ||
+               error "after ($after_used) > before ($before_used) + 1"
 }
 run_test 803 "verify agent object for remote object"
 
@@ -19785,7 +19848,7 @@ test_806() {
        local offset=0
        local i
 
-       echo "Test SOM for single client muti-threaded($num) write"
+       echo "Test SOM for single client multi-threaded($num) write"
        $TRUNCATE $DIR/$tfile 0
        for ((i = 0; i < $num; i++)); do
                $MULTIOP $DIR/$tfile Oz${offset}w${bs}c &
@@ -19814,7 +19877,7 @@ test_806() {
        offset=0
        i=0
 
-       echo "Test SOM for muti-client ($num) writes"
+       echo "Test SOM for multi-client ($num) writes"
        $TRUNCATE $DIR/$tfile 0
        for client in ${CLIENTS//,/ }; do
                do_node $client $MULTIOP $DIR/$tfile Oz${offset}w${bs}c &
@@ -19887,7 +19950,7 @@ test_807() {
        local offset=0
        local i=0
 
-       echo "Test SOM for muti-client ($num) writes"
+       echo "Test SOM for multi-client ($num) writes"
        touch $DIR/$tfile || error "touch $tfile failed"
        $TRUNCATE $DIR/$tfile 0
        for client in ${CLIENTS//,/ }; do
@@ -19944,6 +20007,51 @@ test_808() {
 }
 run_test 808 "Check trusted.som xattr not logged in Changelogs"
 
+check_som_nodata()
+{
+       $LFS getsom $1
+       [[ $? -eq 61 ]] || error "DoM-only file $1 has SOM xattr"
+}
+
+test_809() {
+       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.56) ] &&
+               skip "Need MDS version at least 2.11.56" && return
+
+       $LFS setstripe -E 1M -L mdt $DIR/$tfile ||
+               error "failed to create DoM-only file $DIR/$tfile"
+       touch $DIR/$tfile || error "touch $tfile failed"
+       check_som_nodata $DIR/$tfile
+
+       dd if=/dev/zero of=$DIR/$tfile bs=2048 count=1 ||
+               error "write $tfile failed"
+       check_som_nodata $DIR/$tfile
+
+       $TRUNCATE $DIR/$tfile 1234
+       check_som_nodata $DIR/$tfile
+
+       $TRUNCATE $DIR/$tfile 4097
+       check_som_nodata $DIR/$file
+}
+run_test 809 "Verify no SOM xattr store for DoM-only files"
+
+test_810() {
+       local ORIG
+       local CSUM
+
+       # t10 seem to dislike partial pages
+       lctl set_param osc.*.checksum_type=adler
+       lctl set_param fail_loc=0x411
+       dd if=/dev/urandom of=$DIR/$tfile bs=10240 count=2
+       ORIG=$(md5sum $DIR/$tfile)
+       lctl set_param ldlm.namespaces.*osc*.lru_size=clear
+       CSUM=$(md5sum $DIR/$tfile)
+       set_checksum_type adler
+       if [ "$ORIG" != "$CSUM" ]; then
+               error "$ORIG != $CSUM"
+       fi
+}
+run_test 810 "partial page writes on ZFS (LU-11663)"
+
 #
 # tests that do cleanup/setup should be run at the end
 #