Patch improves mdsrate tests to work with
striped directories which are created if
MDSRATE_ENABLE_DNE=true.
mdsrate.c is fixed to not fail if --mdtcount
option is used and ndirs=1. Without this fix
mdsrate --mdcount
fails as:
cannot create stripe dir: File exists
when the ranks do system(mkdir_cmd) on the
directory which was already created by the
first executed rank.
Patch sets mdt.*.enable_remote_dir_gid to "-1"
to allow mpiuser to create remote directories.
Patch makes the mdsrate based tests a bit more
verbose: mdsrate create/mknod is called with
--debug option if VERBOSE set to "true".
Test-Parameters: trivial testlist=performance-sanity
Fixes:
f31c60c97328 ("LU-1187 tests: Add mntfmt/mntcount/mdtcount to mdsrate")
Signed-off-by: Elena Gryaznova <elena.gryaznova@hpe.com>
HPE-bug-id: LUS-7262
Reviewed-by: Vladimir Saveliev <vlaidimir.saveliev@hpe.com>
Reviewed-by: Alexander Boyko <alexander.boyko@hpe.com>
Change-Id: Ieb32ad7dfad838fc9124740236889a5fe47cb901
Reviewed-on: https://review.whamcloud.com/35069
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
+MDSRATE_ENABLE_DNE=${MDSRATE_ENABLE_DNE:-false}
+if $MDSRATE_ENABLE_DNE; then
+ test_mkdir $BASEDIR
+ mdtcount_opt="--mdtcount $MDSCOUNT"
+else
+ mkdir $BASEDIR
+fi
+if $VERBOSE; then
+ debug_opt="--debug"
+fi
chmod 0777 $BASEDIR
mdsrate_STRIPEPARAMS=${mdsrate_STRIPEPARAMS:-${fs_STRIPEPARAMS:-"-c -1"}}
setstripe_getstripe $BASEDIR $mdsrate_STRIPEPARAMS
chmod 0777 $BASEDIR
mdsrate_STRIPEPARAMS=${mdsrate_STRIPEPARAMS:-${fs_STRIPEPARAMS:-"-c -1"}}
setstripe_getstripe $BASEDIR $mdsrate_STRIPEPARAMS
-generate_machine_file $NODES_TO_USE $MACHINEFILE || error "can not generate machinefile"
+generate_machine_file $NODES_TO_USE $MACHINEFILE ||
+ error "can not generate machinefile"
+
+p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+save_lustre_params $(get_facets MDS) mdt.*.enable_remote_dir_gid > $p
+do_nodes $(comma_list $(mdts_nodes)) \
+ $LCTL set_param mdt.*.enable_remote_dir_gid=-1
# Make sure we start with a clean slate
rm -f ${LOG}
# Make sure we start with a clean slate
rm -f ${LOG}
log "===== $0 ### 1 NODE CREATE ###"
COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --time ${TIME_PERIOD}
log "===== $0 ### 1 NODE CREATE ###"
COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --time ${TIME_PERIOD}
- --nfiles ${NUM_FILES} --dir ${TESTDIR_SINGLE} --filefmt 'f%%d'"
+ --nfiles ${NUM_FILES} --dir ${TESTDIR_SINGLE} --filefmt 'f%%d'
+ $mdtcount_opt $debug_opt"
echo "+ ${COMMAND}"
mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np 1 ${COMMAND} |
tee ${LOG}
echo "+ ${COMMAND}"
mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np 1 ${COMMAND} |
tee ${LOG}
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate create on single client failed, aborting"
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate create on single client failed, aborting"
+ restore_lustre_params < $p
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR_SINGLE 'f%%d' --ignore
exit 1
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR_SINGLE 'f%%d' --ignore
exit 1
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate create on multiple nodes failed, aborting"
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate create on multiple nodes failed, aborting"
+ restore_lustre_params < $p
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR_MULTI 'f%%d' --ignore
exit 1
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR_MULTI 'f%%d' --ignore
exit 1
+restore_lustre_params < $p
rmdir $BASEDIR || true
rm -f $MACHINEFILE
check_and_cleanup_lustre
rmdir $BASEDIR || true
rm -f $MACHINEFILE
check_and_cleanup_lustre
+MDSRATE_ENABLE_DNE=${MDSRATE_ENABLE_DNE:-false}
+if $MDSRATE_ENABLE_DNE; then
+ test_mkdir $BASEDIR
+ mdtcount_opt="--mdtcount $MDSCOUNT"
+else
+ mkdir $BASEDIR
+fi
+if $VERBOSE; then
+ debug_opt="--debug"
+fi
chmod 0777 $BASEDIR
mdsrate_STRIPEPARAMS=${mdsrate_STRIPEPARAMS:-${fs_STRIPEPARAMS:-"-i 0 -c 1"}}
setstripe_getstripe $BASEDIR $mdsrate_STRIPEPARAMS
chmod 0777 $BASEDIR
mdsrate_STRIPEPARAMS=${mdsrate_STRIPEPARAMS:-${fs_STRIPEPARAMS:-"-i 0 -c 1"}}
setstripe_getstripe $BASEDIR $mdsrate_STRIPEPARAMS
-generate_machine_file $NODES_TO_USE $MACHINEFILE || error "can not generate machinefile"
+generate_machine_file $NODES_TO_USE $MACHINEFILE ||
+ error "can not generate machinefile"
+
+p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+save_lustre_params $(get_facets MDS) mdt.*.enable_remote_dir_gid > $p
+do_nodes $(comma_list $(mdts_nodes)) \
+ $LCTL set_param mdt.*.enable_remote_dir_gid=-1
if [ -n "$NOSINGLE" ]; then
echo "NO Tests on single client."
if [ -n "$NOSINGLE" ]; then
echo "NO Tests on single client."
log "===== $0 ### 1 NODE CREATE ###"
COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --time ${TIME_PERIOD}
log "===== $0 ### 1 NODE CREATE ###"
COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --time ${TIME_PERIOD}
- --nfiles $NUM_FILES --dir ${TESTDIR_SINGLE} --filefmt 'f%%d'"
+ --nfiles $NUM_FILES --dir ${TESTDIR_SINGLE} --filefmt 'f%%d'
+ $mdtcount_opt $debug_opt"
echo "+ ${COMMAND}"
mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np 1 ${COMMAND} |
tee ${LOG}
echo "+ ${COMMAND}"
mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np 1 ${COMMAND} |
tee ${LOG}
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate create on single client failed, aborting"
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate create on single client failed, aborting"
+ restore_lustre_params < $p
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR_SINGLE 'f%%d' --ignore
exit 1
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR_SINGLE 'f%%d' --ignore
exit 1
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate create on multiple nodes failed, aborting"
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate create on multiple nodes failed, aborting"
+ restore_lustre_params < $p
mdsrate_cleanup $((NUM_CLIENTS * THREADS_PER_CLIENT)) \
$MACHINEFILE $NUM_FILES \
$TESTDIR_MULTI 'f%%d' --ignore
mdsrate_cleanup $((NUM_CLIENTS * THREADS_PER_CLIENT)) \
$MACHINEFILE $NUM_FILES \
$TESTDIR_MULTI 'f%%d' --ignore
+restore_lustre_params < $p
rmdir $BASEDIR || true
rm -f $MACHINEFILE
check_and_cleanup_lustre
rmdir $BASEDIR || true
rm -f $MACHINEFILE
check_and_cleanup_lustre
+MDSRATE_ENABLE_DNE=${MDSRATE_ENABLE_DNE:-false}
+if $MDSRATE_ENABLE_DNE; then
+ test_mkdir $BASEDIR
+ mdtcount_opt="--mdtcount $MDSCOUNT"
+else
+ mkdir $BASEDIR
+fi
+if $VERBOSE; then
+ debug_opt="--debug"
+fi
chmod 0777 $BASEDIR
mdsrate_STRIPEPARAMS=${mdsrate_STRIPEPARAMS:-${fs_STRIPEPARAMS:-"-c 1"}}
setstripe_getstripe $BASEDIR $mdsrate_STRIPEPARAMS
chmod 0777 $BASEDIR
mdsrate_STRIPEPARAMS=${mdsrate_STRIPEPARAMS:-${fs_STRIPEPARAMS:-"-c 1"}}
setstripe_getstripe $BASEDIR $mdsrate_STRIPEPARAMS
NUM_FILES=$((IFree / NUM_DIRS))
fi
NUM_FILES=$((IFree / NUM_DIRS))
fi
-generate_machine_file $NODES_TO_USE $MACHINEFILE || error "can not generate machinefile"
+generate_machine_file $NODES_TO_USE $MACHINEFILE ||
+ error "can not generate machinefile"
+
+p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+save_lustre_params $(get_facets MDS) mdt.*.enable_remote_dir_gid > $p
+do_nodes $(comma_list $(mdts_nodes)) \
+ $LCTL set_param mdt.*.enable_remote_dir_gid=-1
DIRfmt="${BASEDIR}/lookup-%d"
DIRfmt="${BASEDIR}/lookup-%d"
log "===== $0 Test preparation: creating ${NUM_DIRS} dirs with ${NUM_FILES} files."
log "===== $0 Test preparation: creating ${NUM_DIRS} dirs with ${NUM_FILES} files."
- COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --mknod
- --ndirs ${NUM_DIRS} --dirfmt '${DIRfmt}'
- --nfiles ${NUM_FILES} --filefmt 'f%%d'"
+ COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --mknod
+ --ndirs ${NUM_DIRS} --dirfmt '${DIRfmt}'
+ --nfiles ${NUM_FILES} --filefmt 'f%%d'
+ $mdtcount_opt $debug_opt"
echo "+" ${COMMAND}
# For files creation we can use -np equal to NUM_DIRS
echo "+" ${COMMAND}
# For files creation we can use -np equal to NUM_DIRS
# No lookup if error occurs on file creation, abort.
if [ ${PIPESTATUS[0]} != 0 ]; then
error_noexit "mdsrate file creation failed, aborting"
# No lookup if error occurs on file creation, abort.
if [ ${PIPESTATUS[0]} != 0 ]; then
error_noexit "mdsrate file creation failed, aborting"
+ restore_lustre_params < $p
mdsrate_cleanup_all
exit 1
fi
mdsrate_cleanup_all
exit 1
fi
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate lookup on single client failed, aborting"
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate lookup on single client failed, aborting"
+ restore_lustre_params < $p
mdsrate_cleanup_all
exit 1
fi
mdsrate_cleanup_all
exit 1
fi
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate lookup on multiple nodes failed, aborting"
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate lookup on multiple nodes failed, aborting"
+ restore_lustre_params < $p
mdsrate_cleanup_all
exit 1
fi
fi
complete $SECONDS
mdsrate_cleanup_all
exit 1
fi
fi
complete $SECONDS
+restore_lustre_params < $p
mdsrate_cleanup_all
rmdir $BASEDIR || true
rm -f $MACHINEFILE
mdsrate_cleanup_all
rmdir $BASEDIR || true
rm -f $MACHINEFILE
+MDSRATE_ENABLE_DNE=${MDSRATE_ENABLE_DNE:-false}
+if $MDSRATE_ENABLE_DNE; then
+ test_mkdir $BASEDIR
+ mdtcount_opt="--mdtcount $MDSCOUNT"
+else
+ mkdir $BASEDIR
+fi
+if $VERBOSE; then
+ debug_opt="--debug"
+fi
chmod 0777 $BASEDIR
mdsrate_STRIPEPARAMS=${mdsrate_STRIPEPARAMS:-${fs_STRIPEPARAMS:-"-c 1"}}
setstripe_getstripe $BASEDIR $mdsrate_STRIPEPARAMS
chmod 0777 $BASEDIR
mdsrate_STRIPEPARAMS=${mdsrate_STRIPEPARAMS:-${fs_STRIPEPARAMS:-"-c 1"}}
setstripe_getstripe $BASEDIR $mdsrate_STRIPEPARAMS
-generate_machine_file $NODES_TO_USE $MACHINEFILE || error "can not generate machinefile"
+generate_machine_file $NODES_TO_USE $MACHINEFILE ||
+ error "can not generate machinefile"
+
+p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+save_lustre_params $(get_facets MDS) mdt.*.enable_remote_dir_gid > $p
+do_nodes $(comma_list $(mdts_nodes)) \
+ $LCTL set_param mdt.*.enable_remote_dir_gid=-1
if [ -n "$NOCREATE" ]; then
echo "NOCREATE=$NOCREATE => no file creation."
if [ -n "$NOCREATE" ]; then
echo "NOCREATE=$NOCREATE => no file creation."
if [ $NUM_CLIENTS -gt 50 ]; then
NUM_THREADS=$NUM_CLIENTS
fi
if [ $NUM_CLIENTS -gt 50 ]; then
NUM_THREADS=$NUM_CLIENTS
fi
- COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --mknod --dir ${TESTDIR}
- --nfiles ${NUM_FILES} --filefmt 'f%%d'"
+ COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --mknod --dir ${TESTDIR}
+ --nfiles ${NUM_FILES} --filefmt 'f%%d'
+ $mdtcount_opt $debug_opt"
echo "+" ${COMMAND}
mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np ${NUM_THREADS} \
${COMMAND} 2>&1
echo "+" ${COMMAND}
mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np ${NUM_THREADS} \
${COMMAND} 2>&1
# No lockup if error occurs on file creation, abort.
if [ ${PIPESTATUS[0]} != 0 ]; then
error_noexit "mdsrate file creation failed, aborting"
# No lockup if error occurs on file creation, abort.
if [ ${PIPESTATUS[0]} != 0 ]; then
error_noexit "mdsrate file creation failed, aborting"
+ restore_lustre_params < $p
mdsrate_cleanup $NUM_THREADS $MACHINEFILE $NUM_FILES \
$TESTDIR 'f%%d' --ignore
exit 1
mdsrate_cleanup $NUM_THREADS $MACHINEFILE $NUM_FILES \
$TESTDIR 'f%%d' --ignore
exit 1
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate lookup on single client failed, aborting"
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate lookup on single client failed, aborting"
+ restore_lustre_params < $p
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR 'f%%d' --ignore
exit 1
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR 'f%%d' --ignore
exit 1
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate lookup on multiple nodes failed, aborting"
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate lookup on multiple nodes failed, aborting"
+ restore_lustre_params < $p
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR 'f%%d' --ignore
exit 1
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR 'f%%d' --ignore
exit 1
+restore_lustre_params < $p
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $TESTDIR 'f%%d'
rmdir $BASEDIR || true
rm -f $MACHINEFILE
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $TESTDIR 'f%%d'
rmdir $BASEDIR || true
rm -f $MACHINEFILE
+MDSRATE_ENABLE_DNE=${MDSRATE_ENABLE_DNE:-false}
+if $MDSRATE_ENABLE_DNE; then
+ test_mkdir $BASEDIR
+ mdtcount_opt="--mdtcount $MDSCOUNT"
+else
+ mkdir $BASEDIR
+fi
+if $VERBOSE; then
+ debug_opt="--debug"
+fi
chmod 0777 $BASEDIR
mdsrate_STRIPEPARAMS=${mdsrate_STRIPEPARAMS:-${fs_STRIPEPARAMS:-"-c -1"}}
setstripe_getstripe $BASEDIR $mdsrate_STRIPEPARAMS
chmod 0777 $BASEDIR
mdsrate_STRIPEPARAMS=${mdsrate_STRIPEPARAMS:-${fs_STRIPEPARAMS:-"-c -1"}}
setstripe_getstripe $BASEDIR $mdsrate_STRIPEPARAMS
-generate_machine_file $NODES_TO_USE $MACHINEFILE || error "can not generate machinefile"
+generate_machine_file $NODES_TO_USE $MACHINEFILE ||
+ error "can not generate machinefile"
+
+p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+save_lustre_params $(get_facets MDS) mdt.*.enable_remote_dir_gid > $p
+do_nodes $(comma_list $(mdts_nodes)) \
+ $LCTL set_param mdt.*.enable_remote_dir_gid=-1
if [ -n "$NOCREATE" ]; then
echo "NOCREATE=$NOCREATE => no file creation."
if [ -n "$NOCREATE" ]; then
echo "NOCREATE=$NOCREATE => no file creation."
log "===== $0 Test preparation: creating ${NUM_FILES} files."
log "===== $0 Test preparation: creating ${NUM_FILES} files."
- COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --dir ${TESTDIR}
- --nfiles ${NUM_FILES} --filefmt 'f%%d'"
- echo "+" ${COMMAND}
+ COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --dir ${TESTDIR}
+ --nfiles ${NUM_FILES} --filefmt 'f%%d'
+ $mdtcount_opt $debug_opt"
+ echo "+" ${COMMAND}
NUM_CLIENTS=$(get_node_count ${NODES_TO_USE//,/ })
NUM_THREADS=$((NUM_CLIENTS * MDSCOUNT))
NUM_CLIENTS=$(get_node_count ${NODES_TO_USE//,/ })
NUM_THREADS=$((NUM_CLIENTS * MDSCOUNT))
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate stat on single client failed, aborting"
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate stat on single client failed, aborting"
+ restore_lustre_params < $p
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR 'f%%d' --ignore
exit 1
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR 'f%%d' --ignore
exit 1
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate stat on multiple nodes failed, aborting"
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate stat on multiple nodes failed, aborting"
+ restore_lustre_params < $p
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR 'f%%d' --ignore
exit 1
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR 'f%%d' --ignore
exit 1
+restore_lustre_params < $p
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $TESTDIR 'f%%d'
rmdir $BASEDIR || true
rm -f $MACHINEFILE
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $TESTDIR 'f%%d'
rmdir $BASEDIR || true
rm -f $MACHINEFILE
+MDSRATE_ENABLE_DNE=${MDSRATE_ENABLE_DNE:-false}
+if $MDSRATE_ENABLE_DNE; then
+ test_mkdir $BASEDIR
+ mdtcount_opt="--mdtcount $MDSCOUNT"
+else
+ mkdir $BASEDIR
+fi
+if $VERBOSE; then
+ debug_opt="--debug"
+fi
chmod 0777 $BASEDIR
mdsrate_STRIPEPARAMS=${mdsrate_STRIPEPARAMS:-${fs_STRIPEPARAMS:-"-i 0 -c 1"}}
setstripe_getstripe $BASEDIR $mdsrate_STRIPEPARAMS
chmod 0777 $BASEDIR
mdsrate_STRIPEPARAMS=${mdsrate_STRIPEPARAMS:-${fs_STRIPEPARAMS:-"-i 0 -c 1"}}
setstripe_getstripe $BASEDIR $mdsrate_STRIPEPARAMS
-generate_machine_file $NODES_TO_USE $MACHINEFILE || error "can not generate machinefile"
+generate_machine_file $NODES_TO_USE $MACHINEFILE ||
+ error "can not generate machinefile"
+
+p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+save_lustre_params $(get_facets MDS) mdt.*.enable_remote_dir_gid > $p
+do_nodes $(comma_list $(mdts_nodes)) \
+ $LCTL set_param mdt.*.enable_remote_dir_gid=-1
if [ -n "$NOCREATE" ]; then
echo "NOCREATE=$NOCREATE => no file creation."
if [ -n "$NOCREATE" ]; then
echo "NOCREATE=$NOCREATE => no file creation."
log "===== $0 Test preparation: creating ${NUM_FILES} files."
log "===== $0 Test preparation: creating ${NUM_FILES} files."
- COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --mknod --dir ${TESTDIR}
- --nfiles ${NUM_FILES} --filefmt 'f%%d'"
- echo "+" ${COMMAND}
+ COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --mknod --dir ${TESTDIR}
+ --nfiles ${NUM_FILES} --filefmt 'f%%d'
+ $mdtcount_opt $debug_opt"
+ echo "+" ${COMMAND}
NUM_CLIENTS=$(get_node_count ${NODES_TO_USE//,/ })
NUM_THREADS=$((NUM_CLIENTS * MDSCOUNT))
NUM_CLIENTS=$(get_node_count ${NODES_TO_USE//,/ })
NUM_THREADS=$((NUM_CLIENTS * MDSCOUNT))
if [ ${PIPESTATUS[0]} != 0 ]; then
error_noexit "mdsrate file creation failed, aborting"
if [ ${PIPESTATUS[0]} != 0 ]; then
error_noexit "mdsrate file creation failed, aborting"
+ restore_lustre_params < $p
mdsrate_cleanup $NUM_THREADS $MACHINEFILE $NUM_FILES \
$TESTDIR 'f%%d' --ignore
exit 1
mdsrate_cleanup $NUM_THREADS $MACHINEFILE $NUM_FILES \
$TESTDIR 'f%%d' --ignore
exit 1
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate stat on single client failed, aborting"
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate stat on single client failed, aborting"
+ restore_lustre_params < $p
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR 'f%%d' --ignore
exit 1
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR 'f%%d' --ignore
exit 1
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate stat on multiple nodes failed, aborting"
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
error_noexit "mdsrate stat on multiple nodes failed, aborting"
+ restore_lustre_params < $p
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR 'f%%d' --ignore
exit 1
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
$TESTDIR 'f%%d' --ignore
exit 1
+restore_lustre_params < $p
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $TESTDIR 'f%%d'
rmdir $BASEDIR || true
rm -f $MACHINEFILE
mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $TESTDIR 'f%%d'
rmdir $BASEDIR || true
rm -f $MACHINEFILE
int ndirs = 1;
char *dirfmt;
char dir[PATH_MAX];
int ndirs = 1;
char *dirfmt;
char dir[PATH_MAX];
-char mkdir_cmd[PATH_MAX + 32];
+char mkdir_cmd[PATH_MAX + 48];
int dirthreads;
int dirnum;
DIR *directory;
int dirthreads;
int dirnum;
DIR *directory;
if (!S_ISDIR(sb.st_mode))
fatal(myrank, "'%s' is not dir\n", dir);
} else if (errno == ENOENT) {
if (!S_ISDIR(sb.st_mode))
fatal(myrank, "'%s' is not dir\n", dir);
} else if (errno == ENOENT) {
- sprintf(mkdir_cmd, "lfs mkdir -i %d %s",
- myrank % mdt_count, dir);
+ sprintf(mkdir_cmd, "lfs mkdir -i %d -c %d %s",
+ rand() % mdt_count,
+ rand() % mdt_count + 1, dir);
} else {
fatal(myrank, "'%s' stat failed\n", dir);
}
} else {
fatal(myrank, "'%s' stat failed\n", dir);
}
sprintf(mkdir_cmd, "mkdir -p %s", dir);
}
sprintf(mkdir_cmd, "mkdir -p %s", dir);
}
- dmesg("%d: %s\n", myrank, mkdir_cmd);
#ifdef _LIGHTWEIGHT_KERNEL
printf("NOTICE: not running system(%s)\n", mkdir_cmd);
#else
#ifdef _LIGHTWEIGHT_KERNEL
printf("NOTICE: not running system(%s)\n", mkdir_cmd);
#else
- rc = system(mkdir_cmd);
+ if (ndirs == 1) {
+ if (myrank == 0) {
+ dmesg("%d: %s\n", myrank, mkdir_cmd);
+ rc = system(mkdir_cmd);
+ } else {
+ rc = 0;
+ }
+ if (MPI_Barrier(MPI_COMM_WORLD) != MPI_SUCCESS)
+ fatal(myrank, "mkdir MPI_Barrier failed\n");
+ } else {
+ dmesg("%d: %s\n", myrank, mkdir_cmd);
+ rc = system(mkdir_cmd);
+ }
if (rc)
fatal(myrank, "'%s' failed.\n", mkdir_cmd);
#endif
if (rc)
fatal(myrank, "'%s' failed.\n", mkdir_cmd);
#endif