@@ -11,23 +11,75 @@ prepare_test_dev
11
11
12
12
tmp=$( _mktemp_dir mkfs-rootdir)
13
13
14
- run_check touch " $tmp /foo"
15
- run_check mkdir " $tmp /dir"
16
- run_check mkdir " $tmp /dir/subvol"
17
- run_check touch " $tmp /dir/subvol/bar"
14
+ basic ()
15
+ {
16
+ run_check touch " $tmp /foo"
17
+ run_check mkdir " $tmp /dir"
18
+ run_check mkdir " $tmp /dir/subvol"
19
+ run_check touch " $tmp /dir/subvol/bar"
18
20
19
- run_check_mkfs_test_dev --rootdir " $tmp " --subvol dir/subvol
20
- run_check $SUDO_HELPER " $TOP /btrfs" check " $TEST_DEV "
21
+ run_check_mkfs_test_dev --rootdir " $tmp " --subvol dir/subvol
22
+ run_check $SUDO_HELPER " $TOP /btrfs" check " $TEST_DEV "
21
23
22
- run_check_mount_test_dev
23
- run_check_stdout $SUDO_HELPER " $TOP /btrfs" subvolume list " $TEST_MNT " | \
24
+ run_check_mount_test_dev
25
+ run_check_stdout $SUDO_HELPER " $TOP /btrfs" subvolume list " $TEST_MNT " | \
24
26
cut -d\ -f9 > " $tmp /output"
25
- run_check_umount_test_dev
27
+ run_check_umount_test_dev
26
28
27
- result=$( cat " $tmp /output" )
29
+ result=$( cat " $tmp /output" )
28
30
29
- if [ " $result " != " dir/subvol" ]; then
30
- _fail " dir/subvol not in subvolume list"
31
- fi
31
+ if [ " $result " != " dir/subvol" ]; then
32
+ _fail " dir/subvol not in subvolume list"
33
+ fi
34
+ rm -rf -- " $tmp /foo" " $tmp /dir"
35
+ }
32
36
37
+ basic_hardlinks ()
38
+ {
39
+ run_check touch " $tmp /hl1"
40
+ run_check ln " $tmp /hl1" " $tmp /hl2"
41
+ run_check mkdir " $tmp /dir"
42
+ run_check ln " $tmp /hl1" " $tmp /dir/hl3"
43
+
44
+ run_check_mkfs_test_dev --rootdir " $tmp "
45
+ run_check $SUDO_HELPER " $TOP /btrfs" check " $TEST_DEV "
46
+
47
+ run_check_mount_test_dev
48
+ nr_hardlink=$( run_check_stdout $SUDO_HELPER stat -c " %h" " $TEST_MNT /hl1" )
49
+
50
+ if [ " $nr_hardlink " -ne 3 ]; then
51
+ _fail " hard link number incorrect, has ${nr_hardlink} expect 3"
52
+ fi
53
+ run_check_umount_test_dev
54
+ rm -rf -- " $tmp /hl1" " $tmp /hl2" " $tmp /dir"
55
+ }
56
+
57
+ split_by_subvolume_hardlinks ()
58
+ {
59
+ run_check touch " $tmp /hl1"
60
+ run_check ln " $tmp /hl1" " $tmp /hl2"
61
+ run_check mkdir " $tmp /subv"
62
+ run_check ln " $tmp /hl1" " $tmp /subv/hl3"
63
+
64
+ run_check_mkfs_test_dev --rootdir " $tmp " --subvol subv
65
+ run_check $SUDO_HELPER " $TOP /btrfs" check " $TEST_DEV "
66
+
67
+ run_check_mount_test_dev
68
+ nr_hardlink=$( run_check_stdout $SUDO_HELPER stat -c " %h" " $TEST_MNT /hl1" )
69
+
70
+ if [ " $nr_hardlink " -ne 2 ]; then
71
+ _fail " hard link number incorrect for hl1, has ${nr_hardlink} expect 2"
72
+ fi
73
+
74
+ nr_hardlink=$( run_check_stdout $SUDO_HELPER stat -c " %h" " $TEST_MNT /subv/hl3" )
75
+ if [ " $nr_hardlink " -ne 1 ]; then
76
+ _fail " hard link number incorrect for subv/hl3, has ${nr_hardlink} expect 1"
77
+ fi
78
+ run_check_umount_test_dev
79
+ rm -rf -- " $tmp /hl1" " $tmp /hl2" " $tmp /dir"
80
+ }
81
+
82
+ basic
83
+ basic_hardlinks
84
+ split_by_subvolume_hardlinks
33
85
rm -rf -- " $tmp "
0 commit comments