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
next prev parent 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox