summaryrefslogtreecommitdiff
path: root/test/shell/stress_multi_threads_1.sh
blob: c5695eb0b4123e463411680c965217a720f36911 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#!/usr/bin/env bash

# Copyright (C) 2021 Seagate, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing to use,
# modify, copy, or redistribute it subject to the terms and conditions
# of the GNU General Public License v2.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA


SKIP_WITH_LVMPOLLD=1

. lib/inittest

[ -z "$LVM_TEST_LOCK_TYPE_IDM" ] && skip;

aux prepare_devs 6
get_devs

pvcreate -M2 "${DEVICES[@]}"

vgcreate $SHARED -M2 "$vg1" "$dev1" "$dev2" "$dev3"
vgcreate $SHARED -M2 "$vg2" "$dev4" "$dev5" "$dev6"

test_vg_thread1()
{
	for i in {1..1000}
	do
		# Create new logic volume and deactivate it
		lvcreate -a n --zero n -l 1 -n foo $vg1

		# Set minor number
		lvchange $vg1/foo -My --major=255 --minor=123

		# Activate logic volume
		lvchange $vg1/foo -a y

		# Extend logic volume with 10%
		lvextend -l+10 $vg1/foo

		# Deactivate logic volume
		lvchange $vg1/foo -a n

		# Deactivate volume group
		vgchange $vg1 -a n

		# Activate volume group with shareable mode
		vgchange $vg1 -a sy

		# lvextend fails due to mismatched lock mode
		not lvextend -l+10 $vg1/foo

		# Promote volume group to exclusive mode
		vgchange $vg1 -a ey

		lvreduce -f -l-4 $vg1/foo

		lvchange -an $vg1/foo
		lvremove $vg1/foo
	done
}

test_vg_thread2()
{
	for i in {1..1000}
	do
		# Create new logic volume and deactivate it
		lvcreate -a n --zero n -l 1 -n foo $vg2

		# Set minor number
		lvchange $vg2/foo -My --major=255 --minor=124

		# Activate logic volume
		lvchange $vg2/foo -a y

		# Extend logic volume with 10%
		lvextend -l+10 $vg2/foo

		# Deactivate logic volume
		lvchange $vg2/foo -a n

		# Deactivate volume group
		vgchange $vg2 -a n

		# Activate volume group with shareable mode
		vgchange $vg2 -a sy

		# lvextend fails due to mismatched lock mode
		not lvextend -l+10 $vg2/foo

		# Promote volume group to exclusive mode
		vgchange $vg2 -a ey

		lvreduce -f -l-4 $vg2/foo

		lvchange -an $vg2/foo
		lvremove $vg2/foo
	done
}

test_vg_thread1 &
WAITPID=$!

test_vg_thread2 &
WAITPID="$WAITPID "$!

wait $WAITPID

vgremove -ff $vg1
vgremove -ff $vg2