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