lkml.org 
[lkml]   [2015]   [Jan]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v9 9/11] xfstests: generic/043: Test multiple fallocate insert/collapse range calls
    Date
    From: Namjae Jeon <namjae.jeon@samsung.com>

    This testcase(043) tries to test finsert range a single alternate block
    multiple times and test merge code of collase range.

    Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
    Signed-off-by: Ashish Sangwan <a.sangwan@samsung.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    ---
    Changelog
    v9:
    - check that mkfs and mount succeed.
    - check extent_before and extent_after instead of hardcode 1.
    - remove umount.

    v8:
    - use MKFS_OPTION to use blocksize in configuration and remove loop.
    - remove trailing space.
    - compare original file and test file to check data integrity.

    tests/generic/043 | 96 +++++++++++++++++++++++++++++++++++++++++++++++++
    tests/generic/043.out | 2 ++
    tests/generic/group | 1 +
    3 files changed, 99 insertions(+)
    create mode 100644 tests/generic/043
    create mode 100644 tests/generic/043.out

    diff --git a/tests/generic/043 b/tests/generic/043
    new file mode 100644
    index 0000000..a6f91ce
    --- /dev/null
    +++ b/tests/generic/043
    @@ -0,0 +1,96 @@
    +#! /bin/bash
    +# FS QA Test No. generic/043
    +#
    +# Test multiple fallocate insert/collapse range calls on same file.
    +# Call insert range a single alternate block multiple times until the file
    +# is left with 100 extents and as much number of extents. And Call collapse
    +# range about the previously inserted ranges to test merge code of collapse
    +# range. Also check for data integrity and file system consistency.
    +#-----------------------------------------------------------------------
    +# Copyright (c) 2014 Samsung Electronics. All Rights Reserved.
    +#
    +# This program is free software; you can redistribute it and/or
    +# modify it under the terms of the GNU General Public License as
    +# published by the Free Software Foundation.
    +#
    +# This program is distributed in the hope that it would be useful,
    +# but WITHOUT ANY WARRANTY; without even the implied warranty of
    +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +# GNU General Public License for more details.
    +#
    +# You should have received a copy of the GNU General Public License
    +# along with this program; if not, write the Free Software Foundation,
    +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
    +#
    +#-----------------------------------------------------------------------
    +#
    +
    +seq=`basename $0`
    +seqres=$RESULT_DIR/$seq
    +echo "QA output created by $seq"
    +
    +here=`pwd`
    +tmp=/tmp/$$
    +status=1 # failure is the default!
    +trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
    +
    +# get standard environment, filters and checks
    +. ./common/rc
    +. ./common/filter
    +
    +# real QA test starts here
    +_supported_fs generic
    +_supported_os Linux
    +
    +_require_scratch
    +_require_xfs_io_command "fiemap"
    +_require_xfs_io_command "finsert"
    +_require_xfs_io_command "fcollapse"
    +_do_die_on_error=always
    +src=$SCRATCH_MNT/testfile
    +dest=$SCRATCH_MNT/testfile.dest
    +BLOCKS=100
    +BSIZE=`get_block_size $SCRATCH_MNT`
    +rm -f $seqres.full
    +
    +_scratch_mkfs >> $seqres.full 2>&1 || _fail "mkfs failed"
    +_scratch_mount || _fail "mount failed"
    +length=$(($BLOCKS * $BSIZE))
    +
    +# Write file
    +_do "$XFS_IO_PROG -f -c \"pwrite 0 $length\" -c fsync $src"
    +cp $src $dest
    +extent_before=`$XFS_IO_PROG -c "fiemap -v" $dest | grep "^ *[0-9]*:" |wc -l`
    +
    +# Insert alternate blocks
    +for (( j=0; j < $(($BLOCKS/2)); j++ )); do
    + offset=$((($j*$BSIZE)*2))
    + _do "$XFS_IO_PROG -c \"finsert $offset $BSIZE\" $dest"
    +done
    +
    +# Check if 100 extents are present
    +$XFS_IO_PROG -c "fiemap -v" $dest | grep "^ *[0-9]*:" |wc -l
    +
    +_check_scratch_fs
    +if [ $? -ne 0 ]; then
    + status=1
    + exit
    +fi
    +
    +# Collapse alternate blocks
    +for (( j=0; j < $(($BLOCKS/2)); j++ )); do
    + offset=$((($j*$BSIZE)))
    + _do "$XFS_IO_PROG -c \"fcollapse $offset $BSIZE\" $dest"
    +done
    +
    +extent_after=`$XFS_IO_PROG -c "fiemap -v" $dest | grep "^ *[0-9]*:" |wc -l`
    +if [ $extent_before -ne $extent_after ]; then
    + echo "extents mismatched before = $extent_before after = $extent_after"
    +fi
    +
    +# compare original file and test file.
    +cmp $src $dest || _fail "file bytes check failed"
    +
    +# success, all done
    +status=0
    +exit
    diff --git a/tests/generic/043.out b/tests/generic/043.out
    new file mode 100644
    index 0000000..28427c5
    --- /dev/null
    +++ b/tests/generic/043.out
    @@ -0,0 +1,2 @@
    +QA output created by 043
    +100
    diff --git a/tests/generic/group b/tests/generic/group
    index c0944b3..0a10bdd 100644
    --- a/tests/generic/group
    +++ b/tests/generic/group
    @@ -45,6 +45,7 @@
    040 auto quick prealloc
    041 auto quick prealloc
    042 auto quick prealloc
    +043 auto quick prealloc
    053 acl repair auto quick
    062 attr udf auto quick
    068 other auto freeze dangerous stress
    --
    1.7.9.5


    \
     
     \ /
      Last update: 2015-01-21 16:21    [W:8.045 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site