mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
7e98d41a6e
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>
107 lines
3.0 KiB
Bash
Executable File
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
|