btrfs/057: Fix false alerts due to orphan files
[xfstests-dev.git] / tests / btrfs / 001
1 #! /bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (c) 2011 Red Hat.  All Rights Reserved.
4 #
5 # FS QA Test No. btrfs/001
6 #
7 # Test btrfs's subvolume and snapshot support
8 #
9 seq=`basename $0`
10 seqres=$RESULT_DIR/$seq
11 echo "QA output created by $seq"
12
13 here=`pwd`
14 tmp=/tmp/$$
15 status=1        # failure is the default!
16
17 _cleanup()
18 {
19     rm -f $tmp.*
20 }
21
22 trap "_cleanup ; exit \$status" 0 1 2 3 15
23
24 # get standard environment, filters and checks
25 . ./common/rc
26 . ./common/filter
27 . ./common/filter.btrfs
28
29 # real QA test starts here
30 _supported_fs btrfs
31 _supported_os Linux
32 _require_scratch
33
34 _scratch_mkfs > /dev/null 2>&1
35 _scratch_mount
36
37 # First test basic snapshotting
38 echo "Creating file foo in root dir"
39 dd if=/dev/zero of=$SCRATCH_MNT/foo bs=1M count=1 &> /dev/null
40 echo "List root dir"
41 ls $SCRATCH_MNT
42 echo "Creating snapshot of root dir"
43 $BTRFS_UTIL_PROG subvolume snapshot $SCRATCH_MNT $SCRATCH_MNT/snap | _filter_scratch
44 echo "List root dir after snapshot"
45 ls $SCRATCH_MNT
46 echo "List snapshot dir"
47 ls $SCRATCH_MNT/snap
48 rm -f $SCRATCH_MNT/foo
49 echo "List root dir after rm of foo"
50 ls $SCRATCH_MNT
51 echo "List snapshot dir"
52 ls $SCRATCH_MNT/snap
53
54 # Test creating a normal subvolme
55 $BTRFS_UTIL_PROG subvolume create $SCRATCH_MNT/subvol | _filter_scratch
56 echo "Listing root dir"
57 ls $SCRATCH_MNT
58 echo "Listing subvol"
59 ls $SCRATCH_MNT/subvol
60
61 # Test setting a default mount
62 echo "Creating file bar in subvol"
63 dd if=/dev/zero of=$SCRATCH_MNT/subvol/bar bs=1M count=1 &> /dev/null
64 echo "Setting subvol to the default"
65 subvolid=$(_btrfs_get_subvolid $SCRATCH_MNT subvol)
66 $BTRFS_UTIL_PROG subvolume set-default $subvolid $SCRATCH_MNT | _filter_scratch
67 _scratch_cycle_mount
68 echo "List root dir which is now subvol"
69 ls $SCRATCH_MNT
70 _scratch_unmount
71 echo "Mounting sbuvolid=0 for the root dir"
72 _scratch_mount "-o subvolid=0"
73 echo "List root dir"
74 ls $SCRATCH_MNT
75 echo "Setting the root dir as the default again"
76 $BTRFS_UTIL_PROG subvolume set-default 0 $SCRATCH_MNT | _filter_scratch
77 _scratch_cycle_mount
78 echo "List root dir"
79 ls $SCRATCH_MNT
80
81 # Test listing the subvolumes
82 echo "Listing subvolumes"
83 $BTRFS_UTIL_PROG subvolume list $SCRATCH_MNT | awk '{ print $NF }'
84
85 # Delete the snapshot
86 $BTRFS_UTIL_PROG subvolume delete $SCRATCH_MNT/snap | _filter_btrfs_subvol_delete
87 echo "List root dir"
88 ls $SCRATCH_MNT
89 _scratch_cycle_mount
90 echo "List root dir"
91 ls $SCRATCH_MNT
92
93 status=0 ; exit