Whamcloud - gitweb
LU-9186 tests: fix sanityn test_76 and related code
[fs/lustre-release.git] / lustre / tests / sanity-scrub.sh
index 2000ed8..29ba554 100644 (file)
@@ -128,13 +128,8 @@ scrub_prep() {
        echo "preparing... $(date)"
        for n in $(seq $MDSCOUNT); do
                echo "creating $nfiles files on mds$n"
-               if [ $n -eq 1 ]; then
-                       mkdir $DIR/$tdir/mds$n ||
-                               error "Failed to create directory mds$n"
-               else
-                       $LFS mkdir -i $((n - 1)) $DIR/$tdir/mds$n ||
-                               error "Failed to create remote directory mds$n"
-               fi
+               test_mkdir -i $((n - 1)) $DIR/$tdir/mds$n ||
+                       error "Failed to create directory mds$n"
                cp $LUSTRE/tests/*.sh $DIR/$tdir/mds$n ||
                        error "Failed to copy files to mds$n"
                mkdir -p $DIR/$tdir/mds$n/d_$tfile ||
@@ -148,6 +143,18 @@ scrub_prep() {
        done
        echo "prepared $(date)."
        cleanup_mount $MOUNT > /dev/null || error "Fail to stop client!"
+
+       # sync local transactions on every MDT
+       do_nodes $(comma_list $(mdts_nodes)) \
+               "$LCTL set_param -n osd*.*MDT*.force_sync=1"
+
+       # wait for a while to cancel update logs after transactions committed.
+       sleep 3
+
+       # sync again to guarantee all things done.
+       do_nodes $(comma_list $(mdts_nodes)) \
+               "$LCTL set_param -n osd*.*MDT*.force_sync=1"
+
        for n in $(seq $MDSCOUNT); do
                echo "stop mds$n"
                stop mds$n > /dev/null || error "Fail to stop MDS$n!"
@@ -287,7 +294,7 @@ scrub_backup_restore() {
 
        for n in $(seq $MDSCOUNT); do
                mds_backup_restore mds$n $igif ||
-                       error "(error_id) Backup/restore on mds$n failed"
+                       error "($error_id) Backup/restore on mds$n failed"
        done
 }
 
@@ -466,6 +473,10 @@ test_4b() {
        for n in $(seq $MDSCOUNT); do
                updated0[$n]=$(scrub_status $n |
                               awk '/^prior_updated/ { print $2 }')
+
+               echo "OI scrub on MDS$n status for the 1st time:"
+               do_facet mds$n $LCTL get_param -n \
+                       osd-ldiskfs.$(facet_svc mds$n).oi_scrub
        done
 
        scrub_check_data2 sanity-scrub.sh 9
@@ -478,6 +489,11 @@ test_4b() {
        for n in $(seq $MDSCOUNT); do
                updated1[$n]=$(scrub_status $n |
                               awk '/^prior_updated/ { print $2 }')
+
+               echo "OI scrub on MDS$n status for the 2nd time:"
+               do_facet mds$n $LCTL get_param -n \
+                       osd-ldiskfs.$(facet_svc mds$n).oi_scrub
+
                [ ${updated0[$n]} -lt ${updated1[$n]} ] ||
                        error "(12) Auto trigger full scrub unexpectedly"
        done
@@ -494,6 +510,11 @@ test_4b() {
        for n in $(seq $MDSCOUNT); do
                updated0[$n]=$(scrub_status $n |
                               awk '/^prior_updated/ { print $2 }')
+
+               echo "OI scrub on MDS$n status for the 3rd time:"
+               do_facet mds$n $LCTL get_param -n \
+                       osd-ldiskfs.$(facet_svc mds$n).oi_scrub
+
                [ ${updated0[$n]} -gt ${updated1[$n]} ] ||
                        error "(16) Auto trigger full scrub unexpectedly"
        done
@@ -506,8 +527,13 @@ test_4b() {
        for n in $(seq $MDSCOUNT); do
                updated1[$n]=$(scrub_status $n |
                               awk '/^prior_updated/ { print $2 }')
-               [ ${updated0[$n]} -eq ${updated1[$n]} ] ||
+               [ ${updated0[$n]} -eq ${updated1[$n]} ] || {
+                       echo "OI scrub on MDS$n status for the 4th time:"
+                       do_facet mds$n $LCTL get_param -n \
+                               osd-ldiskfs.$(facet_svc mds$n).oi_scrub
+
                        error "(18) NOT auto trigger full scrub as expected"
+               }
        done
 }
 run_test 4b "Auto trigger OI scrub if bad OI mapping was found (2)"
@@ -532,6 +558,10 @@ test_4c() {
        for n in $(seq $MDSCOUNT); do
                updated0[$n]=$(scrub_status $n |
                               awk '/^prior_updated/ { print $2 }')
+
+               echo "OI scrub on MDS$n status for the 1st time:"
+               do_facet mds$n $LCTL get_param -n \
+                       osd-ldiskfs.$(facet_svc mds$n).oi_scrub
        done
 
        scrub_check_data2 sanity-scrub.sh 9
@@ -544,6 +574,11 @@ test_4c() {
        for n in $(seq $MDSCOUNT); do
                updated1[$n]=$(scrub_status $n |
                               awk '/^prior_updated/ { print $2 }')
+
+               echo "OI scrub on MDS$n status for the 2nd time:"
+               do_facet mds$n $LCTL get_param -n \
+                       osd-ldiskfs.$(facet_svc mds$n).oi_scrub
+
                [ ${updated0[$n]} -lt ${updated1[$n]} ] ||
                        error "(12) Auto trigger full scrub unexpectedly"
        done
@@ -560,6 +595,11 @@ test_4c() {
        for n in $(seq $MDSCOUNT); do
                updated0[$n]=$(scrub_status $n |
                               awk '/^prior_updated/ { print $2 }')
+
+               echo "OI scrub on MDS$n status for the 3rd time:"
+               do_facet mds$n $LCTL get_param -n \
+                       osd-ldiskfs.$(facet_svc mds$n).oi_scrub
+
                [ ${updated0[$n]} -gt ${updated1[$n]} ] ||
                        error "(16) Auto trigger full scrub unexpectedly"
        done
@@ -572,8 +612,13 @@ test_4c() {
        for n in $(seq $MDSCOUNT); do
                updated1[$n]=$(scrub_status $n |
                               awk '/^prior_updated/ { print $2 }')
-               [ ${updated0[$n]} -eq ${updated1[$n]} ] ||
+               [ ${updated0[$n]} -eq ${updated1[$n]} ] || {
+                       echo "OI scrub on MDS$n status for the 4th time:"
+                       do_facet mds$n $LCTL get_param -n \
+                               osd-ldiskfs.$(facet_svc mds$n).oi_scrub
+
                        error "(18) NOT auto trigger full scrub as expected"
+               }
        done
 }
 run_test 4c "Auto trigger OI scrub if bad OI mapping was found (3)"
@@ -590,12 +635,12 @@ test_5() {
        scrub_check_flags 4 recreated,inconsistent
        mount_client $MOUNT || error "(5) Fail to start client!"
        scrub_enable_auto
+       full_scrub_ratio 0
 
        #define OBD_FAIL_OSD_SCRUB_DELAY         0x190
        do_nodes $(comma_list $(mdts_nodes)) \
                $LCTL set_param fail_val=3 fail_loc=0x190
 
-       full_scrub_ratio 0
        scrub_check_data 6
        umount_client $MOUNT || error "(7) Fail to stop client!"
        scrub_check_status 8 scanning
@@ -634,16 +679,24 @@ test_5() {
                $LCTL set_param fail_val=3 fail_loc=0x190
 
        local n
+       declare -a pids
+
        for n in $(seq $MDSCOUNT); do
-               stat $DIR/$tdir/mds$n/${tfile}800 ||
-                       error "(17) Failed to stat mds$n/${tfile}800"
+               stat $DIR/$tdir/mds$n/${tfile}800 &
+               pids[$n]=$!
        done
 
-       scrub_check_status 18 scanning
+       sleep 3
+
+       scrub_check_status 17 scanning
 
        do_nodes $(comma_list $(mdts_nodes)) \
                $LCTL set_param fail_loc=0 fail_val=0
 
+       for n in $(seq $MDSCOUNT); do
+               wait ${pids[$n]} || error "(18) Fail to stat mds$n/${tfile}800"
+       done
+
        scrub_check_status 19 completed
        scrub_check_flags 20 ""
 }
@@ -657,12 +710,12 @@ test_6() {
        scrub_check_flags 4 recreated,inconsistent
        mount_client $MOUNT || error "(5) Fail to start client!"
        scrub_enable_auto
+       full_scrub_ratio 0
 
        #define OBD_FAIL_OSD_SCRUB_DELAY         0x190
        do_nodes $(comma_list $(mdts_nodes)) \
                $LCTL set_param fail_val=2 fail_loc=0x190
 
-       full_scrub_ratio 0
        scrub_check_data 6
 
        # Sleep 5 sec to guarantee at least one object processed by OI scrub
@@ -735,12 +788,12 @@ test_7() {
        scrub_check_flags 4 recreated,inconsistent
        mount_client $MOUNT || error "(5) Fail to start client!"
        scrub_enable_auto
+       full_scrub_ratio 0
 
        #define OBD_FAIL_OSD_SCRUB_DELAY         0x190
        do_nodes $(comma_list $(mdts_nodes)) \
                $LCTL set_param fail_val=3 fail_loc=0x190
 
-       full_scrub_ratio 0
        scrub_check_data 6
 
        local n
@@ -874,12 +927,12 @@ test_10a() {
        scrub_check_flags 4 recreated,inconsistent
        mount_client $MOUNT || error "(5) Fail to start client!"
        scrub_enable_auto
+       full_scrub_ratio 0
 
        #define OBD_FAIL_OSD_SCRUB_DELAY         0x190
        do_nodes $(comma_list $(mdts_nodes)) \
                $LCTL set_param fail_val=1 fail_loc=0x190
 
-       full_scrub_ratio 0
        scrub_check_data 6
        scrub_check_status 7 scanning
        umount_client $MOUNT || error "(8) Fail to stop client!"
@@ -938,7 +991,7 @@ test_11() {
        check_mount_and_prep
 
        for n in $(seq $MDSCOUNT); do
-               $LFS mkdir -i $((n - 1)) $DIR/$tdir/mds$n ||
+               test_mkdir -i $((n - 1)) $DIR/$tdir/mds$n ||
                        error "(1) Fail to mkdir $DIR/$tdir/mds$n"
 
                createmany -o $DIR/$tdir/mds$n/f $CREATED ||