mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
2dd0dbe3f8
To avoid repeating detection of fssum presence in many btrfs tests, as suggested by Dave Chinner. Also exported the variable "here" from the main control script, to avoid repeating its declaration in every single testcase file. Also removed the declaration of "here" from btrfs test cases that require the fssum program only. Removing it from all other test cases will be a separate change. Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
117 lines
3.7 KiB
Bash
Executable File
117 lines
3.7 KiB
Bash
Executable File
#! /bin/bash
|
|
# FS QA Test No. btrfs/038
|
|
#
|
|
# Test for a btrfs incremental send issue where we end up sending a
|
|
# wrong section of data from a file extent if the corresponding file
|
|
# extent is compressed and the respective file extent item has a non
|
|
# zero data offset.
|
|
#
|
|
# Fixed by the following linux kernel btrfs patch:
|
|
#
|
|
# Btrfs: use right clone root offset for compressed extents
|
|
#
|
|
#-----------------------------------------------------------------------
|
|
# Copyright (c) 2014 Filipe Manana. 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"
|
|
|
|
tmp=`mktemp -d`
|
|
status=1 # failure is the default!
|
|
trap "_cleanup; exit \$status" 0 1 2 3 15
|
|
|
|
_cleanup()
|
|
{
|
|
rm -fr $tmp
|
|
}
|
|
|
|
# get standard environment, filters and checks
|
|
. ./common/rc
|
|
. ./common/filter
|
|
|
|
# real QA test starts here
|
|
_supported_fs btrfs
|
|
_supported_os Linux
|
|
_require_scratch
|
|
_require_fssum
|
|
_need_to_be_root
|
|
|
|
rm -f $seqres.full
|
|
|
|
_scratch_mkfs >/dev/null 2>&1
|
|
_scratch_mount "-o compress-force=lzo"
|
|
|
|
$XFS_IO_PROG -f -c "truncate 118811" $SCRATCH_MNT/foo
|
|
$XFS_IO_PROG -c "pwrite -S 0x0d -b 39987 92267 39987" \
|
|
$SCRATCH_MNT/foo | _filter_xfs_io
|
|
|
|
_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT \
|
|
$SCRATCH_MNT/mysnap1
|
|
|
|
$XFS_IO_PROG -c "pwrite -S 0x3e -b 80000 200000 80000" \
|
|
$SCRATCH_MNT/foo | _filter_xfs_io
|
|
|
|
# Sync to avoid btrfs merging file extent items, which would make the test
|
|
# succeed when it should fail.
|
|
_run_btrfs_util_prog filesystem sync $SCRATCH_MNT
|
|
|
|
$XFS_IO_PROG -c "pwrite -S 0xdc -b 10000 250000 10000" \
|
|
$SCRATCH_MNT/foo | _filter_xfs_io
|
|
$XFS_IO_PROG -c "pwrite -S 0xff -b 10000 300000 10000" \
|
|
$SCRATCH_MNT/foo | _filter_xfs_io
|
|
|
|
# will be used for incremental send to be able to issue clone operations
|
|
_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT \
|
|
$SCRATCH_MNT/clones_snap
|
|
|
|
_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT \
|
|
$SCRATCH_MNT/mysnap2
|
|
|
|
run_check $FSSUM_PROG -A -f -w $tmp/1.fssum $SCRATCH_MNT/mysnap1
|
|
run_check $FSSUM_PROG -A -f -w $tmp/2.fssum -x $SCRATCH_MNT/mysnap2/mysnap1 \
|
|
-x $SCRATCH_MNT/mysnap2/clones_snap $SCRATCH_MNT/mysnap2
|
|
run_check $FSSUM_PROG -A -f -w $tmp/clones.fssum $SCRATCH_MNT/clones_snap \
|
|
-x $SCRATCH_MNT/clones_snap/mysnap1 -x $SCRATCH_MNT/clones_snap/mysnap2
|
|
|
|
_run_btrfs_util_prog send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap
|
|
_run_btrfs_util_prog send $SCRATCH_MNT/clones_snap -f $tmp/clones.snap
|
|
_run_btrfs_util_prog send -p $SCRATCH_MNT/mysnap1 \
|
|
-c $SCRATCH_MNT/clones_snap $SCRATCH_MNT/mysnap2 -f $tmp/2.snap
|
|
|
|
_scratch_unmount
|
|
_check_btrfs_filesystem $SCRATCH_DEV
|
|
|
|
_scratch_mkfs >/dev/null 2>&1
|
|
_scratch_mount
|
|
|
|
_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/1.snap
|
|
run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1 2>> $seqres.full
|
|
|
|
_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/clones.snap
|
|
run_check $FSSUM_PROG -r $tmp/clones.fssum $SCRATCH_MNT/clones_snap 2>> $seqres.full
|
|
|
|
_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/2.snap
|
|
run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2 2>> $seqres.full
|
|
|
|
_scratch_unmount
|
|
_check_btrfs_filesystem $SCRATCH_DEV
|
|
|
|
status=0
|
|
exit
|