Message ID | 148149319048.31093.2083894591825614863.stgit@birch.djwong.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Dec 12, 2016 at 06:25:39PM +0800, Eryu Guan wrote: > On Sun, Dec 11, 2016 at 01:53:10PM -0800, Darrick J. Wong wrote: > > Some of the tests try to check that we can't COW when we're out of > > space, but some tricky filesystems make this hard because writing N > > blocks doesn't increase used blocks by N.... > > > > Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> > > --- > > common/populate | 14 ++++++++++++++ > > tests/generic/171 | 5 ++--- > > tests/generic/173 | 5 ++--- > > tests/generic/174 | 5 ++--- > > tests/generic/282 | 3 +-- > > 5 files changed, 21 insertions(+), 11 deletions(-) > > > > > > diff --git a/common/populate b/common/populate > > index d0003c5..9811d21 100644 > > --- a/common/populate > > +++ b/common/populate > > @@ -30,6 +30,20 @@ _require_xfs_db_blocktrash_z_command() { > > $XFS_DB_PROG -x -f -c 'blocktrash -z' "${TEST_DEV}" | grep -q 'nothing on stack' || _notrun "blocktrash -z not supported" > > } > > > > +# Eat free space until we can't anymore. > > +_consume_free_space() { > > + dir=$1 > > + > > + old_nr_free=0 > > + nr_free=$(stat -f -c '%f' $dir) > > + x=0 > > + while [ $nr_free -gt 0 ] && [ $old_nr_free != $nr_free ]; do > > + $XFS_IO_PROG -f -c "pwrite -b 4194304 0 $((blksz * nr_free))" $dir/eat_my_space.$((x++)) > > blksz not defined in the function. > > Xiaoguang Wang did something similar back in Nov. and I'm still queuing > his patch. (His 1/2 patch conflicts with your scrub/repair patchset and > it might be easier for you to let your patches go first.) > > generic: make 17[1-4] work well when btrfs compression is enabled > https://patchwork.kernel.org/patch/9408451/ > > Does this patch work for you? If so, perhaps you only need to update > generic/282 using the "_fill_fs" helper? Aha! I had this feeling in the back of my head that someone was already trying to push a helper function. At this point XFS online scrub/repair is slipping to 4.11 anyway so you may as well take Xioguang's patches and I'll just rebase all my stuff off of that. --D > > Thanks, > Eryu > -- > To unsubscribe from this list: send the line "unsubscribe fstests" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/common/populate b/common/populate index d0003c5..9811d21 100644 --- a/common/populate +++ b/common/populate @@ -30,6 +30,20 @@ _require_xfs_db_blocktrash_z_command() { $XFS_DB_PROG -x -f -c 'blocktrash -z' "${TEST_DEV}" | grep -q 'nothing on stack' || _notrun "blocktrash -z not supported" } +# Eat free space until we can't anymore. +_consume_free_space() { + dir=$1 + + old_nr_free=0 + nr_free=$(stat -f -c '%f' $dir) + x=0 + while [ $nr_free -gt 0 ] && [ $old_nr_free != $nr_free ]; do + $XFS_IO_PROG -f -c "pwrite -b 4194304 0 $((blksz * nr_free))" $dir/eat_my_space.$((x++)) + old_nr_free=$nr_free + nr_free=$(stat -f -c '%f' $dir) + done +} + # Attempt to make files of "every" format for data, dirs, attrs etc. # (with apologies to Eric Sandeen for mutating xfser.sh) diff --git a/tests/generic/171 b/tests/generic/171 index b01dbd5..d96fd17 100755 --- a/tests/generic/171 +++ b/tests/generic/171 @@ -41,6 +41,7 @@ _cleanup() . ./common/filter . ./common/attr . ./common/reflink +. ./common/populate # real QA test starts here _supported_os Linux @@ -75,9 +76,7 @@ _cp_reflink $testdir/bigfile $testdir/clonefile sync echo "Allocate the rest of the space" -nr_free=$(stat -f -c '%f' $testdir) -touch $testdir/file0 $testdir/file1 -_pwrite_byte 0x61 0 $((blksz * nr_free)) $testdir/eat_my_space >> $seqres.full 2>&1 +_consume_free_space $testdir >> $seqres.full 2>&1 sync echo "CoW the big file" diff --git a/tests/generic/173 b/tests/generic/173 index e35597f..20c6091 100755 --- a/tests/generic/173 +++ b/tests/generic/173 @@ -41,6 +41,7 @@ _cleanup() . ./common/filter . ./common/attr . ./common/reflink +. ./common/populate # real QA test starts here _supported_os Linux @@ -75,9 +76,7 @@ _cp_reflink $testdir/bigfile $testdir/clonefile sync echo "Allocate the rest of the space" -nr_free=$(stat -f -c '%f' $testdir) -touch $testdir/file0 $testdir/file1 -_pwrite_byte 0x61 0 $((blksz * nr_free)) $testdir/eat_my_space >> $seqres.full 2>&1 +_consume_free_space $testdir >> $seqres.full 2>&1 sync echo "mmap CoW the big file" diff --git a/tests/generic/174 b/tests/generic/174 index 38fad1d..d811307 100755 --- a/tests/generic/174 +++ b/tests/generic/174 @@ -41,6 +41,7 @@ _cleanup() . ./common/filter . ./common/attr . ./common/reflink +. ./common/populate # real QA test starts here _supported_os Linux @@ -76,9 +77,7 @@ _cp_reflink $testdir/bigfile $testdir/clonefile sync echo "Allocate the rest of the space" -nr_free=$(stat -f -c '%f' $testdir) -touch $testdir/file0 $testdir/file1 -_pwrite_byte 0x61 0 $((blksz * nr_free)) $testdir/eat_my_space >> $seqres.full 2>&1 +_consume_free_space $testdir >> $seqres.full 2>&1 sync echo "CoW the big file" diff --git a/tests/generic/282 b/tests/generic/282 index 6452025..8a30811 100755 --- a/tests/generic/282 +++ b/tests/generic/282 @@ -80,8 +80,7 @@ md5sum $testdir/file2 | _filter_scratch echo "CoW and unmount" sync _dmerror_load_error_table -urk=$($XFS_IO_PROG -f -c "mmap -rw 0 $filesize" -c "mwrite -S 0x63 0 $filesize" $testdir/file2 > $TEST_DIR/mwrite.out 2>&1) -cat $TEST_DIR/mwrite.out | tee -a $seqres.full +$XFS_IO_PROG -f -c "mmap -rw 0 $filesize" -c "mwrite -S 0x63 0 $filesize" $testdir/file2 >> $seqres.full 2>&1 _dmerror_load_working_table rm -rf $testdir/file2 >> $seqres.full 2>&1 _dmerror_unmount
Some of the tests try to check that we can't COW when we're out of space, but some tricky filesystems make this hard because writing N blocks doesn't increase used blocks by N.... Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> --- common/populate | 14 ++++++++++++++ tests/generic/171 | 5 ++--- tests/generic/173 | 5 ++--- tests/generic/174 | 5 ++--- tests/generic/282 | 3 +-- 5 files changed, 21 insertions(+), 11 deletions(-)