xfs: test getbmapx shared extent reporting

Test that getbmapx returns exact shared extents.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
This commit is contained in:
Darrick J. Wong
2016-08-25 16:29:30 -07:00
committed by Eryu Guan
parent c49136ef66
commit 06d400134e
3 changed files with 111 additions and 0 deletions
Executable
+93
View File
@@ -0,0 +1,93 @@
#! /bin/bash
# FS QA Test No. 280
#
# Check that GETBMAPX accurately report shared extents.
#
#-----------------------------------------------------------------------
# Copyright (c) 2016 Oracle, Inc. 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 "_cleanup; exit \$status" 0 1 2 3 7 15
_cleanup()
{
cd /
rm -rf $tmp.*
}
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
. ./common/reflink
# real QA test starts here
_supported_os Linux
_supported_fs xfs
_require_scratch_reflink
_require_xfs_io_command "bmap"
echo "Format and mount"
_scratch_mkfs > $seqres.full 2>&1
_scratch_mount >> $seqres.full 2>&1
testdir=$SCRATCH_MNT/test-$seq
mkdir $testdir
blocks=5
blksz=65536
sz=$((blocks * blksz))
echo "Create the original files"
$XFS_IO_PROG -f -c "falloc 0 $sz" $testdir/file1 >> $seqres.full
_pwrite_byte 0x61 0 $sz $testdir/file1 >> $seqres.full
_scratch_cycle_mount
bmap() {
$XFS_IO_PROG -c 'bmap -v' $1 | grep '^[[:space:]]*[0-9]*:'
}
echo "file1 extents and holes"
bmap $testdir/file1 | grep -v -c hole
bmap $testdir/file1 | grep -c hole
_reflink_range $testdir/file1 $blksz $testdir/file2 $((blksz * 3)) $blksz >> $seqres.full
_reflink_range $testdir/file1 $((blksz * 3)) $testdir/file2 $blksz $blksz >> $seqres.full
_scratch_cycle_mount
echo "Compare files"
md5sum $testdir/file1 | _filter_scratch
md5sum $testdir/file2 | _filter_scratch
echo "file1 extents and holes"
bmap $testdir/file1 | grep -v -c hole
bmap $testdir/file1 | grep -c hole
echo "file2 extents and holes"
bmap $testdir/file2 | grep -v -c hole
bmap $testdir/file2 | grep -c hole
echo "file1 shared extents"
bmap $testdir/file1 | grep -c '1.....$'
# success, all done
status=0
exit
+17
View File
@@ -0,0 +1,17 @@
QA output created by 280
Format and mount
Create the original files
file1 extents and holes
1
0
Compare files
17af09af790a9b4c79cddf72f6b642cb SCRATCH_MNT/test-280/file1
79418df9c55ab7f58781cb7b9e7d5d91 SCRATCH_MNT/test-280/file2
file1 extents and holes
5
0
file2 extents and holes
2
2
file1 shared extents
2
+1
View File
@@ -277,6 +277,7 @@
277 auto quick rmap fsmap 277 auto quick rmap fsmap
278 repair auto 278 repair auto
279 auto mkfs 279 auto mkfs
280 auto quick clone
281 dump ioctl auto quick 281 dump ioctl auto quick
282 dump ioctl auto quick 282 dump ioctl auto quick
283 dump ioctl auto quick 283 dump ioctl auto quick