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!"
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
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
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
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)"
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
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
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
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)"
mount_client $MOUNT || error "(16) Fail to start client!"
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
+ $LCTL set_param fail_loc=0 fail_val=0
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
-
- 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 ""