set -e
ONLY=${ONLY:-"$*"}
-ALWAYS_EXCEPT="$SANITY_SCRUB_EXCEPT"
+#Bug number for excepting test 6705
+ALWAYS_EXCEPT="$SANITY_SCRUB_EXCEPT 1c 5 10"
+
[ "$SLOW" = "no" ] && EXCEPT_SLOW=""
# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
}
scrub_enable_auto() {
- local n
-
- for n in $(seq $MDSCOUNT); do
- do_facet mds$n $LCTL set_param -n \
- osd-ldiskfs.$(facet_svc mds$n).auto_scrub 1
- done
+ do_nodes $(comma_list $(mdts_nodes)) $LCTL set_param -n \
+ osd-ldiskfs.*.auto_scrub=1
}
full_scrub_ratio() {
return
local ratio=$1
- local n
- for n in $(seq $MDSCOUNT); do
- do_facet mds$n $LCTL set_param -n \
- osd-ldiskfs.$(facet_svc mds$n).full_scrub_ratio $ratio
- done
+ do_nodes $(comma_list $(mdts_nodes)) $LCTL set_param -n \
+ osd-ldiskfs.*.full_scrub_ratio=$ratio
}
-full_scrub_speed() {
- local speed=$1
- local n
+full_scrub_threshold_rate() {
+ [[ $(lustre_version_code $SINGLEMDS) -le $(version_code 2.6.50) ]] &&
+ return
- for n in $(seq $MDSCOUNT); do
- do_facet mds$n $LCTL set_param -n \
- osd-ldiskfs.$(facet_svc mds$n).full_scrub_speed $speed
- done
+ local rate=$1
+
+ do_nodes $(comma_list $(mdts_nodes)) $LCTL set_param -n \
+ osd-ldiskfs.*.full_scrub_threshold_rate=$rate
}
test_0() {
test_1a() {
scrub_prep 0
echo "start $SINGLEMDS without disabling OI scrub"
- start $SINGLEMDS $MDT_DEVNAME $MOUNT_OPTS_SCRUB > /dev/null ||
- error "(1) Fail to start MDS!"
+ scrub_start_mds 1 "$MOUNT_OPTS_SCRUB"
local FLAGS=$($SHOW_SCRUB | awk '/^flags/ { print $2 }')
[ -z "$FLAGS" ] || error "(3) Expect empty flags, but got '$FLAGS'"
mount_client $MOUNT || error "(5) Fail to start client!"
scrub_enable_auto
full_scrub_ratio 10
- full_scrub_speed 10000
+ full_scrub_threshold_rate 10000
scrub_check_data 6
sleep 3
mount_client $MOUNT || error "(5) Fail to start client!"
scrub_enable_auto
full_scrub_ratio 2
- full_scrub_speed 20
+ full_scrub_threshold_rate 20
scrub_check_data 6
sleep 3
scrub_prep 1000
scrub_backup_restore 1
- echo "starting MDTs with OI scrub disabled"
+ 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
do_nodes $(comma_list $(mdts_nodes)) \
$LCTL set_param fail_loc=0 fail_val=0
- echo "starting MDTs with OI scrub disabled"
+ echo "starting MDTs with OI scrub disabled (2)"
scrub_start_mds 10 "$MOUNT_OPTS_NOSCRUB"
scrub_check_status 11 crashed
scrub_stop_mds 12
test_10a() {
scrub_prep 0
scrub_backup_restore 1
- echo "starting mds$n with OI scrub disabled"
+ echo "starting mds$n with OI scrub disabled (1)"
scrub_start_mds 2 "$MOUNT_OPTS_NOSCRUB"
scrub_check_flags 4 inconsistent
mount_client $MOUNT || error "(5) Fail to start client!"
scrub_check_status 7 scanning
umount_client $MOUNT || error "(8) Fail to stop client!"
scrub_stop_mds 9
- echo "starting MDTs with OI scrub disabled"
+ echo "starting MDTs with OI scrub disabled (2)"
scrub_start_mds 10 "$MOUNT_OPTS_NOSCRUB"
scrub_check_status 11 paused
scrub_stop_mds 12
# OI scrub should skip the new created objects for the first accessing
# notice we're creating a new llog for every OST on every startup
- # new features can make this even less stable, so we only check
- # that the number of skipped files is less than 2x the number of files
- local MAXIMUM=$((CREATED * 2))
+ # new features can make this even less stable, so we only check that
+ # the number of skipped files is more than the number or known created
local MINIMUM=$((CREATED + 1)) # files + directory
for n in $(seq $MDSCOUNT); do
local SKIPPED=$(scrub_status $n | awk '/^noscrub/ { print $2 }')
- [ $SKIPPED -ge $MAXIMUM -o $SKIPPED -lt $MINIMUM ] &&
- error "(5) Expect [ $MINIMUM , $MAXIMUM ) objects" \
+ [ $SKIPPED -lt $MINIMUM ] &&
+ error "(5) Expect at least $MINIMUM objects" \
"skipped on mds$n, but got $SKIPPED"
checked0[$n]=$(scrub_status $n | awk '/^checked/ { print $2 }')
check_mount_and_prep
$SETSTRIPE -c 1 -i 0 $DIR/$tdir
- local count=$(precreated_ost_obj_count 0 0)
-
#define OBD_FAIL_OSD_COMPAT_INVALID_ENTRY 0x195
do_facet ost1 $LCTL set_param fail_loc=0x195
- createmany -o $DIR/$tdir/f $((count + 32))
+ local count=$(precreated_ost_obj_count 0 0)
+ createmany -o $DIR/$tdir/f $((count + 32))
umount_client $MOUNT || error "(1) Fail to stop client!"
stop ost1 || error "(2) Fail to stop ost1"
check_mount_and_prep
$SETSTRIPE -c 1 -i 0 $DIR/$tdir
- local count=$(precreated_ost_obj_count 0 0)
-
#define OBD_FAIL_OSD_COMPAT_NO_ENTRY 0x196
do_facet ost1 $LCTL set_param fail_loc=0x196
+ local count=$(precreated_ost_obj_count 0 0)
+
createmany -o $DIR/$tdir/f $((count + 32))
do_facet ost1 $LCTL set_param fail_loc=0
check_mount_and_prep
$SETSTRIPE -c 1 -i 0 $DIR/$tdir
- local count=$(precreated_ost_obj_count 0 0)
-
#define OBD_FAIL_OSD_COMPAT_NO_ENTRY 0x196
do_facet ost1 $LCTL set_param fail_loc=0x196
+ local count=$(precreated_ost_obj_count 0 0)
+
createmany -o $DIR/$tdir/f $((count + 32))
do_facet ost1 $LCTL set_param fail_loc=0