set -e
ONLY=${ONLY:-"$*"}
-# bug number for skipped test: LU-9693 LU-6493 LU-9693 LU-11058
-ALWAYS_EXCEPT="$SANITY_EXCEPT 42a 42b 42c 77k"
+# bug number for skipped test: LU-9693 LU-6493 LU-9693
+ALWAYS_EXCEPT="$SANITY_EXCEPT 42a 42b 42c"
# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
# skipped tests: LU-8411 LU-9096 LU-9054 ..
checksum=$(eval $get_checksum)
[ $checksum -eq $i ] || error "checksum($checksum) != $i"
done
+ # remove persistent param to avoid races with checksum mountopt below
+ do_facet mgs $LCTL set_param -P -d $cksum_param ||
+ error "failed to delete checksum on MGS"
for opt in "checksum" "nochecksum"; do
#remount with mount option
run_test 103a "acl test"
test_103b() {
+ declare -a pids
local U
for U in {0..511}; do
error "lfs setstripe -N2 $DIR/$tfile.m$O '$S' != '$O'"
rm -f $DIR/$tfile.[smp]$0
} &
+ local pid=$!
+
+ # limit the concurrently running threads to 64. LU-11878
+ local idx=$((U % 64))
+ [ -z "${pids[idx]}" ] || wait ${pids[idx]}
+ pids[idx]=$pid
done
wait
}
saved_MDS_MOUNT_OPTS=$MDS_MOUNT_OPTS
saved_OST_MOUNT_OPTS=$OST_MOUNT_OPTS
-cleanup_802() {
+cleanup_802a() {
trap 0
stopall
setupall
}
-test_802() {
+test_802a() {
[[ $(lustre_version_code mds1) -lt $(version_code 2.9.55) ]] ||
[[ $OST1_VERSION -lt $(version_code 2.9.55) ]] &&
cp $LUSTRE/tests/test-framework.sh $DIR/$tdir/ ||
error "(2) Fail to copy"
- trap cleanup_802 EXIT
+ trap cleanup_802a EXIT
# sync by force before remount as readonly
sync; sync_all_data; sleep 3; sync_all_data
diff $LUSTRE/tests/test-framework.sh $DIR/$tdir/test-framework.sh ||
error "(7) Read should succeed under ro mode"
- cleanup_802
+ cleanup_802a
+}
+run_test 802a "simulate readonly device"
+
+test_802b() {
+ [ $PARALLEL == "yes" ] && skip "skip parallel run"
+ remote_mds_nodsh && skip "remote MDS with nodsh"
+
+ do_facet $SINGLEMDS $LCTL get_param mdt.*.readonly ||
+ skip "readonly option not available"
+
+ $LFS mkdir -i 0 -c 1 $DIR/$tdir || error "(1) fail to mkdir"
+
+ cp $LUSTRE/tests/test-framework.sh $DIR/$tdir/ ||
+ error "(2) Fail to copy"
+
+ # write back all cached data before setting MDT to readonly
+ cancel_lru_locks
+ sync_all_data
+
+ do_facet $SINGLEMDS $LCTL set_param mdt.*.readonly=1
+ stack_trap "do_facet $SINGLEMDS $LCTL set_param mdt.*.readonly=0" EXIT
+
+ echo "Modify should be refused"
+ touch $DIR/$tdir/guard && error "(6) Touch should fail under ro mode"
+
+ echo "Read should be allowed"
+ diff $LUSTRE/tests/test-framework.sh $DIR/$tdir/test-framework.sh ||
+ error "(7) Read should succeed under ro mode"
+
+ # disable readonly
+ do_facet $SINGLEMDS $LCTL set_param mdt.*.readonly=0
}
-run_test 802 "simulate readonly device"
+run_test 802b "be able to set MDTs to readonly"
test_803() {
[[ $MDSCOUNT -lt 2 ]] && skip_env "needs >= 2 MDTs"