186d7f5d3SJohn Marino#!/bin/sh 286d7f5d3SJohn Marino# Copyright (C) 2008 Red Hat, Inc. All rights reserved. 386d7f5d3SJohn Marino# Copyright (C) 2007 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="ensure that pvmove works with basic options" 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 Marinolvdev_() { 2386d7f5d3SJohn Marino echo "$G_dev_/$1/$2" 2486d7f5d3SJohn Marino} 2586d7f5d3SJohn Marino 2686d7f5d3SJohn Marinolv_is_on_() { 2786d7f5d3SJohn Marino local lv=$1 #allready vg/lv 2886d7f5d3SJohn Marino shift 1 2986d7f5d3SJohn Marino lvs -a -odevices --noheadings $lv | sed 's/,/\n/g' > out 3086d7f5d3SJohn Marino#is on all specified devs 3186d7f5d3SJohn Marino for d in $*; do grep "$d(" out; done 3286d7f5d3SJohn Marino#isn't on any other dev (we are set -e remember) 3386d7f5d3SJohn Marino for d in $*; do ! grep -v "$d(" out; done 3486d7f5d3SJohn Marino return 0 3586d7f5d3SJohn Marino} 3686d7f5d3SJohn Marino 3786d7f5d3SJohn Marinosave_dev_sum_() { 3886d7f5d3SJohn Marino mkfs.ext3 $1 > /dev/null && 3986d7f5d3SJohn Marino md5sum $1 > md5.$(basename $1) 4086d7f5d3SJohn Marino} 4186d7f5d3SJohn Marino 4286d7f5d3SJohn Marinocheck_dev_sum_() { 4386d7f5d3SJohn Marino md5sum $1 > md5.tmp && cmp md5.$(basename $1) md5.tmp 4486d7f5d3SJohn Marino} 4586d7f5d3SJohn Marino 4686d7f5d3SJohn Marino# --------------------------------------------------------------------- 4786d7f5d3SJohn Marino# Initialize PVs and VGs 4886d7f5d3SJohn Marino 4986d7f5d3SJohn Marinoaux prepare_vg 5 80 5086d7f5d3SJohn Marino 5186d7f5d3SJohn Marino# --------------------------------------------------------------------- 5286d7f5d3SJohn Marino# Common environment setup/cleanup for each sub testcases 5386d7f5d3SJohn Marino 5486d7f5d3SJohn Marinoprepare_lvs_() { 5586d7f5d3SJohn Marino lvcreate -l2 -n $lv1 $vg $dev1 5686d7f5d3SJohn Marino lv_is_on_ $vg/$lv1 $dev1 5786d7f5d3SJohn Marino lvcreate -l9 -i3 -n $lv2 $vg $dev2 $dev3 $dev4 5886d7f5d3SJohn Marino lv_is_on_ $vg/$lv2 $dev2 $dev3 $dev4 5986d7f5d3SJohn Marino lvextend -l+2 $vg/$lv1 $dev2 6086d7f5d3SJohn Marino lv_is_on_ $vg/$lv1 $dev1 $dev2 6186d7f5d3SJohn Marino lvextend -l+2 $vg/$lv1 $dev3 6286d7f5d3SJohn Marino lv_is_on_ $vg/$lv1 $dev1 $dev2 $dev3 6386d7f5d3SJohn Marino lvextend -l+2 $vg/$lv1 $dev1 6486d7f5d3SJohn Marino lv_is_on_ $vg/$lv1 $dev1 $dev2 $dev3 $dev1 6586d7f5d3SJohn Marino lvcreate -l1 -n $lv3 $vg $dev2 6686d7f5d3SJohn Marino lv_is_on_ $vg/$lv3 $dev2 6786d7f5d3SJohn Marino save_dev_sum_ $(lvdev_ $vg $lv1) 6886d7f5d3SJohn Marino save_dev_sum_ $(lvdev_ $vg $lv2) 6986d7f5d3SJohn Marino save_dev_sum_ $(lvdev_ $vg $lv3) 7086d7f5d3SJohn Marino lvs -a -o devices --noheadings $vg/$lv1 > ${lv1}_devs 7186d7f5d3SJohn Marino lvs -a -o devices --noheadings $vg/$lv2 > ${lv2}_devs 7286d7f5d3SJohn Marino lvs -a -o devices --noheadings $vg/$lv3 > ${lv3}_devs 7386d7f5d3SJohn Marino} 7486d7f5d3SJohn Marino 7586d7f5d3SJohn Marinolv_not_changed_() { 7686d7f5d3SJohn Marino lvs -a -o devices --noheadings $1 > out 7786d7f5d3SJohn Marino diff $(basename $1)_devs out 7886d7f5d3SJohn Marino} 7986d7f5d3SJohn Marino 8086d7f5d3SJohn Marinocheck_and_cleanup_lvs_() { 8186d7f5d3SJohn Marino lvs -a -o+devices $vg 8286d7f5d3SJohn Marino check_dev_sum_ $(lvdev_ $vg $lv1) 8386d7f5d3SJohn Marino check_dev_sum_ $(lvdev_ $vg $lv2) 8486d7f5d3SJohn Marino check_dev_sum_ $(lvdev_ $vg $lv3) 8586d7f5d3SJohn Marino lvs -a -o name $vg > out && ! grep ^pvmove out 8686d7f5d3SJohn Marino lvremove -ff $vg 8786d7f5d3SJohn Marino if ! dmsetup table|not grep $vg; then 8886d7f5d3SJohn Marino echo "ERROR: lvremove did leave some some mappings in DM behind!" && 8986d7f5d3SJohn Marino return 1 9086d7f5d3SJohn Marino fi 9186d7f5d3SJohn Marino : 9286d7f5d3SJohn Marino} 9386d7f5d3SJohn Marino 9486d7f5d3SJohn Marino#COMM "check environment setup/cleanup" 9586d7f5d3SJohn Marinoprepare_lvs_ 9686d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 9786d7f5d3SJohn Marino 9886d7f5d3SJohn Marino# --------------------------------------------------------------------- 9986d7f5d3SJohn Marino# pvmove tests 10086d7f5d3SJohn Marino 10186d7f5d3SJohn Marino# --- 10286d7f5d3SJohn Marino# filter by LV 10386d7f5d3SJohn Marino 10486d7f5d3SJohn Marino#COMM "only specified LV is moved: from pv2 to pv5 only for lv1" 10586d7f5d3SJohn Marinoprepare_lvs_ 10686d7f5d3SJohn Marinopvmove -i1 -n $vg/$lv1 $dev2 $dev5 10786d7f5d3SJohn Marinolv_is_on_ $vg/$lv1 $dev1 $dev5 $dev3 $dev1 10886d7f5d3SJohn Marinolv_not_changed_ $vg/$lv2 10986d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 11086d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 11186d7f5d3SJohn Marino 11286d7f5d3SJohn Marino# --- 11386d7f5d3SJohn Marino# segments in a LV 11486d7f5d3SJohn Marino 11586d7f5d3SJohn Marino#COMM "the 1st seg of 3-segs LV is moved: from pv1 of lv1 to pv4" 11686d7f5d3SJohn Marinoprepare_lvs_ 11786d7f5d3SJohn Marinopvmove -i1 -n $vg/$lv1 $dev1 $dev4 11886d7f5d3SJohn Marinolv_is_on_ $vg/$lv1 $dev4 $dev2 $dev3 $dev4 11986d7f5d3SJohn Marinolv_not_changed_ $vg/$lv2 12086d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 12186d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 12286d7f5d3SJohn Marino 12386d7f5d3SJohn Marino#COMM "the 2nd seg of 3-segs LV is moved: from pv2 of lv1 to pv4" 12486d7f5d3SJohn Marinoprepare_lvs_ 12586d7f5d3SJohn Marinopvmove -i1 -n $vg/$lv1 $dev2 $dev4 12686d7f5d3SJohn Marinolv_is_on_ $vg/$lv1 $dev1 $dev4 $dev3 $dev1 12786d7f5d3SJohn Marinolv_not_changed_ $vg/$lv2 12886d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 12986d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 13086d7f5d3SJohn Marino 13186d7f5d3SJohn Marino#COMM "the 3rd seg of 3-segs LV is moved: from pv3 of lv1 to pv4" 13286d7f5d3SJohn Marinoprepare_lvs_ 13386d7f5d3SJohn Marinopvmove -i1 -n $vg/$lv1 $dev3 $dev4 13486d7f5d3SJohn Marinolv_is_on_ $vg/$lv1 $dev1 $dev2 $dev4 $dev1 13586d7f5d3SJohn Marinolv_not_changed_ $vg/$lv2 13686d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 13786d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 13886d7f5d3SJohn Marino 13986d7f5d3SJohn Marino# --- 14086d7f5d3SJohn Marino# multiple LVs matching 14186d7f5d3SJohn Marino 14286d7f5d3SJohn Marino#COMM "1 out of 3 LVs is moved: from pv4 to pv5" 14386d7f5d3SJohn Marinoprepare_lvs_ 14486d7f5d3SJohn Marinopvmove -i1 $dev4 $dev5 14586d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 14686d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev2 $dev3 $dev5 14786d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 14886d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 14986d7f5d3SJohn Marino 15086d7f5d3SJohn Marino#COMM "2 out of 3 LVs are moved: from pv3 to pv5" 15186d7f5d3SJohn Marinoprepare_lvs_ 15286d7f5d3SJohn Marinopvmove -i1 $dev3 $dev5 15386d7f5d3SJohn Marinolv_is_on_ $vg/$lv1 $dev1 $dev2 $dev5 $dev1 15486d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev2 $dev5 $dev4 15586d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 15686d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 15786d7f5d3SJohn Marino 15886d7f5d3SJohn Marino#COMM "3 out of 3 LVs are moved: from pv2 to pv5" 15986d7f5d3SJohn Marinoprepare_lvs_ 16086d7f5d3SJohn Marinopvmove -i1 $dev2 $dev5 16186d7f5d3SJohn Marinolv_is_on_ $vg/$lv1 $dev1 $dev5 $dev3 $dev1 16286d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev5 $dev3 $dev4 16386d7f5d3SJohn Marinolv_is_on_ $vg/$lv3 $dev5 16486d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 16586d7f5d3SJohn Marino 16686d7f5d3SJohn Marino# --- 16786d7f5d3SJohn Marino# areas of striping 16886d7f5d3SJohn Marino 16986d7f5d3SJohn Marino#COMM "move the 1st stripe: from pv2 of lv2 to pv1" 17086d7f5d3SJohn Marinoprepare_lvs_ 17186d7f5d3SJohn Marinopvmove -i1 -n $vg/$lv2 $dev2 $dev1 17286d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 17386d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev1 $dev3 $dev4 17486d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 17586d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 17686d7f5d3SJohn Marino 17786d7f5d3SJohn Marino#COMM "move the 2nd stripe: from pv3 of lv2 to pv1" 17886d7f5d3SJohn Marinoprepare_lvs_ 17986d7f5d3SJohn Marinopvmove -i1 -n $vg/$lv2 $dev3 $dev1 18086d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 18186d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev2 $dev1 $dev4 18286d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 18386d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 18486d7f5d3SJohn Marino 18586d7f5d3SJohn Marino#COMM "move the 3rd stripe: from pv4 of lv2 to pv1" 18686d7f5d3SJohn Marinoprepare_lvs_ 18786d7f5d3SJohn Marinopvmove -i1 -n $vg/$lv2 $dev4 $dev1 18886d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 18986d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev2 $dev3 $dev1 19086d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 19186d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 19286d7f5d3SJohn Marino 19386d7f5d3SJohn Marino# --- 19486d7f5d3SJohn Marino# partial segment match (source segment splitted) 19586d7f5d3SJohn Marino 19686d7f5d3SJohn Marino#COMM "match to the start of segment:from pv2:0-0 to pv5" 19786d7f5d3SJohn Marinoprepare_lvs_ 19886d7f5d3SJohn Marinopvmove -i1 $dev2:0-0 $dev5 19986d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 20086d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev5 $dev2 $dev3 $dev4 20186d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 20286d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 20386d7f5d3SJohn Marino 20486d7f5d3SJohn Marino#COMM "match to the middle of segment: from pv2:1-1 to pv5" 20586d7f5d3SJohn Marinoprepare_lvs_ 20686d7f5d3SJohn Marinopvmove -i1 $dev2:1-1 $dev5 20786d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 20886d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev2 $dev5 $dev2 $dev3 $dev4 20986d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 21086d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 21186d7f5d3SJohn Marino 21286d7f5d3SJohn Marino#COMM "match to the end of segment: from pv2:2-2 to pv5" 21386d7f5d3SJohn Marinoprepare_lvs_ 21486d7f5d3SJohn Marinopvmove -i1 $dev2:2-2 $dev5 21586d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 21686d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev2 $dev5 $dev3 $dev4 21786d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 21886d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 21986d7f5d3SJohn Marino 22086d7f5d3SJohn Marino# --- 22186d7f5d3SJohn Marino# destination segment splitted 22286d7f5d3SJohn Marino 22386d7f5d3SJohn Marino#COMM "no destination split: from pv2:0-2 to pv5" 22486d7f5d3SJohn Marinoprepare_lvs_ 22586d7f5d3SJohn Marinopvmove -i1 $dev2:0-2 $dev5 22686d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 22786d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev5 $dev3 $dev4 22886d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 22986d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 23086d7f5d3SJohn Marino 23186d7f5d3SJohn Marino#COMM "destination split into 2: from pv2:0-2 to pv5:5-5 and pv4:5-6" 23286d7f5d3SJohn Marinoprepare_lvs_ 23386d7f5d3SJohn Marinopvmove -i1 $dev2:0-2 $dev5:5-5 $dev4:5-6 23486d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 23586d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev5 $dev4 $dev3 $dev4 23686d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 23786d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 23886d7f5d3SJohn Marino 23986d7f5d3SJohn Marino#COMM "destination split into 3: from pv2:0-2 to {pv3,4,5}:5-5" 24086d7f5d3SJohn Marinoprepare_lvs_ 24186d7f5d3SJohn Marinopvmove -i1 $dev2:0-2 $dev3:5-5 $dev4:5-5 $dev5:5-5 24286d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 24386d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev3 $dev4 $dev5 $dev3 $dev4 24486d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 24586d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 24686d7f5d3SJohn Marino 24786d7f5d3SJohn Marino# --- 24886d7f5d3SJohn Marino# alloc policy (anywhere, contiguous) with both success and failure cases 24986d7f5d3SJohn Marino 25086d7f5d3SJohn Marino#COMM "alloc normal on same PV for source and destination: from pv3:0-2 to pv3:5-7" 25186d7f5d3SJohn Marinoprepare_lvs_ 25286d7f5d3SJohn Marinonot pvmove -i1 $dev3:0-2 $dev3:5-7 25386d7f5d3SJohn Marino# "(cleanup previous test)" 25486d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 25586d7f5d3SJohn Marinolv_not_changed_ $vg/$lv2 25686d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 25786d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 25886d7f5d3SJohn Marino 25986d7f5d3SJohn Marino#COMM "alloc anywhere on same PV for source and destination: from pv3:0-2 to pv3:5-7" 26086d7f5d3SJohn Marinoprepare_lvs_ 26186d7f5d3SJohn Marinopvmove -i1 --alloc anywhere $dev3:0-2 $dev3:5-7 26286d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 26386d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev2 $dev3 $dev4 26486d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 26586d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 26686d7f5d3SJohn Marino 26786d7f5d3SJohn Marino#COMM "alloc anywhere but better area available: from pv3:0-2 to pv3:5-7 or pv5:5-6,pv4:5-5" 26886d7f5d3SJohn Marinoprepare_lvs_ 26986d7f5d3SJohn Marinopvmove -i1 --alloc anywhere $dev3:0-2 $dev3:5-7 $dev5:5-6 $dev4:5-5 27086d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 27186d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev2 $dev5 $dev4 $dev4 27286d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 27386d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 27486d7f5d3SJohn Marino 27586d7f5d3SJohn Marino#COMM "alloc contiguous but area not available: from pv2:0-2 to pv5:5-5 and pv4:5-6" 27686d7f5d3SJohn Marinoprepare_lvs_ 27786d7f5d3SJohn Marinonot pvmove -i1 --alloc contiguous $dev2:0-2 $dev5:5-5 $dev4:5-6 27886d7f5d3SJohn Marino# "(cleanup previous test)" 27986d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 28086d7f5d3SJohn Marinolv_not_changed_ $vg/$lv2 28186d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 28286d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 28386d7f5d3SJohn Marino 28486d7f5d3SJohn Marino#COMM "alloc contiguous and contiguous area available: from pv2:0-2 to pv5:0-0,pv5:3-5 and pv4:5-6" 28586d7f5d3SJohn Marinoprepare_lvs_ 28686d7f5d3SJohn Marinopvmove -i1 --alloc contiguous $dev2:0-2 $dev5:0-0 $dev5:3-5 $dev4:5-6 28786d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 28886d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev5 $dev3 $dev4 28986d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 29086d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 29186d7f5d3SJohn Marino 29286d7f5d3SJohn Marino# --- 29386d7f5d3SJohn Marino# multiple segments in a LV 29486d7f5d3SJohn Marino 29586d7f5d3SJohn Marino#COMM "multiple source LVs: from pv3 to pv5" 29686d7f5d3SJohn Marinoprepare_lvs_ 29786d7f5d3SJohn Marinopvmove -i1 $dev3 $dev5 29886d7f5d3SJohn Marinolv_is_on_ $vg/$lv1 $dev1 $dev2 $dev5 29986d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev2 $dev5 $dev4 30086d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 30186d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 30286d7f5d3SJohn Marino 30386d7f5d3SJohn Marino# --- 30486d7f5d3SJohn Marino# move inactive LV 30586d7f5d3SJohn Marino 30686d7f5d3SJohn Marino#COMM "move inactive LV: from pv2 to pv5" 30786d7f5d3SJohn Marinoprepare_lvs_ 30886d7f5d3SJohn Marinolvchange -an $vg/$lv1 30986d7f5d3SJohn Marinolvchange -an $vg/$lv3 31086d7f5d3SJohn Marinopvmove -i1 $dev2 $dev5 31186d7f5d3SJohn Marinolv_is_on_ $vg/$lv1 $dev1 $dev5 $dev3 31286d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev5 $dev3 $dev4 31386d7f5d3SJohn Marinolv_is_on_ $vg/$lv3 $dev5 31486d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 31586d7f5d3SJohn Marino 31686d7f5d3SJohn Marino# --- 31786d7f5d3SJohn Marino# other failure cases 31886d7f5d3SJohn Marino 31986d7f5d3SJohn Marino#COMM "no PEs to move: from pv3 to pv1" 32086d7f5d3SJohn Marinoprepare_lvs_ 32186d7f5d3SJohn Marinopvmove -i1 $dev3 $dev1 32286d7f5d3SJohn Marinonot pvmove -i1 $dev3 $dev1 32386d7f5d3SJohn Marino# "(cleanup previous test)" 32486d7f5d3SJohn Marinolv_is_on_ $vg/$lv1 $dev1 $dev2 $dev1 32586d7f5d3SJohn Marinolv_is_on_ $vg/$lv2 $dev2 $dev1 $dev4 32686d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 32786d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 32886d7f5d3SJohn Marino 32986d7f5d3SJohn Marino#COMM "no space available: from pv2:0-0 to pv1:0-0" 33086d7f5d3SJohn Marinoprepare_lvs_ 33186d7f5d3SJohn Marinonot pvmove -i1 $dev2:0-0 $dev1:0-0 33286d7f5d3SJohn Marino# "(cleanup previous test)" 33386d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 33486d7f5d3SJohn Marinolv_not_changed_ $vg/$lv2 33586d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 33686d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 33786d7f5d3SJohn Marino 33886d7f5d3SJohn Marino#COMM 'same source and destination: from pv1 to pv1' 33986d7f5d3SJohn Marinoprepare_lvs_ 34086d7f5d3SJohn Marinonot pvmove -i1 $dev1 $dev1 34186d7f5d3SJohn Marino#"(cleanup previous test)" 34286d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 34386d7f5d3SJohn Marinolv_not_changed_ $vg/$lv2 34486d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 34586d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 34686d7f5d3SJohn Marino 34786d7f5d3SJohn Marino#COMM "sum of specified destination PEs is large enough, but it includes source PEs and the free PEs are not enough" 34886d7f5d3SJohn Marinoprepare_lvs_ 34986d7f5d3SJohn Marinonot pvmove --alloc anywhere $dev1:0-2 $dev1:0-2 $dev5:0-0 2> err 35086d7f5d3SJohn Marino#"(cleanup previous test)" 35186d7f5d3SJohn Marinogrep "Insufficient free space" err 35286d7f5d3SJohn Marinolv_not_changed_ $vg/$lv1 35386d7f5d3SJohn Marinolv_not_changed_ $vg/$lv2 35486d7f5d3SJohn Marinolv_not_changed_ $vg/$lv3 35586d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 35686d7f5d3SJohn Marino 35786d7f5d3SJohn Marino# --------------------------------------------------------------------- 35886d7f5d3SJohn Marino 35986d7f5d3SJohn Marino#COMM "pvmove abort" 36086d7f5d3SJohn Marinoprepare_lvs_ 36186d7f5d3SJohn Marinopvmove -i100 -b $dev1 $dev3 36286d7f5d3SJohn Marinopvmove --abort 36386d7f5d3SJohn Marinocheck_and_cleanup_lvs_ 36486d7f5d3SJohn Marino 36586d7f5d3SJohn Marino#COMM "pvmove out of --metadatacopies 0 PV (bz252150)" 36686d7f5d3SJohn Marinovgremove -ff $vg 36786d7f5d3SJohn Marinopvcreate $devs 36886d7f5d3SJohn Marinopvcreate --metadatacopies 0 $dev1 $dev2 36986d7f5d3SJohn Marinovgcreate $vg $devs 37086d7f5d3SJohn Marinolvcreate -l4 -n $lv1 $vg $dev1 37186d7f5d3SJohn Marinopvmove $dev1 37286d7f5d3SJohn Marino 37386d7f5d3SJohn Marino#COMM "pvmove fails activating mirror, properly restores state before pvmove" 37486d7f5d3SJohn Marinodmsetup create "$vg-pvmove0" --notable 37586d7f5d3SJohn Marinonot pvmove -i 1 $dev2 37686d7f5d3SJohn Marinotest $(dmsetup info --noheadings -c -o suspended "$vg-$lv1") = "Active" 37786d7f5d3SJohn Marinodmsetup remove "$vg-pvmove0" 378