fstests: move test group info to test files
[xfstests-dev.git] / tests / btrfs / 043
1 #! /bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (c) 2014 Filipe Manana.  All Rights Reserved.
4 #
5 # FS QA Test No. btrfs/043
6 #
7 # Regression test for btrfs incremental send issue where a rmdir instruction
8 # is sent against an orphan directory inode which is not empty yet, causing
9 # btrfs receive to fail when it attempts to remove the directory.
10 #
11 # This issue is fixed by the following linux kernel btrfs patch:
12 #
13 #   Btrfs: fix send attempting to rmdir non-empty directories
14 #
15 . ./common/preamble
16 _begin_fstest auto quick send
17
18 tmp=`mktemp -d`
19
20 # Override the default cleanup function.
21 _cleanup()
22 {
23     rm -fr $tmp
24 }
25
26 # Import common functions.
27 . ./common/filter
28
29 # real QA test starts here
30 _supported_fs btrfs
31 _require_scratch
32 _require_fssum
33
34 _scratch_mkfs >/dev/null 2>&1
35 _scratch_mount
36
37 mkdir -p $SCRATCH_MNT/a/b
38 mkdir $SCRATCH_MNT/0
39 mkdir $SCRATCH_MNT/1
40 mkdir $SCRATCH_MNT/a/b/c
41 mv $SCRATCH_MNT/0 $SCRATCH_MNT/a/b/c
42 mv $SCRATCH_MNT/1 $SCRATCH_MNT/a/b/c
43 echo 'ola mundo' > $SCRATCH_MNT/a/b/c/foo.txt
44 mkdir $SCRATCH_MNT/a/b/c/x
45 mkdir $SCRATCH_MNT/a/b/c/x2
46 mkdir $SCRATCH_MNT/a/b/y
47 mkdir $SCRATCH_MNT/a/b/z
48 mkdir -p $SCRATCH_MNT/a/b/d1/d2/d3
49 mkdir $SCRATCH_MNT/a/b/d4
50
51 # Filesystem looks like:
52 #
53 # .                        (ino 256)
54 # |-- a/                   (ino 257)
55 #     |-- b/               (ino 258)
56 #         |-- c/           (ino 261)
57 #         |   |-- foo.txt  (ino 262)
58 #         |   |-- 0/       (ino 259)
59 #         |   |-- 1/       (ino 260)
60 #         |   |-- x/       (ino 263)
61 #         |   |-- x2/      (ino 264)
62 #         |
63 #         |-- y/           (ino 265)
64 #         |-- z/           (ino 266)
65 #         |-- d1/          (ino 267)
66 #         |   |-- d2/      (ino 268)
67 #         |       |-- d3/  (ino 269)
68 #         |
69 #         |-- d4/          (ino 270)
70
71 _run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap1
72
73 rm -f $SCRATCH_MNT/a/b/c/foo.txt
74 mv $SCRATCH_MNT/a/b/y $SCRATCH_MNT/a/b/YY
75 mv $SCRATCH_MNT/a/b/z $SCRATCH_MNT/a
76 mv $SCRATCH_MNT/a/b/c/x $SCRATCH_MNT/a/b/YY
77 mv $SCRATCH_MNT/a/b/c/0 $SCRATCH_MNT/a/b/YY/00
78 mv $SCRATCH_MNT/a/b/c/x2 $SCRATCH_MNT/a/z/X_2
79 mv $SCRATCH_MNT/a/b/c/1 $SCRATCH_MNT/a/z/X_2
80 rmdir $SCRATCH_MNT/a/b/c
81 mv $SCRATCH_MNT/a/b/d4 $SCRATCH_MNT/a/d44
82 mv $SCRATCH_MNT/a/b/d1/d2 $SCRATCH_MNT/a/d44
83 rmdir $SCRATCH_MNT/a/b/d1
84
85 # Filesystem now looks like:
86 #
87 # .                        (ino 256)
88 # |-- a/                   (ino 257)
89 #     |-- b/               (ino 258)
90 #     |   |-- YY/          (ino 265)
91 #     |        |-- x/      (ino 263)
92 #     |        |-- 00/     (ino 259)
93 #     |
94 #     |-- z/               (ino 266)
95 #     |   |-- X_2/         (ino 264)
96 #     |        |-- 1/      (ino 260)
97 #     |
98 #     |-- d44/             (ino 270)
99 #          |-- d2/         (ino 268)
100 #              |-- d3/     (ino 269)
101
102 _run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap2
103
104 run_check $FSSUM_PROG -A -f -w $tmp/1.fssum $SCRATCH_MNT/mysnap1
105 run_check $FSSUM_PROG -A -f -w $tmp/2.fssum -x $SCRATCH_MNT/mysnap2/mysnap1 \
106         $SCRATCH_MNT/mysnap2
107
108 _run_btrfs_util_prog send -f $tmp/1.snap $SCRATCH_MNT/mysnap1
109 _run_btrfs_util_prog send -p $SCRATCH_MNT/mysnap1 -f $tmp/2.snap \
110         $SCRATCH_MNT/mysnap2
111
112 _check_scratch_fs
113
114 _scratch_unmount
115 _scratch_mkfs >/dev/null 2>&1
116 _scratch_mount
117
118 _run_btrfs_util_prog receive -f $tmp/1.snap $SCRATCH_MNT
119 run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1
120
121 _run_btrfs_util_prog receive -f $tmp/2.snap $SCRATCH_MNT
122 run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2
123
124 status=0
125 exit