X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Ftests%2Fsanity.sh;h=58f74627b1c8621eae32e8225118fff6062e9283;hp=8306005ef7414610e646b18e0dd65a5d5bde6c51;hb=ae1404feefc1572fdafed938a3fc18131d675678;hpb=06588e4a22b0ff037eafa1eee5e22521b1626904 diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index 8306005..58f7462 100755 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -77,8 +77,8 @@ if (( $LINUX_VERSION_CODE >= $(version_code 4.18.0) && ALWAYS_EXCEPT+=" 411" fi -# 5 12 8 12 (min)" -[ "$SLOW" = "no" ] && EXCEPT_SLOW="27m 64b 68 71 115 135 136 300o" +# 5 12 8 12 (min)" +[ "$SLOW" = "no" ] && EXCEPT_SLOW="27m 60i 64b 68 71 115 135 136 300o" if [ "$mds1_FSTYPE" = "zfs" ]; then # bug number for skipped test: @@ -3321,6 +3321,7 @@ run_test 27P "basic ops on foreign dir of foreign_symlink type" test_27Q() { rm -f $TMP/$tfile $TMP/$tfile.loop $TMP/$tfile.none $TMP/$tfile.broken + stack_trap "rm -f $TMP/$tfile*" test_mkdir $DIR/$tdir-1 test_mkdir $DIR/$tdir-2 @@ -8267,6 +8268,34 @@ test_60h() { } run_test 60h "striped directory with missing stripes can be accessed" +function t60i_load() { + mkdir $DIR/$tdir + #define OBD_FAIL_LLOG_PAUSE_AFTER_PAD 0x131c + $LCTL set_param fail_loc=0x131c fail_val=1 + for ((i=0; i<5000; i++)); do + touch $DIR/$tdir/f$i + done +} + +test_60i() { + changelog_register || error "changelog_register failed" + local cl_user="${CL_USERS[$SINGLEMDS]%% *}" + changelog_users $SINGLEMDS | grep -q $cl_user || + error "User $cl_user not found in changelog_users" + changelog_chmask "ALL" + t60i_load & + local PID=$! + for((i=0; i<100; i++)); do + changelog_dump >/dev/null || + error "can't read changelog" + done + kill $PID + wait $PID + changelog_deregister || error "changelog_deregister failed" + $LCTL set_param fail_loc=0 +} +run_test 60i "llog: new record vs reader race" + test_61a() { [ $PARALLEL == "yes" ] && skip "skip parallel run" @@ -8820,8 +8849,7 @@ test_65n() { which getfattr > /dev/null 2>&1 || skip_env "no getfattr command" which setfattr > /dev/null 2>&1 || skip_env "no setfattr command" - local root_layout=$(save_layout $MOUNT) - stack_trap "restore_layout $MOUNT $root_layout" EXIT + save_layout_restore_at_exit $MOUNT # new subdirectory under root directory should not inherit # the default layout from root @@ -16082,6 +16110,56 @@ test_160m() { } run_test 160m "Changelog clear race" +test_160n() { + remote_mds_nodsh && skip "remote MDS with nodsh" && return + [[ $MDS1_VERSION -ge $(version_code 2.14.51) ]] || + skip "Need MDS version at least 2.14.51" + local cl_users + local cl_user1 + local cl_user2 + local pid1 + local first_rec + local last_rec=0 + + # Create a user + changelog_register || error "first changelog_register failed" + + cl_users=(${CL_USERS[mds1]}) + cl_user1="${cl_users[0]}" + + # generate some changelog records to accumulate on MDT0 + test_mkdir -i0 -c1 $DIR/$tdir || error "test_mkdir $tdir failed" + first_rec=$(changelog_users $SINGLEMDS | + awk '/^current.index:/ { print $NF }') + while (( last_rec < (( first_rec + 65000)) )); do + createmany -m $DIR/$tdir/$tfile 10000 || + error "create $DIR/$tdir/$tfile failed" + + for i in $(seq 0 10000); do + mrename $DIR/$tdir/$tfile$i $DIR/$tdir/$tfile-new$i \ + > /dev/null + done + + unlinkmany $DIR/$tdir/$tfile-new 10000 || + error "unlinkmany failed unlink" + last_rec=$(changelog_users $SINGLEMDS | + awk '/^current.index:/ { print $NF }') + echo last record $last_rec + (( last_rec == 0 )) && error "no changelog found" + done + +#define OBD_FAIL_MDS_CHANGELOG_DEL 0x16c + do_facet mds1 $LCTL set_param fail_loc=0x8000016c fail_val=0 + + __changelog_clear mds1 $cl_user1 0 & + pid1=$! + sleep 2 + __changelog_clear mds1 $cl_user1 0 || + error "fail to cancel record for $cl_user1" + wait $pid1 + [[ $? -eq 0 ]] || error "fail to cancel record for $cl_user2" +} +run_test 160n "Changelog destroy race" test_161a() { [ $PARALLEL == "yes" ] && skip "skip parallel run"