Files
apfstests/tests/btrfs/039
T
Darrick J. Wong 7e98d41a6e fstests: move test group info to test files
Refactor every test in the entire test suite to use the new boilerplate
functions.  This also migrates all the test group information into the
test files.  This patch has been autogenerated via the command:

./tools/convert-group btrfs ceph cifs ext4 f2fs generic nfs ocfs2 overlay perf shared udf xfs

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
2021-06-27 22:50:02 +08:00

107 lines
3.0 KiB
Bash
Executable File

#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2014 Filipe Manana. All Rights Reserved.
#
# FS QA Test No. btrfs/039
#
# Regression test for a btrfs incremental send issue related to renaming of
# directories. If at the time of the initial send we have a directory that is
# a child of a directory with a higher inode number, and then later after the
# initial full send we rename both the child and parent directories, but
# without moving any of them, a subsequent incremental send would produce a
# rename instruction for the child directory that pointed to an invalid path.
# This made the btrfs receive operation fail.
#
# This issue is fixed by the following linux kernel btrfs patch:
#
# Btrfs: incremental send, fix invalid path after dir rename
#
. ./common/preamble
_begin_fstest auto quick send
tmp=`mktemp -d`
# Override the default cleanup function.
_cleanup()
{
rm -fr $tmp
}
# Import common functions.
. ./common/filter
# real QA test starts here
_supported_fs btrfs
_require_scratch
_require_fssum
_scratch_mkfs >/dev/null 2>&1
_scratch_mount
mkdir -p $SCRATCH_MNT/a/b
mkdir $SCRATCH_MNT/d
mkdir $SCRATCH_MNT/a/b/c
mv $SCRATCH_MNT/d $SCRATCH_MNT/a/b/c
mkdir $SCRATCH_MNT/e
mkdir -p $SCRATCH_MNT/a/b/f/g
mv $SCRATCH_MNT/e $SCRATCH_MNT/a/b/f/g
# Filesystem looks like:
#
# . (ino 256)
# |-- a (ino 257)
# |-- b (ino 258)
# |-- c (ino 260)
# | |-- d (ino 259)
# |
# |-- f (ino 262)
# |-- g (ino 263)
# |-- e (ino 261)
_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap1
mv $SCRATCH_MNT/a/b/c $SCRATCH_MNT/a/b/x
mv $SCRATCH_MNT/a/b/x/d $SCRATCH_MNT/a/b/x/y
mv $SCRATCH_MNT/a/b/f $SCRATCH_MNT/a/b/w
mv $SCRATCH_MNT/a/b/w/g/e $SCRATCH_MNT/a/b/w/g/z
# Filesystem now looks like:
#
# . (ino 256)
# |-- a (ino 257)
# |-- b (ino 258)
# |-- x (ino 260)
# | |-- y (ino 259)
# |
# |-- w (ino 262)
# |-- g (ino 263)
# |-- z (ino 261)
_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 \
$SCRATCH_MNT/mysnap2
_run_btrfs_util_prog send -f $tmp/1.snap $SCRATCH_MNT/mysnap1
_run_btrfs_util_prog send -p $SCRATCH_MNT/mysnap1 -f $tmp/2.snap \
$SCRATCH_MNT/mysnap2
_scratch_unmount
_check_btrfs_filesystem $SCRATCH_DEV
_scratch_mkfs >/dev/null 2>&1
_scratch_mount
_run_btrfs_util_prog receive -f $tmp/1.snap $SCRATCH_MNT
run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1 2>> $seqres.full
_run_btrfs_util_prog receive -f $tmp/2.snap $SCRATCH_MNT
run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2 2>> $seqres.full
_scratch_unmount
_check_btrfs_filesystem $SCRATCH_DEV
status=0
exit