btrfs: source common/module when requiring module reload
[xfstests-dev.git] / tests / btrfs / 225
1 #! /bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (c) 2020 Oracle. All Rights Reserved.
4 #
5 # FS QA Test 225
6 #
7 # Test for seed device-delete on a sprouted FS.
8 # Requires kernel patch
9 #    b5ddcffa3777  btrfs: fix put of uninitialized kobject after seed device delete
10 #
11 # Steps:
12 #  Create a seed FS. Add a RW device to make it sprout FS and then delete
13 #  the seed device.
14
15 . ./common/preamble
16 _begin_fstest auto quick volume seed
17
18 # Override the default cleanup function.
19 _cleanup()
20 {
21         cd /
22         rm -f $tmp.*
23         _btrfs_rescan_devices
24 }
25
26 # Import common functions.
27 . ./common/filter
28 . ./common/module
29
30 # real QA test starts here
31
32 # Modify as appropriate.
33 _supported_fs btrfs
34 _require_test
35 _require_scratch_dev_pool 2
36 _require_btrfs_forget_or_module_loadable
37
38 _scratch_dev_pool_get 2
39
40 seed=$(echo $SCRATCH_DEV_POOL | $AWK_PROG '{print $1}')
41 sprout=$(echo $SCRATCH_DEV_POOL | $AWK_PROG '{print $2}')
42
43 _mkfs_dev $seed
44 _mount $seed $SCRATCH_MNT
45
46 $XFS_IO_PROG -f -c "pwrite -S 0xab 0 1M" $SCRATCH_MNT/foo > /dev/null
47 _scratch_unmount
48 $BTRFS_TUNE_PROG -S 1 $seed
49
50 # Mount the seed device and add the rw device
51 _mount -o ro $seed $SCRATCH_MNT
52 $BTRFS_UTIL_PROG device add -f $sprout $SCRATCH_MNT
53 _scratch_unmount
54
55 # Now remount
56 _mount $sprout $SCRATCH_MNT
57 $XFS_IO_PROG -f -c "pwrite -S 0xcd 0 1M" $SCRATCH_MNT/bar > /dev/null
58
59 echo --- before delete ----
60 od -x $SCRATCH_MNT/foo
61 od -x $SCRATCH_MNT/bar
62
63 $BTRFS_UTIL_PROG device delete $seed $SCRATCH_MNT
64 _scratch_unmount
65 _btrfs_forget_or_module_reload
66 _mount $sprout $SCRATCH_MNT
67
68 echo --- after delete ----
69 od -x $SCRATCH_MNT/foo
70 od -x $SCRATCH_MNT/bar
71
72 _scratch_dev_pool_put
73 _btrfs_rescan_devices
74
75 # success, all done
76 status=0
77 exit