Whamcloud - gitweb
LU-7782 scrub: handle slave obj of striped directory
[fs/lustre-release.git] / lustre / tests / sanity-scrub.sh
index 8e91ad4..a137f87 100644 (file)
@@ -7,8 +7,7 @@
 set -e
 
 ONLY=${ONLY:-"$*"}
-#Bug number for excepting test         6705
-ALWAYS_EXCEPT="$SANITY_SCRUB_EXCEPT    1c 5 10"
+ALWAYS_EXCEPT="$SANITY_SCRUB_EXCEPT"
 
 [ "$SLOW" = "no" ] && EXCEPT_SLOW=""
 # UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
@@ -129,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 ||
@@ -288,7 +282,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
 }
 
@@ -409,7 +403,7 @@ test_3() {
        echo "starting MDTs with OI scrub disabled"
        scrub_start_mds 2 "$MOUNT_OPTS_NOSCRUB"
        scrub_check_status 3 init
-       scrub_check_flags 4 inconsistent
+       scrub_check_flags 4 recreated,inconsistent
 }
 #run_test 3 "Do not trigger OI scrub when MDT mounts if 'noscrub' specified"
 
@@ -418,7 +412,7 @@ test_4a() {
        scrub_backup_restore 1
        echo "starting MDTs with OI scrub disabled"
        scrub_start_mds 2 "$MOUNT_OPTS_NOSCRUB"
-       scrub_check_flags 4 inconsistent
+       scrub_check_flags 4 recreated,inconsistent
        mount_client $MOUNT || error "(5) Fail to start client!"
        scrub_enable_auto
        full_scrub_ratio 0
@@ -431,7 +425,7 @@ test_4a() {
        local -a updated0
        for n in $(seq $MDSCOUNT); do
                updated0[$n]=$(scrub_status $n |
-                              awk '/^sf_items_updated_prior/ { print $2 }')
+                              awk '/^prior_updated/ { print $2 }')
        done
 
        scrub_check_data2 sanity-scrub.sh 9
@@ -440,7 +434,7 @@ test_4a() {
        local -a updated1
        for n in $(seq $MDSCOUNT); do
                updated1[$n]=$(scrub_status $n |
-                              awk '/^sf_items_updated_prior/ { print $2 }')
+                              awk '/^prior_updated/ { print $2 }')
                [ ${updated0[$n]} -eq ${updated1[$n]} ] ||
                        error "(10) NOT auto trigger full scrub as expected"
        done
@@ -452,7 +446,7 @@ test_4b() {
        scrub_backup_restore 1
        echo "starting MDTs with OI scrub disabled"
        scrub_start_mds 2 "$MOUNT_OPTS_NOSCRUB"
-       scrub_check_flags 4 inconsistent
+       scrub_check_flags 4 recreated,inconsistent
        mount_client $MOUNT || error "(5) Fail to start client!"
        scrub_enable_auto
        full_scrub_ratio 10
@@ -466,7 +460,11 @@ test_4b() {
        local -a updated0
        for n in $(seq $MDSCOUNT); do
                updated0[$n]=$(scrub_status $n |
-                              awk '/^sf_items_updated_prior/ { print $2 }')
+                              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,7 +476,12 @@ test_4b() {
        local -a updated1
        for n in $(seq $MDSCOUNT); do
                updated1[$n]=$(scrub_status $n |
-                              awk '/^sf_items_updated_prior/ { print $2 }')
+                              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,7 +497,12 @@ test_4b() {
 
        for n in $(seq $MDSCOUNT); do
                updated0[$n]=$(scrub_status $n |
-                              awk '/^sf_items_updated_prior/ { print $2 }')
+                              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,9 +514,14 @@ test_4b() {
 
        for n in $(seq $MDSCOUNT); do
                updated1[$n]=$(scrub_status $n |
-                              awk '/^sf_items_updated_prior/ { print $2 }')
-               [ ${updated0[$n]} -eq ${updated1[$n]} ] ||
+                              awk '/^prior_updated/ { print $2 }')
+               [ ${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)"
@@ -518,7 +531,7 @@ test_4c() {
        scrub_backup_restore 1
        echo "starting MDTs with OI scrub disabled"
        scrub_start_mds 2 "$MOUNT_OPTS_NOSCRUB"
-       scrub_check_flags 4 inconsistent
+       scrub_check_flags 4 recreated,inconsistent
        mount_client $MOUNT || error "(5) Fail to start client!"
        scrub_enable_auto
        full_scrub_ratio 2
@@ -532,7 +545,11 @@ test_4c() {
        local -a updated0
        for n in $(seq $MDSCOUNT); do
                updated0[$n]=$(scrub_status $n |
-                              awk '/^sf_items_updated_prior/ { print $2 }')
+                              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,7 +561,12 @@ test_4c() {
        local -a updated1
        for n in $(seq $MDSCOUNT); do
                updated1[$n]=$(scrub_status $n |
-                              awk '/^sf_items_updated_prior/ { print $2 }')
+                              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,7 +582,12 @@ test_4c() {
 
        for n in $(seq $MDSCOUNT); do
                updated0[$n]=$(scrub_status $n |
-                              awk '/^sf_items_updated_prior/ { print $2 }')
+                              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,9 +599,14 @@ test_4c() {
 
        for n in $(seq $MDSCOUNT); do
                updated1[$n]=$(scrub_status $n |
-                              awk '/^sf_items_updated_prior/ { print $2 }')
-               [ ${updated0[$n]} -eq ${updated1[$n]} ] ||
+                              awk '/^prior_updated/ { print $2 }')
+               [ ${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)"
@@ -588,15 +620,15 @@ test_5() {
        echo "starting MDTs with OI scrub disabled (1)"
        scrub_start_mds 2 "$MOUNT_OPTS_NOSCRUB"
        scrub_check_status 3 init
-       scrub_check_flags 4 inconsistent
+       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
@@ -655,15 +687,15 @@ test_6() {
        scrub_backup_restore 1
        echo "starting MDTs with OI scrub disabled"
        scrub_start_mds 2 "$MOUNT_OPTS_NOSCRUB"
-       scrub_check_flags 4 inconsistent
+       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
@@ -733,15 +765,15 @@ test_7() {
        scrub_backup_restore 1
        echo "starting MDTs with OI scrub disabled"
        scrub_start_mds 2 "$MOUNT_OPTS_NOSCRUB"
-       scrub_check_flags 4 inconsistent
+       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
@@ -751,7 +783,7 @@ test_7() {
        done
 
        scrub_check_status 8 scanning
-       scrub_check_flags 9 inconsistent,auto
+       scrub_check_flags 9 recreated,inconsistent,auto
 
        do_nodes $(comma_list $(mdts_nodes)) \
                $LCTL set_param fail_loc=0 fail_val=0
@@ -766,7 +798,7 @@ test_8() {
        scrub_backup_restore 1
        echo "starting MDTs with OI scrub disabled"
        scrub_start_mds 2 "$MOUNT_OPTS_NOSCRUB"
-       scrub_check_flags 4 inconsistent
+       scrub_check_flags 4 recreated,inconsistent
 
        #define OBD_FAIL_OSD_SCRUB_DELAY         0x190
        do_nodes $(comma_list $(mdts_nodes)) \
@@ -798,7 +830,7 @@ test_9() {
 
        echo "starting MDTs with OI scrub disabled"
        scrub_start_mds 2 "$MOUNT_OPTS_NOSCRUB"
-       scrub_check_flags 4 inconsistent
+       scrub_check_flags 4 recreated,inconsistent
 
        local BASE_SPEED1=100
        local RUN_TIME1=10
@@ -872,15 +904,15 @@ test_10a() {
        scrub_backup_restore 1
        echo "starting mds$n with OI scrub disabled (1)"
        scrub_start_mds 2 "$MOUNT_OPTS_NOSCRUB"
-       scrub_check_flags 4 inconsistent
+       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!"
@@ -907,7 +939,7 @@ test_10b() {
        scrub_backup_restore 1
        echo "starting MDTs with OI scrub disabled"
        scrub_start_mds 2 "$MOUNT_OPTS_NOSCRUB"
-       scrub_check_flags 4 inconsistent
+       scrub_check_flags 4 recreated,inconsistent
 
        #define OBD_FAIL_OSD_SCRUB_DELAY         0x190
        do_nodes $(comma_list $(mdts_nodes)) \
@@ -939,7 +971,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 ||
@@ -1088,15 +1120,13 @@ test_14() {
 run_test 14 "OI scrub can repair objects under lost+found"
 
 test_15() {
-       # skip test_15 for LU-4182
-       [ $MDSCOUNT -ge 2 ] && skip "skip now for >= 2 MDTs" && return
        local server_version=$(lustre_version_code $SINGLEMDS)
        scrub_prep 20
        scrub_backup_restore 1
        echo "starting MDTs with OI scrub disabled"
        scrub_start_mds 2 "$MOUNT_OPTS_NOSCRUB"
        scrub_check_status 3 init
-       scrub_check_flags 4 inconsistent
+       scrub_check_flags 4 recreated,inconsistent
 
        # run under dryrun mode
        if [ $server_version -lt $(version_code 2.5.58) ]; then
@@ -1105,7 +1135,7 @@ test_15() {
                scrub_start 5 --dryrun
        fi
        scrub_check_status 6 completed
-       scrub_check_flags 7 inconsistent
+       scrub_check_flags 7 recreated,inconsistent
        scrub_check_params 8 dryrun
        scrub_check_repaired 9 20
 
@@ -1116,7 +1146,7 @@ test_15() {
                scrub_start 10 --dryrun
        fi
        scrub_check_status 11 completed
-       scrub_check_flags 12 inconsistent
+       scrub_check_flags 12 recreated,inconsistent
        scrub_check_params 13 dryrun
        scrub_check_repaired 14 20