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 ..
run_test 27F "Client resend delayed layout creation with non-zero size"
test_27G() { #LU-10629
- [ -n "$FILESET" ] && skip "SKIP due to FILESET set" && return
- remote_mds_nodsh && skip "remote MDS with nodsh" && return
+ [ $MDS1_VERSION -lt $(version_code 2.11.51) ] &&
+ skip "Need MDS version at least 2.11.51"
+ [ -n "$FILESET" ] && skip "SKIP due to FILESET set"
+ remote_mds_nodsh && skip "remote MDS with nodsh"
local POOL=${POOL:-testpool}
local ostrange="0 0 1"
skip_env "missing subtest run-llog.sh"
log "$TEST60_HEAD - from kernel mode"
- do_facet mgs "$LCTL set_param debug=warning; $LCTL dk > /dev/null"
+ do_facet mgs "$LCTL dk > /dev/null"
do_facet mgs "bash run-llog.sh" || error "run-llog.sh failed"
do_facet mgs $LCTL dk > $TMP/$tfile
}
run_test 65j "set default striping on root directory (bug 6367)="
-cleaup_65k() {
+cleanup_65k() {
rm -rf $DIR/$tdir
wait_delete_completed
do_facet $SINGLEMDS "lctl set_param -n \
run_test 65m "normal user can't set filesystem default stripe"
test_65n() {
+ [ -n "$FILESET" ] && skip "Not functional for FILESET set"
[[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.12.50) ]] ||
skip "Need MDS version at least 2.12.50"
[[ $PARALLEL != "yes" ]] || skip "skip parallel run"
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
}
test_161d() {
remote_mds_nodsh && skip "remote MDS with nodsh"
+ [ -n "$FILESET" ] && skip "Not functional for FILESET set"
local pid
local fid
mkdir -p $DIR/$tdir
createmany -o $DIR/$tdir/f- 5000
unlinkmany $DIR/$tdir/f- 5000
- [ $MDS1_VERSION -gt $(version_code 2.10.53) ] &&
+ [ $MDS1_VERSION -gt $(version_code 2.10.4) ] &&
do_nodes $list "lctl set_param -n osp.*.force_sync=1"
changes=$(do_nodes $list "lctl get_param -n osp.*MDT*.sync_changes \
osp.*MDT*.sync_in_flight" | calc_sum)
cancel_lru_locks osc
count=$($LCTL get_param -n \
- ldlm.namespaces.$FSNAME-OST0000*osc-f*.lock_unused_count)
+ ldlm.namespaces.$FSNAME-OST0000*osc-[-0-9a-f]*.lock_unused_count)
lockahead_test -d $DIR/$tdir -t $i -f $tfile
rc=$?
fi
new_count=$($LCTL get_param -n \
- ldlm.namespaces.$FSNAME-OST0000*osc-f*.lock_unused_count)
+ ldlm.namespaces.$FSNAME-OST0000*osc-[-0-9a-f]*.lock_unused_count)
difference="$((new_count - count))"
# Test 15 output is divided by 100 to map down to valid return
stop $facet || error "stop MDS failed"
start $facet $(mdsdevname $((mdtidx + 1))) $MDS_MOUNT_OPTS ||
error "start MDS fail"
+ wait_recovery_complete $facet
}
run_test 257 "xattr locks are not lost"
$LFS migrate -E 256K -L mdt -E -1 -c2 $dom ||
error "failed to migrate to the same DoM component"
- [ $($LFS getstripe -c $dom) -eq 2 ] ||
- error "layout was not changed silently"
-
local new_md5=$(md5sum $dom)
- [ "$old_md5" != "$new_md5" ] &&
+ [ "$old_md5" == "$new_md5" ] ||
error "md5sum differ: $old_md5, $new_md5"
- return 0
+
+ [ $($LFS getstripe -c $dom) -eq 2 ] ||
+ error "migrate stripe count bad: $(LFS getstripe -c $dom) != 2"
}
run_test 272a "DoM migration: new layout with the same DOM component"
remote_mds_nodsh && skip "remote MDS with nodsh"
local old_iused=$($LFS df -i | grep OST0000 | awk '{ print $3 }')
+ local mdts=$(comma_list $(mdts_nodes))
mkdir -p $DIR/$tdir
$LFS setstripe -i 0 -c 1 $DIR/$tdir
# statfs data is not real time, let's just calculate it
old_iused=$((old_iused + 1000))
- local count=$(do_facet $SINGLEMDS "lctl get_param -n \
+ local count=$(do_facet $SINGLEMDS "$LCTL get_param -n \
osp.*OST0000*MDT0000.create_count")
- local max_count=$(do_facet $SINGLEMDS "lctl get_param -n \
+ local max_count=$(do_facet $SINGLEMDS "$LCTL get_param -n \
osp.*OST0000*MDT0000.max_create_count")
- for idx in $(seq $MDSCOUNT); do
- do_facet mds$idx "lctl set_param -n \
- osp.*OST0000*MDT000?.max_create_count=0"
- done
+ do_nodes $mdts "$LCTL set_param -n osp.*OST0000*.max_create_count=0"
$LFS setstripe -i 0 $DIR/$tdir/$tfile || error "setstripe failed"
local index=$($LFS getstripe -i $DIR/$tdir/$tfile)
unlinkmany $DIR/$tdir/$tfile. 1000
- for idx in $(seq $MDSCOUNT); do
- do_facet mds$idx "lctl set_param -n \
- osp.*OST0000*MDT000?.max_create_count=$max_count"
- do_facet mds$idx "lctl set_param -n \
- osp.*OST0000*MDT000?.create_count=$count"
- done
+ do_nodes $mdts "$LCTL set_param -n \
+ osp.*OST0000*.max_create_count=$max_count"
+ [ $MDS1_VERSION -lt $(version_code 2.12.51) ] &&
+ do_nodes $mdts "$LCTL set_param -n \
+ osp.*OST0000*.create_count=$count"
+ do_nodes $mdts "$LCTL get_param osp.*OST0000*.create_count" |
+ grep "=0" && error "create_count is zero"
local new_iused
for i in $(seq 120); do
run_test 316 "lfs mv"
test_317() {
+ [ $MDS1_VERSION -lt $(version_code 2.11.53) ] &&
+ skip "Need MDS version at least 2.11.53"
local trunc_sz
local grant_blk_size
run_test 404 "validate manual {de}activated works properly for OSPs"
test_405() {
+ [ -n "$FILESET" ] && skip "Not functional for FILESET set"
[ $MDS1_VERSION -lt $(version_code 2.6.92) -o \
[ $CLIENT_VERSION -lt $(version_code 2.6.99) ] &&
skip "Layout swap lock is not supported"
local inodes
local df_out
local lfs_df_out
+ local tries=100
+ local count=0
+ local passed=false
# blocks or inodes
[ "$1" == "blocks" ] && inodes= || inodes="-i"
- # read the lines of interest
- df_out=($(df $inodes $dir | tail -n +2)) ||
- error "df $inodes $dir | tail -n +2 failed"
- lfs_df_out=($($LFS df $inodes $dir | grep filesystem_summary:)) ||
- error "lfs df $inodes $dir | grep filesystem_summary: failed"
-
- # skip the first substrings of each command output as they are different
- # <NID>:/<fsname for df, filesystem_summary: for lfs df
- df_out=(${df_out[@]:1})
- lfs_df_out=(${lfs_df_out[@]:1})
-
- # compare the two outputs
- for i in {0..4}; do
- [ "${df_out[i]}" != "${lfs_df_out[i]}" ] &&
- error "df and lfs df output mismatch:" \
- "df${inodes}: ${df_out[*]}," \
- "lfs df${inodes}: ${lfs_df_out[*]}"
+ while (( count < tries )); do
+ cancel_lru_locks
+ sync; sleep 0.2
+
+ # read the lines of interest
+ df_out=($(df $inodes $dir | tail -n +2)) ||
+ error "df $inodes $dir | tail -n +2 failed"
+ lfs_df_out=($($LFS df $inodes $dir | grep summary:)) ||
+ error "lfs df $inodes $dir | grep summary: failed"
+
+ # skip first substrings of each output as they are different
+ # <NID>:/<fsname for df, filesystem_summary: for lfs df
+ df_out=(${df_out[@]:1})
+ lfs_df_out=(${lfs_df_out[@]:1})
+
+ # compare the two outputs
+ passed=true
+
+ for i in {0..4}; do
+ [ "${df_out[i]}" != "${lfs_df_out[i]}" ] && passed=false
+ done
+ $passed && break
done
+
+ $passed || error "df and lfs df $1 output mismatch: " \
+ "df ${inodes}: ${df_out[*]}, " \
+ "lfs df ${inodes}: ${lfs_df_out[*]}"
}
test_418() {
+ [ $PARALLEL == "yes" ] && skip "skip parallel run"
+
local dir=$DIR/$tdir
local numfiles=$((RANDOM % 4096 + 2))
local numblocks=$((RANDOM % 256 + 1))
echo "Creating a single file and testing"
createmany -o $dir/$tfile- 1 &>/dev/null ||
error "creating 1 file in $dir failed"
- cancel_lru_locks osc
- sync; sleep 2
check_lfs_df blocks $dir
check_lfs_df inodes $dir
error "dd to $dir/${tfile}-0 failed"
# retest
- cancel_lru_locks osc
- sync; sleep 10
check_lfs_df blocks $dir
check_lfs_df inodes $dir
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"
local save="$TMP/$TESTSUITE-$TESTNAME.parameters"
save_lustre_params client "llite.*.xattr_cache" > $save
lctl set_param llite.*.xattr_cache=0
- stack_trap "restore_lustre_params < $save" EXIT
+ stack_trap "restore_lustre_params < $save; rm -f $save" EXIT
# single-threaded write
echo "Test SOM for single-threaded write"
run_test 806 "Verify Lazy Size on MDS"
test_807() {
+ [ -n "$FILESET" ] && skip "Not functional for FILESET set"
[ $MDS1_VERSION -lt $(version_code 2.11.52) ] &&
skip "Need MDS version at least 2.11.52"
local save="$TMP/$TESTSUITE-$TESTNAME.parameters"
save_lustre_params client "llite.*.xattr_cache" > $save
lctl set_param llite.*.xattr_cache=0
- stack_trap "restore_lustre_params < $save" EXIT
+ stack_trap "restore_lustre_params < $save; rm -f $save" EXIT
rm -rf $DIR/$tdir || error "rm $tdir failed"
mkdir -p $DIR/$tdir || error "mkdir $tdir failed"