1*86d7f5d3SJohn Marino# Copyright (C) 2008 Red Hat, Inc. All rights reserved.
2*86d7f5d3SJohn Marino# Copyright (C) 2007 NEC Corporation
3*86d7f5d3SJohn Marino#
4*86d7f5d3SJohn Marino# This copyrighted material is made available to anyone wishing to use,
5*86d7f5d3SJohn Marino# modify, copy, or redistribute it subject to the terms and conditions
6*86d7f5d3SJohn Marino# of the GNU General Public License v.2.
7*86d7f5d3SJohn Marino#
8*86d7f5d3SJohn Marino# You should have received a copy of the GNU General Public License
9*86d7f5d3SJohn Marino# along with this program; if not, write to the Free Software Foundation,
10*86d7f5d3SJohn Marino# Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
11*86d7f5d3SJohn Marino
12*86d7f5d3SJohn Marino. ./test-utils.sh
13*86d7f5d3SJohn Marino
14*86d7f5d3SJohn Marinodmsetup_has_dm_devdir_support_ || exit 200
15*86d7f5d3SJohn Marino
16*86d7f5d3SJohn Marinomimages_are_redundant_ ()
17*86d7f5d3SJohn Marino{
18*86d7f5d3SJohn Marino  local vg=$1
19*86d7f5d3SJohn Marino  local lv=$vg/$2
20*86d7f5d3SJohn Marino  local i
21*86d7f5d3SJohn Marino
22*86d7f5d3SJohn Marino  rm -f out
23*86d7f5d3SJohn Marino  for i in $(lvs -odevices --noheadings $lv | sed 's/([^)]*)//g; s/,/ /g'); do
24*86d7f5d3SJohn Marino    lvs -a -odevices --noheadings $vg/$i | sed 's/([^)]*)//g; s/,/ /g' | \
25*86d7f5d3SJohn Marino      sort | uniq >> out
26*86d7f5d3SJohn Marino  done
27*86d7f5d3SJohn Marino
28*86d7f5d3SJohn Marino  # if any duplication is found, it's not redundant
29*86d7f5d3SJohn Marino  sort out | uniq -d | grep . && return 1
30*86d7f5d3SJohn Marino
31*86d7f5d3SJohn Marino  return 0
32*86d7f5d3SJohn Marino}
33*86d7f5d3SJohn Marino
34*86d7f5d3SJohn Marinolv_is_contiguous_ ()
35*86d7f5d3SJohn Marino{
36*86d7f5d3SJohn Marino  local lv=$1
37*86d7f5d3SJohn Marino
38*86d7f5d3SJohn Marino  # if the lv has multiple segments, it's not contiguous
39*86d7f5d3SJohn Marino  [ $(lvs -a --segments --noheadings $lv | wc -l) -ne 1 ] && return 1
40*86d7f5d3SJohn Marino
41*86d7f5d3SJohn Marino  return 0
42*86d7f5d3SJohn Marino}
43*86d7f5d3SJohn Marino
44*86d7f5d3SJohn Marinomimages_are_contiguous_ ()
45*86d7f5d3SJohn Marino{
46*86d7f5d3SJohn Marino  local vg=$1
47*86d7f5d3SJohn Marino  local lv=$vg/$2
48*86d7f5d3SJohn Marino  local i
49*86d7f5d3SJohn Marino
50*86d7f5d3SJohn Marino  for i in $(lvs -odevices --noheadings $lv | sed 's/([^)]*)//g; s/,/ /g'); do
51*86d7f5d3SJohn Marino    lv_is_contiguous_ $vg/$i || return 1
52*86d7f5d3SJohn Marino  done
53*86d7f5d3SJohn Marino
54*86d7f5d3SJohn Marino  return 0
55*86d7f5d3SJohn Marino}
56*86d7f5d3SJohn Marino
57*86d7f5d3SJohn Marinomirrorlog_is_on_()
58*86d7f5d3SJohn Marino{
59*86d7f5d3SJohn Marino  local lv="$1"_mlog
60*86d7f5d3SJohn Marino  shift 1
61*86d7f5d3SJohn Marino  lvs -a -odevices --noheadings $lv | sed 's/,/\n/g' > out
62*86d7f5d3SJohn Marino  for d in $*; do grep "$d(" out || return 1; done
63*86d7f5d3SJohn Marino  for d in $*; do grep -v "$d(" out > out2 || true; mv out2 out; done
64*86d7f5d3SJohn Marino  grep . out && return 1
65*86d7f5d3SJohn Marino  return 0
66*86d7f5d3SJohn Marino}
67*86d7f5d3SJohn Marino
68*86d7f5d3SJohn Marinosave_dev_sum_()
69*86d7f5d3SJohn Marino{
70*86d7f5d3SJohn Marino  mkfs.ext3 $1 > /dev/null &&
71*86d7f5d3SJohn Marino  md5sum $1 > md5.$(basename $1)
72*86d7f5d3SJohn Marino}
73*86d7f5d3SJohn Marino
74*86d7f5d3SJohn Marinocheck_dev_sum_()
75*86d7f5d3SJohn Marino{
76*86d7f5d3SJohn Marino  md5sum $1 > md5.tmp && cmp md5.$(basename $1) md5.tmp
77*86d7f5d3SJohn Marino}
78*86d7f5d3SJohn Marino
79*86d7f5d3SJohn Marinocheck_mirror_count_()
80*86d7f5d3SJohn Marino{
81*86d7f5d3SJohn Marino  local lv=$1
82*86d7f5d3SJohn Marino  local mirrors=$2
83*86d7f5d3SJohn Marino  [ "$mirrors" -eq "$(lvs --noheadings -ostripes $lv)" ]
84*86d7f5d3SJohn Marino}
85*86d7f5d3SJohn Marino
86*86d7f5d3SJohn Marinocheck_mirror_log_()
87*86d7f5d3SJohn Marino{
88*86d7f5d3SJohn Marino  local lv=$1
89*86d7f5d3SJohn Marino  local mlog=$(lvs --noheadings -omirror_log $lv | sed -e 's/ //g')
90*86d7f5d3SJohn Marino  [ "$(basename $lv)_mlog" = "$mlog" ]
91*86d7f5d3SJohn Marino}
92*86d7f5d3SJohn Marino
93*86d7f5d3SJohn Marinowait_conversion_()
94*86d7f5d3SJohn Marino{
95*86d7f5d3SJohn Marino  local lv=$1
96*86d7f5d3SJohn Marino  while (lvs --noheadings -oattr "$lv" | grep -q '^ *c'); do sleep 1; done
97*86d7f5d3SJohn Marino}
98*86d7f5d3SJohn Marino
99*86d7f5d3SJohn Marinocheck_no_tmplvs_()
100*86d7f5d3SJohn Marino{
101*86d7f5d3SJohn Marino  local lv=$1
102*86d7f5d3SJohn Marino  lvs -a --noheadings -oname $(dirname $lv) > out
103*86d7f5d3SJohn Marino  ! grep tmp out
104*86d7f5d3SJohn Marino}
105*86d7f5d3SJohn Marino
106*86d7f5d3SJohn Marinoaux prepare_vg 5
107*86d7f5d3SJohn Marino
108*86d7f5d3SJohn Marino# ---------------------------------------------------------------------
109*86d7f5d3SJohn Marino# Common environment setup/cleanup for each sub testcases
110*86d7f5d3SJohn Marino
111*86d7f5d3SJohn Marinoprepare_lvs_()
112*86d7f5d3SJohn Marino{
113*86d7f5d3SJohn Marino  lvremove -ff $vg
114*86d7f5d3SJohn Marino	if dmsetup table|grep $vg; then
115*86d7f5d3SJohn Marino		echo "ERROR: lvremove did leave some some mappings in DM behind!"
116*86d7f5d3SJohn Marino		return 1
117*86d7f5d3SJohn Marino	fi
118*86d7f5d3SJohn Marino	:
119*86d7f5d3SJohn Marino}
120*86d7f5d3SJohn Marino
121*86d7f5d3SJohn Marinocheck_and_cleanup_lvs_()
122*86d7f5d3SJohn Marino{
123*86d7f5d3SJohn Marino  lvs -a -o+devices $vg
124*86d7f5d3SJohn Marino  lvremove -ff $vg
125*86d7f5d3SJohn Marino	if dmsetup table|grep $vg; then
126*86d7f5d3SJohn Marino		echo "ERROR: lvremove did leave some some mappings in DM behind!"
127*86d7f5d3SJohn Marino		return 1
128*86d7f5d3SJohn Marino	fi
129*86d7f5d3SJohn Marino}
130*86d7f5d3SJohn Marino
131*86d7f5d3SJohn Marinoprepare_lvs_
132*86d7f5d3SJohn Marinocheck_and_cleanup_lvs_
133*86d7f5d3SJohn Marino
134*86d7f5d3SJohn Marino# ---------------------------------------------------------------------
135*86d7f5d3SJohn Marino# mirrored LV tests
136*86d7f5d3SJohn Marino
137*86d7f5d3SJohn Marino# ---
138*86d7f5d3SJohn Marino# add mirror to mirror
139*86d7f5d3SJohn Marino
140*86d7f5d3SJohn Marino# add 1 mirror
141*86d7f5d3SJohn Marinoprepare_lvs_
142*86d7f5d3SJohn Marinolvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1
143*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 2
144*86d7f5d3SJohn Marinocheck_mirror_log_ $vg/$lv1
145*86d7f5d3SJohn Marinolvconvert -m+1 -i1 $vg/$lv1 $dev4
146*86d7f5d3SJohn Marinocheck_no_tmplvs_ $vg/$lv1
147*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 3
148*86d7f5d3SJohn Marinomimages_are_redundant_ $vg $lv1
149*86d7f5d3SJohn Marinomirrorlog_is_on_ $vg/$lv1 $dev3
150*86d7f5d3SJohn Marinocheck_and_cleanup_lvs_
151*86d7f5d3SJohn Marino
152*86d7f5d3SJohn Marino# add 2 mirrors
153*86d7f5d3SJohn Marinoprepare_lvs_
154*86d7f5d3SJohn Marinolvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1
155*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 2
156*86d7f5d3SJohn Marinocheck_mirror_log_ $vg/$lv1
157*86d7f5d3SJohn Marinolvconvert -m+2 -i1 $vg/$lv1 $dev4 $dev5
158*86d7f5d3SJohn Marinocheck_no_tmplvs_ $vg/$lv1
159*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 4
160*86d7f5d3SJohn Marinomimages_are_redundant_ $vg $lv1
161*86d7f5d3SJohn Marinomirrorlog_is_on_ $vg/$lv1 $dev3
162*86d7f5d3SJohn Marinocheck_and_cleanup_lvs_
163*86d7f5d3SJohn Marino
164*86d7f5d3SJohn Marino# add 1 mirror to core log mirror
165*86d7f5d3SJohn Marinoprepare_lvs_
166*86d7f5d3SJohn Marinolvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $dev1 $dev2
167*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 2
168*86d7f5d3SJohn Marinonot check_mirror_log_ $vg/$lv1
169*86d7f5d3SJohn Marinolvconvert -m+1 -i1 --mirrorlog core $vg/$lv1 $dev4
170*86d7f5d3SJohn Marinocheck_no_tmplvs_ $vg/$lv1
171*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 3
172*86d7f5d3SJohn Marinonot check_mirror_log_ $vg/$lv1
173*86d7f5d3SJohn Marinomimages_are_redundant_ $vg $lv1
174*86d7f5d3SJohn Marinocheck_and_cleanup_lvs_
175*86d7f5d3SJohn Marino
176*86d7f5d3SJohn Marino# add 2 mirrors to core log mirror"
177*86d7f5d3SJohn Marinoprepare_lvs_
178*86d7f5d3SJohn Marinolvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $dev1 $dev2
179*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 2
180*86d7f5d3SJohn Marinonot check_mirror_log_ $vg/$lv1
181*86d7f5d3SJohn Marinolvconvert -m+2 -i1 --mirrorlog core $vg/$lv1 $dev4 $dev5
182*86d7f5d3SJohn Marinocheck_no_tmplvs_ $vg/$lv1
183*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 4
184*86d7f5d3SJohn Marinonot check_mirror_log_ $vg/$lv1
185*86d7f5d3SJohn Marinomimages_are_redundant_ $vg $lv1
186*86d7f5d3SJohn Marinocheck_and_cleanup_lvs_
187*86d7f5d3SJohn Marino
188*86d7f5d3SJohn Marino# ---
189*86d7f5d3SJohn Marino# add to converting mirror
190*86d7f5d3SJohn Marino
191*86d7f5d3SJohn Marino# add 1 mirror then add 1 more mirror during conversion
192*86d7f5d3SJohn Marinoprepare_lvs_
193*86d7f5d3SJohn Marinolvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1
194*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 2
195*86d7f5d3SJohn Marinocheck_mirror_log_ $vg/$lv1
196*86d7f5d3SJohn Marinolvconvert -m+1 -b $vg/$lv1 $dev4
197*86d7f5d3SJohn Marinolvconvert -m+1 -i3 $vg/$lv1 $dev5
198*86d7f5d3SJohn Marinocheck_no_tmplvs_ $vg/$lv1
199*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 4
200*86d7f5d3SJohn Marinomimages_are_redundant_ $vg $lv1
201*86d7f5d3SJohn Marinomirrorlog_is_on_ $vg/$lv1 $dev3
202*86d7f5d3SJohn Marinocheck_and_cleanup_lvs_
203*86d7f5d3SJohn Marino
204*86d7f5d3SJohn Marino# ---
205*86d7f5d3SJohn Marino# add mirror and disk log
206*86d7f5d3SJohn Marino
207*86d7f5d3SJohn Marino# "add 1 mirror and disk log"
208*86d7f5d3SJohn Marinoprepare_lvs_
209*86d7f5d3SJohn Marinolvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $dev1 $dev2
210*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 2
211*86d7f5d3SJohn Marinonot check_mirror_log_ $vg/$lv1
212*86d7f5d3SJohn Marinolvconvert -m+1 --mirrorlog disk -i1 $vg/$lv1 $dev4 $dev3:0-1
213*86d7f5d3SJohn Marinocheck_no_tmplvs_ $vg/$lv1
214*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 3
215*86d7f5d3SJohn Marinocheck_mirror_log_ $vg/$lv1
216*86d7f5d3SJohn Marinomimages_are_redundant_ $vg $lv1
217*86d7f5d3SJohn Marinomirrorlog_is_on_ $vg/$lv1 $dev3
218*86d7f5d3SJohn Marinocheck_and_cleanup_lvs_
219*86d7f5d3SJohn Marino
220*86d7f5d3SJohn Marino# ---
221*86d7f5d3SJohn Marino# check polldaemon restarts
222*86d7f5d3SJohn Marino
223*86d7f5d3SJohn Marino# convert inactive mirror and start polling
224*86d7f5d3SJohn Marinoprepare_lvs_
225*86d7f5d3SJohn Marinolvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1
226*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 2
227*86d7f5d3SJohn Marinolvchange -an $vg/$lv1
228*86d7f5d3SJohn Marinolvconvert -m+1 $vg/$lv1 $dev4
229*86d7f5d3SJohn Marinolvchange -ay $vg/$lv1
230*86d7f5d3SJohn Marinowait_conversion_ $vg/$lv1
231*86d7f5d3SJohn Marinolvs -a
232*86d7f5d3SJohn Marinocheck_no_tmplvs_ $vg/$lv1
233*86d7f5d3SJohn Marinocheck_and_cleanup_lvs_
234*86d7f5d3SJohn Marino
235*86d7f5d3SJohn Marino# ---------------------------------------------------------------------
236*86d7f5d3SJohn Marino# removal during conversion
237*86d7f5d3SJohn Marino
238*86d7f5d3SJohn Marino# "remove newly added mirror"
239*86d7f5d3SJohn Marinoprepare_lvs_
240*86d7f5d3SJohn Marinolvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1
241*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 2
242*86d7f5d3SJohn Marinocheck_mirror_log_ $vg/$lv1
243*86d7f5d3SJohn Marinolvconvert -m+1 -b $vg/$lv1 $dev4
244*86d7f5d3SJohn Marinolvconvert -m-1 $vg/$lv1 $dev4
245*86d7f5d3SJohn Marinowait_conversion_ $vg/$lv1
246*86d7f5d3SJohn Marinocheck_no_tmplvs_ $vg/$lv1
247*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 2
248*86d7f5d3SJohn Marinomimages_are_redundant_ $vg $lv1
249*86d7f5d3SJohn Marinomirrorlog_is_on_ $vg/$lv1 $dev3
250*86d7f5d3SJohn Marinocheck_and_cleanup_lvs_
251*86d7f5d3SJohn Marino
252*86d7f5d3SJohn Marino# "remove one of newly added mirrors"
253*86d7f5d3SJohn Marinoprepare_lvs_
254*86d7f5d3SJohn Marinolvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1
255*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 2
256*86d7f5d3SJohn Marinocheck_mirror_log_ $vg/$lv1
257*86d7f5d3SJohn Marinolvconvert -m+2 -b $vg/$lv1 $dev4 $dev5
258*86d7f5d3SJohn Marinolvconvert -m-1 $vg/$lv1 $dev4
259*86d7f5d3SJohn Marinolvconvert -i1 $vg/$lv1
260*86d7f5d3SJohn Marinowait_conversion_ $vg/$lv1
261*86d7f5d3SJohn Marinocheck_no_tmplvs_ $vg/$lv1
262*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 3
263*86d7f5d3SJohn Marinomimages_are_redundant_ $vg $lv1
264*86d7f5d3SJohn Marinomirrorlog_is_on_ $vg/$lv1 $dev3
265*86d7f5d3SJohn Marinocheck_and_cleanup_lvs_
266*86d7f5d3SJohn Marino
267*86d7f5d3SJohn Marino# "remove from original mirror (the original is still mirror)"
268*86d7f5d3SJohn Marinoprepare_lvs_
269*86d7f5d3SJohn Marinolvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev5 $dev3:0-1
270*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 3
271*86d7f5d3SJohn Marinocheck_mirror_log_ $vg/$lv1
272*86d7f5d3SJohn Marinolvconvert -m+1 -b $vg/$lv1 $dev4
273*86d7f5d3SJohn Marinolvconvert -m-1 $vg/$lv1 $dev2
274*86d7f5d3SJohn Marinolvconvert -i1 $vg/$lv1
275*86d7f5d3SJohn Marinowait_conversion_ $vg/$lv1
276*86d7f5d3SJohn Marinocheck_no_tmplvs_ $vg/$lv1
277*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 3
278*86d7f5d3SJohn Marinomimages_are_redundant_ $vg $lv1
279*86d7f5d3SJohn Marinomirrorlog_is_on_ $vg/$lv1 $dev3
280*86d7f5d3SJohn Marinocheck_and_cleanup_lvs_
281*86d7f5d3SJohn Marino
282*86d7f5d3SJohn Marino# "remove from original mirror (the original becomes linear)"
283*86d7f5d3SJohn Marinoprepare_lvs_
284*86d7f5d3SJohn Marinolvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1
285*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 2
286*86d7f5d3SJohn Marinocheck_mirror_log_ $vg/$lv1
287*86d7f5d3SJohn Marinolvconvert -m+1 -b $vg/$lv1 $dev4
288*86d7f5d3SJohn Marinolvconvert -m-1 $vg/$lv1 $dev2
289*86d7f5d3SJohn Marinolvconvert -i1 $vg/$lv1
290*86d7f5d3SJohn Marinowait_conversion_ $vg/$lv1
291*86d7f5d3SJohn Marinocheck_no_tmplvs_ $vg/$lv1
292*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 2
293*86d7f5d3SJohn Marinomimages_are_redundant_ $vg $lv1
294*86d7f5d3SJohn Marinomirrorlog_is_on_ $vg/$lv1 $dev3
295*86d7f5d3SJohn Marinocheck_and_cleanup_lvs_
296*86d7f5d3SJohn Marino
297*86d7f5d3SJohn Marino# ---------------------------------------------------------------------
298*86d7f5d3SJohn Marino
299*86d7f5d3SJohn Marino# "rhbz440405: lvconvert -m0 incorrectly fails if all PEs allocated"
300*86d7f5d3SJohn Marinoprepare_lvs_
301*86d7f5d3SJohn Marinolvcreate -l`pvs --noheadings -ope_count $dev1` -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0
302*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 2
303*86d7f5d3SJohn Marinocheck_mirror_log_ $vg/$lv1
304*86d7f5d3SJohn Marinolvconvert -m0 $vg/$lv1 $dev1
305*86d7f5d3SJohn Marinocheck_no_tmplvs_ $vg/$lv1
306*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 1
307*86d7f5d3SJohn Marinocheck_and_cleanup_lvs_
308*86d7f5d3SJohn Marino
309*86d7f5d3SJohn Marino# "rhbz264241: lvm mirror doesn't lose it's "M" --nosync attribute after being down and the up converted"
310*86d7f5d3SJohn Marinoprepare_lvs_
311*86d7f5d3SJohn Marinolvcreate -l2 -m1 -n$lv1 --nosync $vg
312*86d7f5d3SJohn Marinolvconvert -m0 $vg/$lv1
313*86d7f5d3SJohn Marinolvconvert -m1 $vg/$lv1
314*86d7f5d3SJohn Marinolvs --noheadings -o attr $vg/$lv1 | grep '^ *m'
315*86d7f5d3SJohn Marinocheck_and_cleanup_lvs_
316*86d7f5d3SJohn Marino
317*86d7f5d3SJohn Marino# lvconvert from linear (on multiple PVs) to mirror
318*86d7f5d3SJohn Marinoprepare_lvs_
319*86d7f5d3SJohn Marinolvcreate -l 8 -n $lv1 $vg $dev1:0-3 $dev2:0-3
320*86d7f5d3SJohn Marinolvconvert -m1 $vg/$lv1
321*86d7f5d3SJohn Marinocheck_mirror_count_ $vg/$lv1 2
322*86d7f5d3SJohn Marinocheck_mirror_log_ $vg/$lv1
323*86d7f5d3SJohn Marinocheck_and_cleanup_lvs_
324*86d7f5d3SJohn Marino
325*86d7f5d3SJohn Marino# BZ 463272: disk log mirror convert option is lost if downconvert option is also given
326*86d7f5d3SJohn Marinoprepare_lvs_
327*86d7f5d3SJohn Marinolvcreate -l1 -m2 --corelog -n $lv1 $vg
328*86d7f5d3SJohn Marinolvconvert -m1 --mirrorlog disk $vg/$lv1
329*86d7f5d3SJohn Marinocheck_mirror_log_ $vg/$lv1
330