test_24x() {
[[ $MDSCOUNT -lt 2 ]] && skip "needs >= 2 MDTs" && return
+
+ [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.56) ]] &&
+ skip "Need MDS version at least 2.7.56" && return
+
[ $PARALLEL == "yes" ] && skip "skip parallel run" && return
local MDTIDX=1
local remote_dir=$DIR/$tdir/remote_dir
proc_dirs=""
for dir in /proc/fs/lustre/ /proc/sys/lnet/ /proc/sys/lustre/ \
- /sys/fs/lustre/ /sys/fs/lnet/ /sys/kernel/debug/lustre/; do
+ /sys/fs/lustre/ /sys/fs/lnet/ /sys/kernel/debug/lnet/ \
+ /sys/kernel/debug/lustre/; do
[[ -d $dir ]] && proc_dirs+=" $dir"
done
find $proc_dirs -exec cat '{}' \; &> /dev/null
# Second verifying readability.
- $LCTL get_param -R &> /dev/null || error "proc file read failed"
+ $LCTL get_param -R '*' &> /dev/null || error "proc file read failed"
# eventually, this can also be replaced with "lctl get_param -R",
# but not until that option is always available on the server
}
run_test 230h "migrate .. and root"
+test_230i() {
+ [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+
+ mkdir -p $DIR/$tdir/migrate_dir
+
+ $LFS migrate -m 1 $DIR/$tdir/migrate_dir/ ||
+ error "migration fails with a tailing slash"
+
+ $LFS migrate -m 0 $DIR/$tdir/migrate_dir// ||
+ error "migration fails with two tailing slashes"
+}
+run_test 230i "lfs migrate -m tolerates trailing slashes"
+
test_231a()
{
# For simplicity this test assumes that max_pages_per_rpc
}
run_test 252 "check lr_reader tool"
+test_256() {
+ local cl_user
+ local cat_sl
+ local mdt_dev
+
+ [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+ remote_mds_nodsh && skip "remote MDS with nodsh" && return
+ [ "$(facet_fstype mds1)" != "ldiskfs" ] &&
+ skip "non-ldiskfs backend" && return
+
+ mdt_dev=$(mdsdevname 1)
+ echo $mdt_dev
+ cl_user=$(do_facet mds1 \
+ "$LCTL get_param -n mdd.$MDT0.changelog_users | grep cl")
+ if [[ -n $cl_user ]]; then
+ skip "active changelog user"
+ return
+ fi
+
+ cl_user=$(do_facet mds1 $LCTL --device $MDT0 changelog_register -n)
+ echo "Registered as changelog user $cl_user"
+
+ rm -rf $DIR/$tdir
+ mkdir -p $DIR/$tdir
+
+ $LFS changelog_clear $MDT0 $cl_user 0
+
+ # change something
+ touch $DIR/$tdir/{1..10}
+
+ # stop the MDT
+ stop mds1 || error "Fail to stop MDT."
+
+ # remount the MDT
+ start mds1 $mdt_dev $MDS_MOUNT_OPTS || error "Fail to start MDT."
+
+ #after mount new plainllog is used
+ touch $DIR/$tdir/{11..19}
+ cat_sl=$(do_facet mds1 \
+ "$DEBUGFS -R \\\"dump changelog_catalog cat.dmp\\\" $mdt_dev; \
+ llog_reader cat.dmp | grep \\\"type=1064553b\\\" | wc -l")
+
+ if (( cat_sl != 2 )); then
+ do_facet mds1 $LCTL --device $MDT0 changelog_deregister $cl_user
+ error "Changelog catalog has wrong number of slots $cat_sl"
+ fi
+
+ $LFS changelog_clear $MDT0 $cl_user 0
+
+ cat_sl=$(do_facet mds1 \
+ "$DEBUGFS -R \\\"dump changelog_catalog cat.dmp\\\" $mdt_dev; \
+ llog_reader cat.dmp | grep \\\"type=1064553b\\\" | wc -l")
+
+ do_facet mds1 $LCTL --device $MDT0 changelog_deregister $cl_user
+
+ if (( cat_sl == 2 )); then
+ error "Empty plain llog was not deleted from changelog catalog"
+ fi
+ if (( cat_sl != 1 )); then
+ error "Active plain llog shouldn\`t be deleted from catalog"
+ fi
+}
+run_test 256 "Check llog delete for empty and not full state"
cleanup_test_300() {
trap 0
#count the number of parameters by "list_param -R"
local params=$($LCTL list_param -R '*' 2>/dev/null | wc -l)
#count the number of parameters by listing proc files
- local procs=$(find -L $proc_dirs -mindepth 1 2>/dev/null | wc -l)
+ local procs=$(find -L $proc_dirs -mindepth 1 -printf '%P\n' 2>/dev/null |
+ sort -u | wc -l)
[ $params -eq $procs ] ||
error "found $params parameters vs. $procs proc files"