summaryrefslogtreecommitdiff
path: root/test/shell/lvchange-vdo.sh
blob: b11edf35c92e1d8ac4202de3cea6d51816e63bcf (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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#!/usr/bin/env bash

# Copyright (C) 2018 Red Hat, 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 v.2.
#
# 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

aux have_vdo 6 2 0 || skip

aux prepare_vg 2 6400

lvcreate --vdo -L5G -n $lv1 $vg/vdopool

# deduplication_ARG  (default is 'yes')
# compression_ARG  (default is 'yes')

# Wait till index gets openned
for i in {1..10} ; do
	sleep .1
	check grep_dmsetup status $vg-vdopool-vpool " online online " || continue
	break
done


# compression_ARG
lvchange --compression n $vg/vdopool
check grep_dmsetup status $vg-vdopool-vpool " online offline "
lvchange --compression y $vg/vdopool
check grep_dmsetup status $vg-vdopool-vpool " online online "

# dedulication_ARG
lvchange --deduplication n $vg/vdopool
check grep_dmsetup status $vg-vdopool-vpool -E " offline|closed online "

lvchange --deduplication y $vg/vdopool
check grep_dmsetup status $vg-vdopool-vpool -E " online|opening online "


lvchange --compression n --deduplication n $vg/vdopool
check grep_dmsetup status $vg-vdopool-vpool -E " offline|closed offline "

# --vdosettings needs inactive LV
not lvchange --vdosettings 'ack_threads=8' $vg/vdopool

lvchange -an $vg/$lv1

# With inactive vdo-pool changes are applied
# explicit option --compression has highest priority
lvchange --vdosettings 'ack_threads=5 compression=0' --compression y $vg/vdopool
check lv_field $vg/$lv1 vdo_ack_threads "5"
check lv_field $vg/$lv1 vdo_compression "enabled"

# Test activation
lvchange -aly $vg/$lv1
check active $vg $lv1

lvchange -aln $vg/$lv1
check inactive $vg $lv1

# Test for allowable changes
#
# contiguous_ARG
lvchange -C y $vg/$lv1
lvchange -C n $vg/$lv1

# permission_ARG
lvchange -p r $vg/$lv1
lvchange -p rw $vg/$lv1

# FIXME
#should lvchange -p r $vg/vdopool
#should lvchange -p rw $vg/vdopool

# readahead_ARG
lvchange -r none $vg/$lv1
lvchange -r auto $vg/$lv1
# FIXME
# Think about more support

# minor_ARG
lvchange --yes -M y --minor 234 --major 253 $vg/$lv1
lvchange -M n $vg/$lv1

# cannot change major minor for pools
not lvchange --yes -M y --minor 235 --major 253 $vg/vdopool
not lvchange -M n $vg/vdopool

# addtag_ARG
lvchange --addtag foo $vg/$lv1
lvchange --addtag foo $vg/vdopool

# deltag_ARG
lvchange --deltag foo $vg/$lv1
lvchange --deltag foo $vg/vdopool


#
# Test for disallowed metadata changes
#
# resync_ARG
not lvchange --resync $vg/$lv1

# alloc_ARG
#not lvchange --alloc anywhere $vg/$lv1

# discards_ARG
not lvchange --discards ignore $vg/$lv1

# zero_ARG
not lvchange --zero y $vg/$lv1


#
# Ensure that allowed args don't cause disallowed args to get through
#
not lvchange --resync -ay $vg/$lv1
not lvchange --resync --addtag foo $vg/$lv1

# Check activation of VDO alone works (like for thin-pools)
lvchange -an $vg

lvchange -ay $vg/vdopool
check active $vg vdopool
check inactive $vg $lv1

lvchange -ay $vg/$lv1
check active $vg $lv1

lvchange -an $vg/$lv1
check active $vg vdopool
check inactive $vg $lv1

lvchange -ay $vg/$lv1
lvchange -an $vg/vdopool
lvchange -an $vg/$lv1
check inactive $vg vdopool

#
# Play with tags and activation
#
TAG=$(uname -n)
aux lvmconf "activation/volume_list = [ \"$vg/$lv2\", \"@mytag\" ]"

lvchange -ay $vg/$lv1
check inactive $vg $lv1

lvchange --addtag mytag $vg/$lv1

lvchange -ay @mytag_fake
check inactive $vg $lv1

lvchange -ay $vg/$lv1
# Volume has matching tag
check active $vg $lv1
lvchange -an $vg/$lv1

lvchange -ay @mytag
check active $vg $lv1

vgremove -ff $vg