186d7f5d3SJohn Marino#!/bin/sh 286d7f5d3SJohn Marino# Copyright (C) 2007-2008 Red Hat, Inc. All rights reserved. 386d7f5d3SJohn Marino# Copyright (C) 2007-2008 NEC Corporation 486d7f5d3SJohn Marino# 586d7f5d3SJohn Marino# This copyrighted material is made available to anyone wishing to use, 686d7f5d3SJohn Marino# modify, copy, or redistribute it subject to the terms and conditions 786d7f5d3SJohn Marino# of the GNU General Public License v.2. 886d7f5d3SJohn Marino# 986d7f5d3SJohn Marino# You should have received a copy of the GNU General Public License 1086d7f5d3SJohn Marino# along with this program; if not, write to the Free Software Foundation, 1186d7f5d3SJohn Marino# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 1286d7f5d3SJohn Marino 1386d7f5d3SJohn Marinotest_description="check namings of mirrored LV" 1486d7f5d3SJohn Marino 1586d7f5d3SJohn Marino. ./test-utils.sh 1686d7f5d3SJohn Marino 1786d7f5d3SJohn Marinodmsetup_has_dm_devdir_support_ || exit 200 1886d7f5d3SJohn Marino 1986d7f5d3SJohn Marino# --------------------------------------------------------------------- 2086d7f5d3SJohn Marino# Utilities 2186d7f5d3SJohn Marino 2286d7f5d3SJohn Marinolv_devices_() { 2386d7f5d3SJohn Marino local d 2486d7f5d3SJohn Marino local lv=$1 2586d7f5d3SJohn Marino shift 2686d7f5d3SJohn Marino local devices=$* 2786d7f5d3SJohn Marino 2886d7f5d3SJohn Marino local devs=$(lvs -a -odevices --noheadings $lv | sed 's/([0-9]*)//g' | 2986d7f5d3SJohn Marino sed 's/ //g' | sed 's/,/ /g') 3086d7f5d3SJohn Marino 3186d7f5d3SJohn Marino for d in $devs; do 3286d7f5d3SJohn Marino (echo $devices | grep -q $d) || return 1 3386d7f5d3SJohn Marino devices=$(echo $devices | sed "s/$d//") 3486d7f5d3SJohn Marino done 3586d7f5d3SJohn Marino 3686d7f5d3SJohn Marino [ "$(echo $devices | sed 's/ //g')" = "" ] 3786d7f5d3SJohn Marino} 3886d7f5d3SJohn Marino 3986d7f5d3SJohn Marinolv_mirror_log_() { 4086d7f5d3SJohn Marino local lv=$1 4186d7f5d3SJohn Marino 4286d7f5d3SJohn Marino echo $(lvs -a -omirror_log --noheadings $lv | sed 's/ //g') 4386d7f5d3SJohn Marino} 4486d7f5d3SJohn Marino 4586d7f5d3SJohn Marinolv_convert_lv_() { 4686d7f5d3SJohn Marino local lv=$1 4786d7f5d3SJohn Marino 4886d7f5d3SJohn Marino echo $(lvs -a -oconvert_lv --noheadings $lv | sed 's/ //g') 4986d7f5d3SJohn Marino} 5086d7f5d3SJohn Marino 5186d7f5d3SJohn Marino# --------------------------------------------------------------------- 5286d7f5d3SJohn Marino# Initialize PVs and VGs 5386d7f5d3SJohn Marino 5486d7f5d3SJohn Marinoaux prepare_vg 5 80 5586d7f5d3SJohn Marino 5686d7f5d3SJohn Marino# --------------------------------------------------------------------- 5786d7f5d3SJohn Marino# Common environment setup/cleanup for each sub testcases 5886d7f5d3SJohn Marino 5986d7f5d3SJohn Marinoprepare_lvs_() { 6086d7f5d3SJohn Marino lvremove -ff $vg 6186d7f5d3SJohn Marino if dmsetup table|grep $vg; then 6286d7f5d3SJohn Marino echo "ERROR: lvremove did leave some some mappings in DM behind!" 6386d7f5d3SJohn Marino return 1 6486d7f5d3SJohn Marino fi 6586d7f5d3SJohn Marino : 6686d7f5d3SJohn Marino} 6786d7f5d3SJohn Marino 6886d7f5d3SJohn Marinocheck_and_cleanup_lvs_() { 6986d7f5d3SJohn Marino lvs -a -o+devices $vg 7086d7f5d3SJohn Marino lvremove -ff $vg 7186d7f5d3SJohn Marino if dmsetup table|grep $vg; then 7286d7f5d3SJohn Marino echo "ERROR: lvremove did leave some some mappings in DM behind!" 7386d7f5d3SJohn Marino return 1 7486d7f5d3SJohn Marino fi 7586d7f5d3SJohn Marino} 7686d7f5d3SJohn Marino 7786d7f5d3SJohn Marinoprepare_lvs_ 7886d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 7986d7f5d3SJohn Marino 8086d7f5d3SJohn Marino# --------------------------------------------------------------------- 8186d7f5d3SJohn Marino# basic 8286d7f5d3SJohn Marino 8386d7f5d3SJohn Marino#COMM "init: lvcreate" 8486d7f5d3SJohn Marinoprepare_lvs_ 8586d7f5d3SJohn Marino 8686d7f5d3SJohn Marino#COMM "mirror images are ${lv1}_mimage_x" 8786d7f5d3SJohn Marinolvcreate -l2 -m1 -n $lv1 $vg 8886d7f5d3SJohn Marinolv_devices_ $vg/$lv1 "$lv1"_mimage_0 "$lv1"_mimage_1 8986d7f5d3SJohn Marino 9086d7f5d3SJohn Marino#COMM "mirror log is ${lv1}_mlog" 9186d7f5d3SJohn Marinolv_mirror_log_ $vg/$lv1 "$lv1"_mlog 9286d7f5d3SJohn Marino 9386d7f5d3SJohn Marino# "cleanup" 9486d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 9586d7f5d3SJohn Marino 9686d7f5d3SJohn Marino#COMM "mirror with name longer than 22 characters (bz221322)" 9786d7f5d3SJohn Marinoname="LVwithanamelogerthan22characters_butidontwonttocounthem" 9886d7f5d3SJohn Marinolvcreate -m1 -l2 -n"$name" $vg 9986d7f5d3SJohn Marinolvs $vg/"$name" 10086d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 10186d7f5d3SJohn Marino 10286d7f5d3SJohn Marino# --------------------------------------------------------------------- 10386d7f5d3SJohn Marino# lvrename 10486d7f5d3SJohn Marino 10586d7f5d3SJohn Marino#COMM "init: lvrename" 10686d7f5d3SJohn Marinoprepare_lvs_ 10786d7f5d3SJohn Marino 10886d7f5d3SJohn Marino#COMM "renamed mirror names: $lv1 to $lv2" 10986d7f5d3SJohn Marinolvcreate -l2 -m1 -n $lv1 $vg 11086d7f5d3SJohn Marinolvrename $vg/$lv1 $vg/$lv2 11186d7f5d3SJohn Marinolv_devices_ $vg/$lv2 "$lv2"_mimage_0 "$lv2"_mimage_1 11286d7f5d3SJohn Marinolv_mirror_log_ $vg/$lv2 "$lv2"_mlog 11386d7f5d3SJohn Marino 11486d7f5d3SJohn Marino#COMM "cleanup" 11586d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 11686d7f5d3SJohn Marino 11786d7f5d3SJohn Marino# --------------------------------------------------------------------- 11886d7f5d3SJohn Marino# lvconvert 11986d7f5d3SJohn Marino 12086d7f5d3SJohn Marino#COMM "init: lvconvert" 12186d7f5d3SJohn Marinoprepare_lvs_ 12286d7f5d3SJohn Marino 12386d7f5d3SJohn Marino#COMM "converting mirror names is ${lv1}_mimagetmp_2" 12486d7f5d3SJohn Marinolvcreate -l2 -m1 -n $lv1 $vg 12586d7f5d3SJohn Marinolvconvert -m+1 -i1000 -b $vg/$lv1 12686d7f5d3SJohn Marinoconvlv=$(lv_convert_lv_ "$vg/$lv1") 12786d7f5d3SJohn Marinotest "$convlv" = "$lv1"_mimagetmp_2 12886d7f5d3SJohn Marinolv_devices_ $vg/$lv1 "$convlv" "$lv1"_mimage_2 12986d7f5d3SJohn Marinolv_devices_ "$vg/$convlv" "$lv1"_mimage_0 "$lv1"_mimage_1 13086d7f5d3SJohn Marinologlv=$(lv_mirror_log_ "$vg/$convlv") 13186d7f5d3SJohn Marinotest "$loglv" = "$lv1"_mlog 13286d7f5d3SJohn Marino 13386d7f5d3SJohn Marino#COMM "mirror log name after re-adding is ${lv1}_mlog" \ 13486d7f5d3SJohn Marinolvconvert --mirrorlog core $vg/$lv1 13586d7f5d3SJohn Marinolvconvert --mirrorlog disk $vg/$lv1 13686d7f5d3SJohn Marinoconvlv=$(lv_convert_lv_ "$vg/$lv1") 13786d7f5d3SJohn Marinolv_devices_ $vg/$lv1 "$convlv" "$lv1"_mimage_2 13886d7f5d3SJohn Marinolv_devices_ "$vg/$convlv" "$lv1"_mimage_0 "$lv1"_mimage_1 13986d7f5d3SJohn Marinologlv=$(lv_mirror_log_ "$vg/$convlv") 14086d7f5d3SJohn Marinotest "$loglv" = "$lv1"_mlog 14186d7f5d3SJohn Marino 14286d7f5d3SJohn Marino#COMM "renamed converting mirror names: $lv1 to $lv2" \ 14386d7f5d3SJohn Marinolvrename $vg/$lv1 $vg/$lv2 14486d7f5d3SJohn Marinoconvlv=$(lv_convert_lv_ "$vg/$lv2") 14586d7f5d3SJohn Marinolv_devices_ $vg/$lv2 "$convlv" "$lv2"_mimage_2 14686d7f5d3SJohn Marinolv_devices_ "$vg/$convlv" "$lv2"_mimage_0 "$lv2"_mimage_1 14786d7f5d3SJohn Marinologlv=$(lv_mirror_log_ "$vg/$convlv") 14886d7f5d3SJohn Marinotest "$loglv" = "$lv2"_mlog 14986d7f5d3SJohn Marino 15086d7f5d3SJohn Marino#COMM "cleanup" 15186d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 15286d7f5d3SJohn Marino 15386d7f5d3SJohn Marino# Temporary mirror log should have "_mlogtmp_<n>" suffix 15486d7f5d3SJohn Marino# but currently lvconvert doesn't have an option to add the log. 15586d7f5d3SJohn Marino# If such feature is added in future, a test for that should 15686d7f5d3SJohn Marino# be added. 15786d7f5d3SJohn Marino 15886d7f5d3SJohn Marino# --------------------------------------------------------------------- 159