@@ -574,6 +574,8 @@ for section in $HOST_OPTIONS_SECTIONS; do
mkdir -p $RESULT_DIR
+ export TEST_GROUPS=`grep $(basename $seqnum) "$SRC_DIR/$(dirname $seqnum)/group"`
+
echo -n "$seqnum"
if $showme; then
@@ -3799,6 +3799,21 @@ init_rc()
$XFS_IO_PROG -c stat $TEST_DIR 2>&1 | grep -q "is not on an XFS filesystem" && \
export XFS_IO_PROG="$XFS_IO_PROG -F"
+ if echo $TEST_GROUPS | grep -q quick; then
+ # xfs_io -M flag runs xfs_io as multi threaded process
+ # in order to catch fdget/fdset reference leaks, because
+ # file structs are not reference counted in a single threaded
+ # process.
+ # Because reference counted fdget/fdset may lead to slightly
+ # longer run times in extreme cases (such as generic/132),
+ # we limit the use of -M flags to tests with short runtime,
+ # where the effect of the flag is negligable.
+ #
+ # Figure out if xfs_io supports the -M option
+ $XFS_IO_PROG -M -c quit 2>/dev/null && \
+ export XFS_IO_PROG="$XFS_IO_PROG -M"
+ fi
+
# xfs_copy doesn't work on v5 xfs yet without -d option
if [ "$FSTYP" == "xfs" ] && [[ $MKFS_OPTIONS =~ crc=1 ]]; then
export XFS_COPY_PROG="$XFS_COPY_PROG -d"
Try to run xfs_io for tests in group quick with command line option -M which starts an idle thread before performing any io. The purpose of this idle thread is to test io from a multi threaded process. With single threaded process, the file table is not shared and file structs are not reference counted. In order to improve the chance of detecting file struct reference leaks, we should run xfs_io commands with this option as much as possible. Analysis of the effect of xfs_io -M on tests runtime showed that it may lead to slightly longer run times in extreme cases (e.g +3s for generic/132), but has a negligable effect on runtime of tests among the 'quick' group (worst case +0.3s for generic/130). Therefore, we automatically add the -M flags only to tests in the 'quick' group. Signed-off-by: Amir Goldstein <amir73il@gmail.com> --- check | 2 ++ common/rc | 15 +++++++++++++++ 2 files changed, 17 insertions(+)