xref: /dflybsd-src/contrib/lvm2/dist/test/t-pvmove-basic.sh (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
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