All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jayashree Mohan <jayashree2912@gmail.com>
To: Eryu Guan <guaneryu@gmail.com>
Cc: fstests <fstests@vger.kernel.org>,
	Vijaychidambaram Velayudhan Pillai <vijay@cs.utexas.edu>,
	Theodore Ts'o <tytso@mit.edu>, Dave Chinner <david@fromorbit.com>,
	Amir Goldstein <amir73il@gmail.com>,
	Filipe Manana <fdmanana@gmail.com>
Subject: Re: [PATCH] fstest: CrashMonkey tests ported to xfstest
Date: Sun, 4 Nov 2018 14:21:21 -0600	[thread overview]
Message-ID: <1B22AFA2-FAF3-45AA-9910-CDBE4AEBFB09@gmail.com> (raw)
In-Reply-To: <20181104163826.GH12788@desktop>

Hi Eryu and Filipe,

I have incorporated the coding style suggested, and renamed the cleanup function. However, creating a clean fs image after each sub test is resulting in about 10-15s of additional overhead overall. I instead clean up the working directory and unmount. The time for the tests varies between 12-15 seconds.

Please find the patch below

—

diff --git a/tests/generic/517-link b/tests/generic/517-link
new file mode 100755
index 0000000..ea5c5b7
--- /dev/null
+++ b/tests/generic/517-link
@@ -0,0 +1,164 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2018 The University of Texas at Austin.  All Rights Reserved.
+#
+# FS QA Test 517-link
+#
+# Test case created by CrashMonkey
+#
+# Test if we create a hard link to a file and persist either of the files, all the names persist.
+#
+seq=`basename $0`
+seqres=$RESULT_DIR/$seq
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1	# failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+	_cleanup_flakey
+	cd /
+	rm -f $tmp.*
+}
+
+init_start_time=$(date +%s.%N)
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+. ./common/dmflakey
+
+# remove previous $seqres.full before test
+rm -f $seqres.full
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+_require_scratch_nocheck
+_require_dm_target flakey
+
+# initialize scratch device
+_scratch_mkfs >> $seqres.full 2>&1
+_require_metadata_journaling $SCRATCH_DEV
+_init_flakey
+init_end_time=$(date +%s.%N)
+init_time_elapsed=$(echo "$init_end_time - $init_start_time" | bc) 
+echo "Initialization time = $init_time_elapsed" >> $seqres.full
+
+stat_opt='-c "blocks: %b size: %s inode: %i links: %h"'
+test_num=0
+total_time=0
+
+_clean_dir()
+{
+	_mount_flakey
+	rm -rf $SCRATCH_MNT/*
+	sync
+	_unmount_flakey
+}
+
+# create a hard link $2 to file $1, and fsync $3, followed by power-cut
+test_link()
+{
+	test_num=$((test_num + 1))
+	local start_time=$(date +%s.%N)
+	local sibling=0
+	local before=""
+	local after=""
+	echo -ne "\n=== Test $test_num :  link $1 $2 " | _filter_scratch
+	_mount_flakey
+	
+	# now execute the workload
+	mkdir -p "${1%/*}" && mkdir -p "${2%/*}" && touch "$1"
+	ln $1 $2
+	
+	if [ -z "$3" ]; then
+		echo -ne " with sync ===\n"
+		sync
+		before=`stat "$stat_opt" $1`
+	else
+		echo " with fsync $3 ===" | _filter_scratch
+		
+		# If the file being persisted is a sibling, create it first
+		if [ ! -f $3 ]; then
+			sibling=1
+			touch $3
+		fi
+
+		$XFS_IO_PROG -c "fsync" $3
+		
+		if [ $sibling -ne 1 ]; then
+			before=`stat "$stat_opt" $1`
+		fi
+	fi
+
+	_flakey_drop_and_remount | tee -a $seqres.full
+	
+	if [ -f $1 ]; then
+		after=`stat "$stat_opt" $1`
+	fi
+
+	if [ "$before" != "$after" ] && [ $sibling -ne 1 ]; then
+		echo "Before: $before" | tee -a $seqres.full
+		echo "After: $after" | tee -a $seqres.full	
+	fi
+
+	_unmount_flakey
+	_check_scratch_fs $FLAKEY_DEV
+	[ $? -ne 0 ] && _fatal "fsck failed"
+	end_time=$(date +%s.%N)
+	time_elapsed=$(echo "$end_time - $start_time" | bc)
+	echo " Elapsed time : $time_elapsed" >> $seqres.full
+	total_time=$(echo "$total_time + $time_elapsed" | bc)
+	echo " Total time : $total_time" >> $seqres.full
+	_clean_dir
+}
+
+# run the link test for different combinations
+
+test_start_time=$(date +%s.%N)
+# Group 1: Both files within root directory
+for file_name in $SCRATCH_MNT $SCRATCH_MNT/foo $SCRATCH_MNT/bar; do
+	test_link $SCRATCH_MNT/foo $SCRATCH_MNT/bar $file_name
+done
+test_link $SCRATCH_MNT/foo $SCRATCH_MNT/bar 
+
+# Group 2: Create hard link in a sub directory
+for file_name in $SCRATCH_MNT $SCRATCH_MNT/foo $SCRATCH_MNT/bar $SCRATCH_MNT/A $SCRATCH_MNT/A/bar $SCRATCH_MNT/A/foo; do
+	test_link $SCRATCH_MNT/foo $SCRATCH_MNT/A/bar $file_name
+done
+test_link $SCRATCH_MNT/foo $SCRATCH_MNT/A/bar 
+
+# Group 3: Create hard link in parent directory
+for file_name in $SCRATCH_MNT $SCRATCH_MNT/foo $SCRATCH_MNT/bar $SCRATCH_MNT/A $SCRATCH_MNT/A/bar $SCRATCH_MNT/A/foo; do
+	test_link $SCRATCH_MNT/A/foo $SCRATCH_MNT/bar $file_name
+done
+test_link $SCRATCH_MNT/A/foo $SCRATCH_MNT/bar 
+
+# Group 4: Both files within a directory other than root
+for file_name in $SCRATCH_MNT $SCRATCH_MNT/A $SCRATCH_MNT/A/bar $SCRATCH_MNT/A/foo; do
+	test_link $SCRATCH_MNT/A/foo $SCRATCH_MNT/A/bar $file_name
+done
+test_link $SCRATCH_MNT/A/foo $SCRATCH_MNT/A/bar 
+
+#Group 5: Exercise name reuse : Link file in sub-directory
+for file_name in $SCRATCH_MNT $SCRATCH_MNT/foo $SCRATCH_MNT/bar $SCRATCH_MNT/A $SCRATCH_MNT/A/bar $SCRATCH_MNT/A/foo; do
+	test_link $SCRATCH_MNT/bar $SCRATCH_MNT/A/bar $file_name
+done
+test_link $SCRATCH_MNT/bar $SCRATCH_MNT/A/bar 
+
+#Group 6: Exercise name reuse : Link file in parent directory
+for file_name in $SCRATCH_MNT $SCRATCH_MNT/foo $SCRATCH_MNT/bar $SCRATCH_MNT/A $SCRATCH_MNT/A/bar $SCRATCH_MNT/A/foo; do
+	test_link $SCRATCH_MNT/A/bar $SCRATCH_MNT/bar $file_name
+done
+test_link $SCRATCH_MNT/A/bar $SCRATCH_MNT/bar 
+
+test_end_time=$(date +%s.%N)
+test_time_elapsed=$(echo "$test_end_time-$test_start_time" | bc) 
+echo "Test Elapsed time : $test_time_elapsed" >> $seqres.full
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/517-link.out b/tests/generic/517-link.out
new file mode 100644
index 0000000..9555860
--- /dev/null
+++ b/tests/generic/517-link.out
@@ -0,0 +1,75 @@
+QA output created by 517-link
+
+=== Test 1 :  link SCRATCH_MNT/foo SCRATCH_MNT/bar  with fsync SCRATCH_MNT ===
+
+=== Test 2 :  link SCRATCH_MNT/foo SCRATCH_MNT/bar  with fsync SCRATCH_MNT/foo ===
+
+=== Test 3 :  link SCRATCH_MNT/foo SCRATCH_MNT/bar  with fsync SCRATCH_MNT/bar ===
+
+=== Test 4 :  link SCRATCH_MNT/foo SCRATCH_MNT/bar  with sync ===
+
+=== Test 5 :  link SCRATCH_MNT/foo SCRATCH_MNT/A/bar  with fsync SCRATCH_MNT ===
+
+=== Test 6 :  link SCRATCH_MNT/foo SCRATCH_MNT/A/bar  with fsync SCRATCH_MNT/foo ===
+
+=== Test 7 :  link SCRATCH_MNT/foo SCRATCH_MNT/A/bar  with fsync SCRATCH_MNT/bar ===
+
+=== Test 8 :  link SCRATCH_MNT/foo SCRATCH_MNT/A/bar  with fsync SCRATCH_MNT/A ===
+
+=== Test 9 :  link SCRATCH_MNT/foo SCRATCH_MNT/A/bar  with fsync SCRATCH_MNT/A/bar ===
+
+=== Test 10 :  link SCRATCH_MNT/foo SCRATCH_MNT/A/bar  with fsync SCRATCH_MNT/A/foo ===
+
+=== Test 11 :  link SCRATCH_MNT/foo SCRATCH_MNT/A/bar  with sync ===
+
+=== Test 12 :  link SCRATCH_MNT/A/foo SCRATCH_MNT/bar  with fsync SCRATCH_MNT ===
+
+=== Test 13 :  link SCRATCH_MNT/A/foo SCRATCH_MNT/bar  with fsync SCRATCH_MNT/foo ===
+
+=== Test 14 :  link SCRATCH_MNT/A/foo SCRATCH_MNT/bar  with fsync SCRATCH_MNT/bar ===
+
+=== Test 15 :  link SCRATCH_MNT/A/foo SCRATCH_MNT/bar  with fsync SCRATCH_MNT/A ===
+
+=== Test 16 :  link SCRATCH_MNT/A/foo SCRATCH_MNT/bar  with fsync SCRATCH_MNT/A/bar ===
+
+=== Test 17 :  link SCRATCH_MNT/A/foo SCRATCH_MNT/bar  with fsync SCRATCH_MNT/A/foo ===
+
+=== Test 18 :  link SCRATCH_MNT/A/foo SCRATCH_MNT/bar  with sync ===
+
+=== Test 19 :  link SCRATCH_MNT/A/foo SCRATCH_MNT/A/bar  with fsync SCRATCH_MNT ===
+
+=== Test 20 :  link SCRATCH_MNT/A/foo SCRATCH_MNT/A/bar  with fsync SCRATCH_MNT/A ===
+
+=== Test 21 :  link SCRATCH_MNT/A/foo SCRATCH_MNT/A/bar  with fsync SCRATCH_MNT/A/bar ===
+
+=== Test 22 :  link SCRATCH_MNT/A/foo SCRATCH_MNT/A/bar  with fsync SCRATCH_MNT/A/foo ===
+
+=== Test 23 :  link SCRATCH_MNT/A/foo SCRATCH_MNT/A/bar  with sync ===
+
+=== Test 24 :  link SCRATCH_MNT/bar SCRATCH_MNT/A/bar  with fsync SCRATCH_MNT ===
+
+=== Test 25 :  link SCRATCH_MNT/bar SCRATCH_MNT/A/bar  with fsync SCRATCH_MNT/foo ===
+
+=== Test 26 :  link SCRATCH_MNT/bar SCRATCH_MNT/A/bar  with fsync SCRATCH_MNT/bar ===
+
+=== Test 27 :  link SCRATCH_MNT/bar SCRATCH_MNT/A/bar  with fsync SCRATCH_MNT/A ===
+
+=== Test 28 :  link SCRATCH_MNT/bar SCRATCH_MNT/A/bar  with fsync SCRATCH_MNT/A/bar ===
+
+=== Test 29 :  link SCRATCH_MNT/bar SCRATCH_MNT/A/bar  with fsync SCRATCH_MNT/A/foo ===
+
+=== Test 30 :  link SCRATCH_MNT/bar SCRATCH_MNT/A/bar  with sync ===
+
+=== Test 31 :  link SCRATCH_MNT/A/bar SCRATCH_MNT/bar  with fsync SCRATCH_MNT ===
+
+=== Test 32 :  link SCRATCH_MNT/A/bar SCRATCH_MNT/bar  with fsync SCRATCH_MNT/foo ===
+
+=== Test 33 :  link SCRATCH_MNT/A/bar SCRATCH_MNT/bar  with fsync SCRATCH_MNT/bar ===
+
+=== Test 34 :  link SCRATCH_MNT/A/bar SCRATCH_MNT/bar  with fsync SCRATCH_MNT/A ===
+
+=== Test 35 :  link SCRATCH_MNT/A/bar SCRATCH_MNT/bar  with fsync SCRATCH_MNT/A/bar ===
+
+=== Test 36 :  link SCRATCH_MNT/A/bar SCRATCH_MNT/bar  with fsync SCRATCH_MNT/A/foo ===
+
+=== Test 37 :  link SCRATCH_MNT/A/bar SCRATCH_MNT/bar  with sync ===
diff --git a/tests/generic/group b/tests/generic/group
index 47de978..67e9108 100644
--- a/tests/generic/group
+++ b/tests/generic/group
@@ -519,3 +519,4 @@
 514 auto quick clone
 515 auto quick clone
 516 auto quick dedupe clone
+517-link quick log


> On Nov 4, 2018, at 10:38 AM, Eryu Guan <guaneryu@gmail.com> wrote:
> 
> On Mon, Oct 29, 2018 at 11:50:39AM -0500, Jayashree Mohan wrote:
>> Hi all,
>> 
>> As discussed previously, I have ported a few CrashMonkey tests into
>> xfstest test-case for your review. I have written a patch for testing
>> simple "hard link" behaviour. This patch batches 37 test cases
>> generated by CrashMonkey into one  xfstest test, all of them testing
>> hard-link behaviour.  These 37 tests have been grouped based on the
>> similarities; there are comments in the patch to
>> describe what each group is testing for. On a high-level, we are
>> testing the creation of hard links between files in same directory and
>> files across two directories, while allowing fsync of either the files
>> involved, their parent directories, or unrelated sibling files.
>> 
>> We aim to convert the other CrashMonkey tests in the same way, batched
>> by the type of file-system operation we test. This particular test
>> took 10 seconds to run on my VM (Ubuntu 16.04, 2GB RAM, single core)
>> on 100MB scratch partition. I have added per test case timer in this
>> patch, which shows each test case takes about 0.25 seconds (to run,
>> flakey_remount, test and cleanup). This test passes clean on ext4, xfs
>> and F2FS. It will show three failed cases as of kernel 4.16 on btrfs
>> (I think it's not yet patched on 4.19, so you should see the failure
>> on the newest kernel as well).
>> 
>> Thinking more about it, none of the CrashMonkey test cases check for
>> resource exhaustion and hence we don't need more than 100MB of scratch
>> device. If the per-test external overhead due to fsck/scrub etc
>> depends on the scratch partition size, we can speed up the CrashMonkey
>> tests by allowing a new device like scratch(much smaller in size -
>> about 100-200MB). Additionally, our tests also do not need fsck to be
>> run at the end. Is there a way to skip performing fsck after each test
>> (if its something configurable in the test file) ?
>> 
>> If this sort of patch seems fine to you, I can go ahead and port the
>> other CrashMonkey tests in the same way. After batching, I hope there
>> would be around 10-12 test files like the one attached here.
>> 
>> Patch below:
>> ---
>> 
>> diff --git a/tests/generic/517-link b/tests/generic/517-link
>> new file mode 100755
>> index 0000000..791b6c0
>> --- /dev/null
>> +++ b/tests/generic/517-link
>> @@ -0,0 +1,162 @@
>> +#! /bin/bash
>> +# SPDX-License-Identifier: GPL-2.0
>> +# Copyright (c) 2018 The University of Texas at Austin.  All Rights Reserved.
>> +#
>> +# FS QA Test 517-link
>> +#
>> +# Test if we create a hard link to a file and persist either of the
>> files, all the names persist.
> 
> Your mail agent seems to wrap the line and makes the patch unable to be
> applied. There're many other places in the patch. Could you please take
> a look?
> 
>> +#
>> +seq=`basename $0`
>> +seqres=$RESULT_DIR/$seq
>> +echo "QA output created by $seq"
>> +
>> +here=`pwd`
>> +tmp=/tmp/$$
>> +status=1    # failure is the default!
>> +trap "_cleanup; exit \$status" 0 1 2 3 15
>> +
>> +_cleanup()
>> +{
>> +    _cleanup_flakey
> 
> Please use single tab to do indention not 4 spaces.
> 
>> +    cd /
>> +    rm -f $tmp.*
>> +}
>> +
>> +init_start_time=$(date +%s.%N)
>> +# get standard environment, filters and checks
>> +. ./common/rc
>> +. ./common/filter
>> +. ./common/dmflakey
>> +
>> +# remove previous $seqres.full before test
>> +rm -f $seqres.full
>> +
>> +# real QA test starts here
>> +_supported_fs generic
>> +_supported_os Linux
>> +_require_scratch
>> +_require_dm_target flakey
>> +
>> +# initialize scratch device
>> +_scratch_mkfs >>$seqres.full 2>&1
>> +_require_metadata_journaling $SCRATCH_DEV
>> +_init_flakey
>> +_mount_flakey
>> +init_end_time=$(date +%s.%N)
>> +init_time_elapsed=$(echo "$init_end_time-$init_start_time" | bc)
>> +echo "Initialization time = $init_time_elapsed" >> $seqres.full
>> +
>> +stat_opt='-c "blocks: %b size: %s inode: %i links: %h"'
>> +test_num=0
>> +total_time=0
>> +
>> +cleanup()
> 
> Hmm, this could be confusing people, as we already have a _cleanup()
> function. But I think it'd be better to re-create the fs for each test
> so every sub-test starts with a clean filesystem and there's no need to
> do cleanup after each sub-test. (Yeah, this may consume more test time.)
> 
> Thanks,
> Eryu
> 
>> +{
>> +    rm -rf $SCRATCH_MNT/*
>> +    sync
>> +}
>> +
>> +# create a hard link $2 to file $1, and fsync $3, followed by power-cu
>> +test_link()
>> +{
>> +    start_time=$(date +%s.%N)
>> +    test_num=$((test_num + 1))
>> +    sibling=0
>> +    before=""
>> +    after=""
>> +    echo -ne "\n=== Test $test_num :  link $1 $2 " | tee -a $seqres.full
>> +
>> +    # now execute the workload
>> +    mkdir -p "${1%/*}" && mkdir -p "${2%/*}" && touch "$1"
>> +    ln $1 $2
>> +
>> +    if [ -z "$3" ]
>> +    then
>> +        echo -ne " with sync ===\n"
>> +        sync
>> +        before=`stat "$stat_opt" $1`
>> +    else
>> +        echo " with fsync $3 ==="
>> +
>> +        # If the file being persisted is a sibling, create it first
>> +        if [ ! -f $3 ]
>> +        then
>> +            sibling=1
>> +            touch $3
>> +        fi
>> +
>> +        $XFS_IO_PROG -c "fsync" $3 | _filter_xfs_io
>> +
>> +        if [ $sibling -ne 1 ]
>> +        then
>> +            before=`stat "$stat_opt" $1`
>> +        fi
>> +    fi
>> +
>> +    _flakey_drop_and_remount | tee -a $seqres.full
>> +
>> +    if [ -f $1 ]
>> +    then
>> +        after=`stat "$stat_opt" $1`
>> +    fi
>> +
>> +    if [ "$before" != "$after" ] && [ $sibling -ne 1 ]
>> +    then
>> +        echo "Before: $before" | tee -a $seqres.full
>> +        echo "After: $after" | tee -a $seqres.full
>> +    fi
>> +
>> +    cleanup
>> +    end_time=$(date +%s.%N)
>> +    time_elapsed=$(echo "$end_time-$start_time" | bc)
>> +    echo " Elapsed time : $time_elapsed" >> $seqres.full
>> +    total_time=$(echo "$total_time+$time_elapsed" | bc)
>> +    echo " Total time : $total_time" >> $seqres.full
>> +}
>> +
>> +# run the link test for different combinations
>> +
>> +test_start_time=$(date +%s.%N)
>> +# Group 1: Both files within root directory
>> +for file_name in $SCRATCH_MNT $SCRATCH_MNT/foo $SCRATCH_MNT/bar; do
>> +    test_link $SCRATCH_MNT/foo $SCRATCH_MNT/bar $file_name
>> +done
>> +test_link $SCRATCH_MNT/foo $SCRATCH_MNT/bar
>> +
>> +# Group 2: Create hard link in a sub directory
>> +for file_name in $SCRATCH_MNT $SCRATCH_MNT/foo $SCRATCH_MNT/bar
>> $SCRATCH_MNT/A $SCRATCH_MNT/A/bar $SCRATCH_MNT/A/foo; do
>> +    test_link $SCRATCH_MNT/foo $SCRATCH_MNT/A/bar $file_name
>> +done
>> +test_link $SCRATCH_MNT/foo $SCRATCH_MNT/A/bar
>> +
>> +# Group 3: Create hard link in parent directory
>> +for file_name in $SCRATCH_MNT $SCRATCH_MNT/foo $SCRATCH_MNT/bar
>> $SCRATCH_MNT/A $SCRATCH_MNT/A/bar $SCRATCH_MNT/A/foo; do
>> +    test_link $SCRATCH_MNT/A/foo $SCRATCH_MNT/bar $file_name
>> +done
>> +test_link $SCRATCH_MNT/A/foo $SCRATCH_MNT/bar
>> +
>> +# Group 4: Both files within a directory other than root
>> +for file_name in $SCRATCH_MNT $SCRATCH_MNT/A $SCRATCH_MNT/A/bar
>> $SCRATCH_MNT/A/foo; do
>> +    test_link $SCRATCH_MNT/A/foo $SCRATCH_MNT/A/bar $file_name
>> +done
>> +test_link $SCRATCH_MNT/A/foo $SCRATCH_MNT/A/bar
>> +
>> +#Group 5: Exercise name reuse : Link file in sub-directory
>> +for file_name in $SCRATCH_MNT $SCRATCH_MNT/foo $SCRATCH_MNT/bar
>> $SCRATCH_MNT/A $SCRATCH_MNT/A/bar $SCRATCH_MNT/A/foo; do
>> +    test_link $SCRATCH_MNT/bar $SCRATCH_MNT/A/bar $file_name
>> +done
>> +test_link $SCRATCH_MNT/bar $SCRATCH_MNT/A/bar
>> +
>> +#Group 6: Exercise name reuse : Link file in parent directory
>> +for file_name in $SCRATCH_MNT $SCRATCH_MNT/foo $SCRATCH_MNT/bar
>> $SCRATCH_MNT/A $SCRATCH_MNT/A/bar $SCRATCH_MNT/A/foo; do
>> +    test_link $SCRATCH_MNT/A/bar $SCRATCH_MNT/bar $file_name
>> +done
>> +test_link $SCRATCH_MNT/A/bar $SCRATCH_MNT/bar
>> +
>> +test_end_time=$(date +%s.%N)
>> +test_time_elapsed=$(echo "$test_end_time-$test_start_time" | bc)
>> +echo "Test Elapsed time : $test_time_elapsed" >> $seqres.full
>> +
>> +# success, all done
>> +status=0
>> +exit
>> diff --git a/tests/generic/517-link.out b/tests/generic/517-link.out
>> new file mode 100644
>> index 0000000..381b644
>> --- /dev/null
>> +++ b/tests/generic/517-link.out
>> @@ -0,0 +1,75 @@
>> +QA output created by 517-link
>> +
>> +=== Test 1 :  link /mnt/scratch/foo /mnt/scratch/bar  with fsync
>> /mnt/scratch ===
>> +
>> +=== Test 2 :  link /mnt/scratch/foo /mnt/scratch/bar  with fsync
>> /mnt/scratch/foo ===
>> +
>> +=== Test 3 :  link /mnt/scratch/foo /mnt/scratch/bar  with fsync
>> /mnt/scratch/bar ===
>> +
>> +=== Test 4 :  link /mnt/scratch/foo /mnt/scratch/bar  with sync ===
>> +
>> +=== Test 5 :  link /mnt/scratch/foo /mnt/scratch/A/bar  with fsync
>> /mnt/scratch ===
>> +
>> +=== Test 6 :  link /mnt/scratch/foo /mnt/scratch/A/bar  with fsync
>> /mnt/scratch/foo ===
>> +
>> +=== Test 7 :  link /mnt/scratch/foo /mnt/scratch/A/bar  with fsync
>> /mnt/scratch/bar ===
>> +
>> +=== Test 8 :  link /mnt/scratch/foo /mnt/scratch/A/bar  with fsync
>> /mnt/scratch/A ===
>> +
>> +=== Test 9 :  link /mnt/scratch/foo /mnt/scratch/A/bar  with fsync
>> /mnt/scratch/A/bar ===
>> +
>> +=== Test 10 :  link /mnt/scratch/foo /mnt/scratch/A/bar  with fsync
>> /mnt/scratch/A/foo ===
>> +
>> +=== Test 11 :  link /mnt/scratch/foo /mnt/scratch/A/bar  with sync ===
>> +
>> +=== Test 12 :  link /mnt/scratch/A/foo /mnt/scratch/bar  with fsync
>> /mnt/scratch ===
>> +
>> +=== Test 13 :  link /mnt/scratch/A/foo /mnt/scratch/bar  with fsync
>> /mnt/scratch/foo ===
>> +
>> +=== Test 14 :  link /mnt/scratch/A/foo /mnt/scratch/bar  with fsync
>> /mnt/scratch/bar ===
>> +
>> +=== Test 15 :  link /mnt/scratch/A/foo /mnt/scratch/bar  with fsync
>> /mnt/scratch/A ===
>> +
>> +=== Test 16 :  link /mnt/scratch/A/foo /mnt/scratch/bar  with fsync
>> /mnt/scratch/A/bar ===
>> +
>> +=== Test 17 :  link /mnt/scratch/A/foo /mnt/scratch/bar  with fsync
>> /mnt/scratch/A/foo ===
>> +
>> +=== Test 18 :  link /mnt/scratch/A/foo /mnt/scratch/bar  with sync ===
>> +
>> +=== Test 19 :  link /mnt/scratch/A/foo /mnt/scratch/A/bar  with fsync
>> /mnt/scratch ===
>> +
>> +=== Test 20 :  link /mnt/scratch/A/foo /mnt/scratch/A/bar  with fsync
>> /mnt/scratch/A ===
>> +
>> +=== Test 21 :  link /mnt/scratch/A/foo /mnt/scratch/A/bar  with fsync
>> /mnt/scratch/A/bar ===
>> +
>> +=== Test 22 :  link /mnt/scratch/A/foo /mnt/scratch/A/bar  with fsync
>> /mnt/scratch/A/foo ===
>> +
>> +=== Test 23 :  link /mnt/scratch/A/foo /mnt/scratch/A/bar  with sync ===
>> +
>> +=== Test 24 :  link /mnt/scratch/bar /mnt/scratch/A/bar  with fsync
>> /mnt/scratch ===
>> +
>> +=== Test 25 :  link /mnt/scratch/bar /mnt/scratch/A/bar  with fsync
>> /mnt/scratch/foo ===
>> +
>> +=== Test 26 :  link /mnt/scratch/bar /mnt/scratch/A/bar  with fsync
>> /mnt/scratch/bar ===
>> +
>> +=== Test 27 :  link /mnt/scratch/bar /mnt/scratch/A/bar  with fsync
>> /mnt/scratch/A ===
>> +
>> +=== Test 28 :  link /mnt/scratch/bar /mnt/scratch/A/bar  with fsync
>> /mnt/scratch/A/bar ===
>> +
>> +=== Test 29 :  link /mnt/scratch/bar /mnt/scratch/A/bar  with fsync
>> /mnt/scratch/A/foo ===
>> +
>> +=== Test 30 :  link /mnt/scratch/bar /mnt/scratch/A/bar  with sync ===
>> +
>> +=== Test 31 :  link /mnt/scratch/A/bar /mnt/scratch/bar  with fsync
>> /mnt/scratch ===
>> +
>> +=== Test 32 :  link /mnt/scratch/A/bar /mnt/scratch/bar  with fsync
>> /mnt/scratch/foo ===
>> +
>> +=== Test 33 :  link /mnt/scratch/A/bar /mnt/scratch/bar  with fsync
>> /mnt/scratch/bar ===
>> +
>> +=== Test 34 :  link /mnt/scratch/A/bar /mnt/scratch/bar  with fsync
>> /mnt/scratch/A ===
>> +
>> +=== Test 35 :  link /mnt/scratch/A/bar /mnt/scratch/bar  with fsync
>> /mnt/scratch/A/bar ===
>> +
>> +=== Test 36 :  link /mnt/scratch/A/bar /mnt/scratch/bar  with fsync
>> /mnt/scratch/A/foo ===
>> +
>> +=== Test 37 :  link /mnt/scratch/A/bar /mnt/scratch/bar  with sync ===
>> diff --git a/tests/generic/group b/tests/generic/group
>> index 47de978..dc04152 100644
>> --- a/tests/generic/group
>> +++ b/tests/generic/group
>> @@ -519,3 +519,4 @@
>> 514 auto quick clone
>> 515 auto quick clone
>> 516 auto quick dedupe clone
>> +517-link crash
>> 
>> 
>> Thanks,
>> Jayashree Mohan

  reply	other threads:[~2018-11-05  5:37 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-29 16:50 [PATCH] fstest: CrashMonkey tests ported to xfstest Jayashree Mohan
2018-10-30 13:05 ` Filipe Manana
2018-11-02 20:39   ` Jayashree Mohan
2018-11-04 16:27     ` Eryu Guan
2018-11-04 16:38 ` Eryu Guan
2018-11-04 20:21   ` Jayashree Mohan [this message]
2018-11-05  5:22     ` Dave Chinner
2018-11-05 20:16       ` Jayashree Mohan
2018-11-06 22:57         ` Dave Chinner
2018-11-06 23:15         ` Theodore Y. Ts'o
2018-11-06 23:39           ` Dave Chinner
     [not found]             ` <CA+EzBbDwdi26MCswz0iQ8hUTcGixATUXayxMOmEw5gekYvmMuw@mail.gmail.com>
     [not found]               ` <5be228d2.1c69fb81.3ad08.5e76.GMR@mx.google.com>
2018-11-06 23:54                 ` Delivery Status Notification (Failure) Jayashree Mohan
2018-11-07  2:09               ` [PATCH] fstest: CrashMonkey tests ported to xfstest Dave Chinner
2018-11-07  4:04                 ` Theodore Y. Ts'o
2018-11-08  1:41                   ` Jayashree Mohan
2018-11-08  9:10                     ` Dave Chinner
2018-11-08 14:46                       ` Jayashree Mohan
2018-11-08  9:40                 ` Dave Chinner
2018-11-08 15:35                   ` Vijaychidambaram Velayudhan Pillai
2018-11-09  3:12                     ` Dave Chinner
2018-11-09 16:39                       ` Vijaychidambaram Velayudhan Pillai
2018-11-09 19:17                         ` Theodore Y. Ts'o
2018-11-09 20:47                           ` Vijaychidambaram Velayudhan Pillai
2018-11-08 16:10                   ` Theodore Y. Ts'o
2018-11-07  0:24           ` Jayashree Mohan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1B22AFA2-FAF3-45AA-9910-CDBE4AEBFB09@gmail.com \
    --to=jayashree2912@gmail.com \
    --cc=amir73il@gmail.com \
    --cc=david@fromorbit.com \
    --cc=fdmanana@gmail.com \
    --cc=fstests@vger.kernel.org \
    --cc=guaneryu@gmail.com \
    --cc=tytso@mit.edu \
    --cc=vijay@cs.utexas.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.