From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24379 invoked by alias); 16 Mar 2012 13:00:24 -0000 Received: (qmail 24359 invoked by uid 9737); 16 Mar 2012 13:00:24 -0000 Date: Fri, 16 Mar 2012 13:00:00 -0000 Message-ID: <20120316130024.24357.qmail@sourceware.org> From: zkabelac@sourceware.org To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org Subject: LVM2/test api/pe_start.sh api/percent.sh api/v ... Mailing-List: contact lvm2-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: lvm2-cvs-owner@sourceware.org X-SW-Source: 2012-03/txt/msg00117.txt.bz2 CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: zkabelac@sourceware.org 2012-03-16 13:00:06 Modified files: test/api : pe_start.sh percent.sh vgtest.sh test/shell : 000-basic.sh activate-missing.sh activate-partial.sh covercmd.sh dmeventd-restart.sh dumpconfig.sh fsadm.sh inconsistent-metadata.sh listings.sh lock-blocking.sh lvchange-mirror.sh lvconvert-mirror-basic-0.sh lvconvert-mirror-basic-1.sh lvconvert-mirror-basic-2.sh lvconvert-mirror-basic-3.sh lvconvert-mirror-basic.sh lvconvert-mirror.sh lvconvert-raid.sh lvconvert-repair-dmeventd.sh lvconvert-repair-policy.sh lvconvert-repair-replace.sh lvconvert-repair-snapshot.sh lvconvert-repair-transient-dmeventd.sh lvconvert-repair-transient.sh lvconvert-repair.sh lvconvert-twostep.sh lvcreate-mirror.sh lvcreate-operation.sh lvcreate-pvtags.sh lvcreate-raid.sh lvcreate-repair.sh lvcreate-small-snap.sh lvcreate-thin.sh lvcreate-usage.sh lvextend-percent-extents.sh lvextend-snapshot-dmeventd.sh lvextend-snapshot-policy.sh lvm-init.sh lvmcache-exercise.sh lvmetad-pvs.sh lvresize-mirror.sh lvresize-rounding.sh lvresize-usage.sh mdata-strings.sh metadata-balance.sh metadata-dirs.sh metadata.sh mirror-names.sh mirror-vgreduce-removemissing.sh name-mangling.sh nomda-missing.sh pool-labels.sh pv-duplicate.sh pv-min-size.sh pv-range-overflow.sh pvchange-usage.sh pvcreate-metadata0.sh pvcreate-operation-md.sh pvcreate-operation.sh pvcreate-usage.sh pvmove-basic.sh pvremove-usage.sh read-ahead.sh snapshot-autoumount-dmeventd.sh snapshot-merge.sh snapshots-of-mirrors.sh tags.sh test-partition.sh topology-support.sh unlost-pv.sh vgcfgbackup-usage.sh vgchange-maxlv.sh vgchange-sysinit.sh vgchange-usage.sh vgcreate-usage.sh vgextend-restoremissing.sh vgextend-usage.sh vgimportclone.sh vgmerge-operation.sh vgmerge-usage.sh vgreduce-removemissing-snapshot.sh vgreduce-usage.sh vgrename-usage.sh vgsplit-operation.sh vgsplit-stacked.sh vgsplit-usage.sh Log message: Update tests Indent Shell improvements - use internal function for checks Use PVs in "" (LV and VG cannot have spaces) Several test very starting 'dmeventd' without annoucing it via prepade_dmeventd. Fix some of test actually. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/api/pe_start.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/api/percent.sh.diff?cvsroot=lvm2&r1=1.7&r2=1.8 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/api/vgtest.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/000-basic.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/activate-missing.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/activate-partial.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/covercmd.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/dmeventd-restart.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/dumpconfig.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/fsadm.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/inconsistent-metadata.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/listings.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lock-blocking.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvchange-mirror.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvconvert-mirror-basic-0.sh.diff?cvsroot=lvm2&r1=1.3&r2=1.4 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvconvert-mirror-basic-1.sh.diff?cvsroot=lvm2&r1=1.3&r2=1.4 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvconvert-mirror-basic-2.sh.diff?cvsroot=lvm2&r1=1.3&r2=1.4 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvconvert-mirror-basic-3.sh.diff?cvsroot=lvm2&r1=1.3&r2=1.4 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvconvert-mirror-basic.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvconvert-mirror.sh.diff?cvsroot=lvm2&r1=1.4&r2=1.5 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvconvert-raid.sh.diff?cvsroot=lvm2&r1=1.4&r2=1.5 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvconvert-repair-dmeventd.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvconvert-repair-policy.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvconvert-repair-replace.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvconvert-repair-snapshot.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvconvert-repair-transient-dmeventd.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvconvert-repair-transient.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvconvert-repair.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvconvert-twostep.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvcreate-mirror.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvcreate-operation.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvcreate-pvtags.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvcreate-raid.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvcreate-repair.sh.diff?cvsroot=lvm2&r1=1.4&r2=1.5 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvcreate-small-snap.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvcreate-thin.sh.diff?cvsroot=lvm2&r1=1.3&r2=1.4 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvcreate-usage.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvextend-percent-extents.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvextend-snapshot-dmeventd.sh.diff?cvsroot=lvm2&r1=1.4&r2=1.5 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvextend-snapshot-policy.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvm-init.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvmcache-exercise.sh.diff?cvsroot=lvm2&r1=1.3&r2=1.4 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvmetad-pvs.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvresize-mirror.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvresize-rounding.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/lvresize-usage.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/mdata-strings.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/metadata-balance.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/metadata-dirs.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/metadata.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/mirror-names.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/mirror-vgreduce-removemissing.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/name-mangling.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/nomda-missing.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/pool-labels.sh.diff?cvsroot=lvm2&r1=1.3&r2=1.4 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/pv-duplicate.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/pv-min-size.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/pv-range-overflow.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/pvchange-usage.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/pvcreate-metadata0.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/pvcreate-operation-md.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/pvcreate-operation.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/pvcreate-usage.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/pvmove-basic.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/pvremove-usage.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/read-ahead.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/snapshot-autoumount-dmeventd.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/snapshot-merge.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/snapshots-of-mirrors.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/tags.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/test-partition.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/topology-support.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/unlost-pv.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/vgcfgbackup-usage.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/vgchange-maxlv.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/vgchange-sysinit.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/vgchange-usage.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/vgcreate-usage.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/vgextend-restoremissing.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/vgextend-usage.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/vgimportclone.sh.diff?cvsroot=lvm2&r1=1.3&r2=1.4 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/vgmerge-operation.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/vgmerge-usage.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/vgreduce-removemissing-snapshot.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/vgreduce-usage.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/vgrename-usage.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/vgsplit-operation.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/vgsplit-stacked.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/shell/vgsplit-usage.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 --- LVM2/test/api/pe_start.sh 2011/06/04 21:55:25 1.2 +++ LVM2/test/api/pe_start.sh 2012/03/16 13:00:05 1.3 @@ -1,4 +1,4 @@ -# +#!/bin/sh # Copyright (C) 2011 Red Hat, Inc. All rights reserved. # # This file is part of LVM2. @@ -14,6 +14,8 @@ . lib/test aux prepare_devs 2 + aux apitest pe_start test_vg $dev1 + not vgs test_vg not pvs $dev1 --- LVM2/test/api/percent.sh 2011/09/19 18:40:51 1.7 +++ LVM2/test/api/percent.sh 2012/03/16 13:00:05 1.8 @@ -1,4 +1,4 @@ -# +#!/bin/sh # Copyright (C) 2010 Red Hat, Inc. All rights reserved. # # This file is part of LVM2. @@ -16,11 +16,12 @@ kernel_at_least 2 6 33 || skip aux prepare_devs 2 + vgcreate -c n -s 4k $vg $(cat DEVICES) -lvcreate -n foo $vg -l 5 +lvcreate -l 5 -n foo $vg lvcreate -s -n snap $vg/foo -l 2 -c 4k lvcreate -s -n snap2 $vg/foo -l 6 -c 4k -dd if=/dev/urandom of=$DM_DEV_DIR/$vg/snap2 count=1 bs=1024 +dd if=/dev/urandom of="$DM_DEV_DIR/$vg/snap2" count=1 bs=1024 lvcreate -m 1 -n mirr $vg -l 1 --mirrorlog core lvs $vg aux apitest percent $vg --- LVM2/test/api/vgtest.sh 2011/01/05 00:16:21 1.2 +++ LVM2/test/api/vgtest.sh 2012/03/16 13:00:05 1.3 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -13,6 +14,7 @@ # . lib/test -aux prepare_devs 2 -pvcreate $dev1 $dev2 -aux apitest vgtest $vg1 $dev1 $dev2 + +aux prepare_pvs 2 + +aux apitest vgtest $vg1 "$dev1" "$dev2" --- LVM2/test/shell/000-basic.sh 2011/12/10 14:55:31 1.2 +++ LVM2/test/shell/000-basic.sh 2012/03/16 13:00:06 1.3 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2009-2011 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -25,4 +26,4 @@ # ensure we do not crash on a bug in config file aux lvmconf 'log/prefix = 1""' -not lvs +not lvs $(cat DEVICES) --- LVM2/test/shell/activate-missing.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/activate-missing.sh 2012/03/16 13:00:06 1.2 @@ -1,5 +1,4 @@ -#!/bin/bash - +#!/bin/sh # Copyright (C) 2010 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -21,18 +20,18 @@ aux prepare_vg 4 -lvcreate -l1 -n linear1 $vg $dev1 -lvcreate -l1 -n linear2 $vg $dev2 -lvcreate -l2 -n linear12 $vg $dev1:4 $dev2:4 +lvcreate -l1 -n linear1 $vg "$dev1" +lvcreate -l1 -n linear2 $vg "$dev2" +lvcreate -l2 -n linear12 $vg "$dev1":4 "$dev2":4 -lvcreate -l1 -n origin1 $vg $dev1 -lvcreate -s $vg/origin1 -l1 -n s_napshot2 $dev2 +lvcreate -l1 -n origin1 $vg "$dev1" +lvcreate -s $vg/origin1 -l1 -n s_napshot2 "$dev2" -lvcreate -l1 -m1 -n mirror12 --mirrorlog core $vg $dev1 $dev2 -lvcreate -l1 -m1 -n mirror123 $vg $dev1 $dev2 $dev3 +lvcreate -l1 -m1 -n mirror12 --mirrorlog core $vg "$dev1" "$dev2" +lvcreate -l1 -m1 -n mirror123 $vg "$dev1" "$dev2" "$dev3" vgchange -a n $vg -aux disable_dev $dev1 +aux disable_dev "$dev1" not vgchange -a y $vg not vgck $vg @@ -45,8 +44,8 @@ check inactive $vg mirror123 vgchange -a n $vg -aux enable_dev $dev1 -aux disable_dev $dev2 +aux enable_dev "$dev1" +aux disable_dev "$dev2" not vgchange -a y $vg not vgck $vg @@ -59,8 +58,8 @@ check inactive $vg mirror123 vgchange -a n $vg -aux enable_dev $dev2 -aux disable_dev $dev3 +aux enable_dev "$dev2" +aux disable_dev "$dev3" not vgchange -a y $vg not vgck $vg @@ -73,8 +72,8 @@ check active $vg mirror12 vgchange -a n $vg -aux enable_dev $dev3 -aux disable_dev $dev4 +aux enable_dev "$dev3" +aux disable_dev "$dev4" vgchange -a y $vg not vgck $vg --- LVM2/test/shell/activate-partial.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/activate-partial.sh 2012/03/16 13:00:06 1.2 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2010 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -14,7 +15,7 @@ lvcreate -m 1 -l 1 -n mirror $vg lvchange -a n $vg/mirror -aux disable_dev $dev1 +aux disable_dev "$dev1" not vgreduce --removemissing $vg not lvchange -v -a y $vg/mirror --- LVM2/test/shell/covercmd.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/covercmd.sh 2012/03/16 13:00:06 1.2 @@ -1,4 +1,5 @@ -# Copyright (C) 2008 Red Hat, Inc. All rights reserved. +#!/bin/sh +# Copyright (C) 2008-2012 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions @@ -14,25 +15,17 @@ . lib/test -TEST_UUID="aaaaaa-aaaa-aaaa-aaaa-aaaa-aaaa-aaaaaa" - -get_lvs_() -{ - case $(lvs --units s --nosuffix --noheadings -o $1_read_ahead "$vg"/"$lv") in - *$2) true ;; - *) false ;; - esac -} - aux prepare_devs 5 -pvcreate $dev1 -pvcreate --metadatacopies 0 $dev2 -pvcreate --metadatacopies 0 $dev3 -pvcreate $dev4 -pvcreate --norestorefile -u $TEST_UUID --metadatacopies 0 $dev5 +TEST_UUID="aaaaaa-aaaa-aaaa-aaaa-aaaa-aaaa-aaaaaa" + +pvcreate "$dev1" +pvcreate --metadatacopies 0 "$dev2" +pvcreate --metadatacopies 0 "$dev3" +pvcreate "$dev4" +pvcreate --norestorefile -u $TEST_UUID --metadatacopies 0 "$dev5" vgcreate -c n $vg $(cat DEVICES) -lvcreate -n $lv -l 5 -i5 -I256 $vg +lvcreate -l 5 -i5 -I256 -n $lv $vg # test *scan and *display tools pvscan @@ -41,8 +34,8 @@ lvmdiskscan vgdisplay --units k lvdisplay --units g -for i in h b s k m g t p e H B S K M G T P E ; do - pvdisplay --units "$i" "$dev1" +for i in h b s k m g t p e H B S K M G T P E; do + pvdisplay --units $i "$dev1" done # test vgexport vgimport tools @@ -55,28 +48,28 @@ # "-persistent n" # test various lvm utils for i in dumpconfig formats segtypes; do - lvm "$i" + lvm $i done for i in pr "p rw" an ay "-monitor y" "-monitor n" \ -resync -refresh "-addtag MYTAG" "-deltag MYETAG"; do - lvchange -$i "$vg"/"$lv" + lvchange -$i $vg/$lv done pvck "$dev1" -vgck "$vg" -lvrename "$vg" "$lv" "$lv-rename" -vgcfgbackup -f "$(pwd)/backup.$$" "$vg" -vgchange -an "$vg" -vgcfgrestore -f "$(pwd)/backup.$$" "$vg" -pvremove -y -ff $dev5 -not vgcfgrestore -f "$(pwd)/backup.$$" "$vg" -pvcreate -u $TEST_UUID --restorefile "$(pwd)/backup.$$" $dev5 -vgremove -f "$vg" +vgck $vg +lvrename $vg $lv $lv-rename +vgcfgbackup -f backup.$$ $vg +vgchange -an $vg +vgcfgrestore -f backup.$$ $vg +pvremove -y -ff "$dev5" +not vgcfgrestore -f backup.$$ $vg +pvcreate -u $TEST_UUID --restorefile backup.$$ "$dev5" +vgremove -f $vg pvresize --setphysicalvolumesize 10M "$dev1" # test various errors and obsoleted tools not lvmchange -not lvrename "$vg" -not lvrename "$vg-xxx" -not lvrename "$vg" "$vg"/"$lv-rename" "$vg"/"$lv" +not lvrename $vg +not lvrename $vg-xxx +not lvrename $vg $vg/$lv-rename $vg/$lv --- LVM2/test/shell/dmeventd-restart.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/dmeventd-restart.sh 2012/03/16 13:00:06 1.2 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright (C) 2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -11,10 +11,10 @@ . lib/test -aux prepare_vg 5 -aux prepare_dmeventd +which mkfs.ext2 || skip -which mkfs.ext2 || exit 200 +aux prepare_dmeventd +aux prepare_vg 5 lvcreate -m 3 --ig -L 1 -n 4way $vg lvchange --monitor y $vg/4way @@ -32,11 +32,11 @@ grep 'already monitored' lvchange.out # now try what happens if no dmeventd is running -kill -9 `cat LOCAL_DMEVENTD` +kill -9 $(cat LOCAL_DMEVENTD) dmeventd -R -f & -echo "$!" > LOCAL_DMEVENTD sleep 3 lvchange --monitor y --verbose $vg/3way 2>&1 | tee lvchange.out not grep 'already monitored' lvchange.out +pgrep dmeventd >LOCAL_DMEVENTD vgremove -ff $vg --- LVM2/test/shell/dumpconfig.sh 2011/12/11 23:14:37 1.1 +++ LVM2/test/shell/dumpconfig.sh 2012/03/16 13:00:06 1.2 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2011 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -18,7 +19,7 @@ done } -lvm dumpconfig -vvvv | flatten | sort > config.dump +lvm dumpconfig | flatten | sort > config.dump flatten < etc/lvm.conf | sort > config.input # check that dumpconfig output corresponds to the lvm.conf input @@ -32,4 +33,3 @@ echo 'log { verbose = 1 }' > etc/lvm_foo.conf lvm dumpconfig | flatten | grep 'log/verbose=1' lvm dumpconfig | flatten | grep 'log/indent=1' - --- LVM2/test/shell/fsadm.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/fsadm.sh 2012/03/16 13:00:06 1.2 @@ -1,5 +1,5 @@ -#!/bin/bash -# Copyright (C) 2008-2011 Red Hat, Inc. All rights reserved. +#!/bin/sh +# Copyright (C) 2008-2012 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions @@ -21,40 +21,45 @@ check_xfs= check_reiserfs= -which mkfs.ext3 || check_ext3=${check_ext3:=mkfs.ext3} -which fsck.ext3 || check_ext3=${check_ext3:=fsck.ext3} -which mkfs.xfs || check_xfs=${check_xfs:=mkfs.xfs} -which xfs_check || check_xfs=${check_xfs:=xfs_check} -which mkfs.reiserfs || check_reiserfs=${check_reiserfs:=mkfs.reiserfs} -which reiserfsck || check_reiserfs=${check_reiserfs:=reiserfsck} +which mkfs.ext3 || check_ext3=${check_ext3:-mkfs.ext3} +which fsck.ext3 || check_ext3=${check_ext3:-fsck.ext3} +which mkfs.xfs || check_xfs=${check_xfs:-mkfs.xfs} +which xfs_check || check_xfs=${check_xfs:-xfs_check} +which mkfs.reiserfs || check_reiserfs=${check_reiserfs:-mkfs.reiserfs} +which reiserfsck || check_reiserfs=${check_reiserfs:-reiserfsck} -vg_lv="$vg/$lv1" +vg_lv=$vg/$lv1 +vg_lv2=$vg/${lv1}bar dev_vg_lv="$DM_DEV_DIR/$vg_lv" -mount_dir="$TESTDIR/mnt" +dev_vg_lv2="$DM_DEV_DIR/$vg_lv2" +mount_dir="mnt" +mount_space_dir="mnt space dir" # for recursive call export LVM_BINARY=$(which lvm) -test ! -d $mount_dir && mkdir $mount_dir +test ! -d "$mount_dir" && mkdir "$mount_dir" +test ! -d "$mount_space_dir" && mkdir "$mount_space_dir" cleanup_mounted_and_teardown() { - umount $mount_dir || true + umount "$mount_dir" || true + umount "$mount_space_dir" || true aux teardown } fscheck_ext3() { - fsck.ext3 -p -F -f $dev_vg_lv + fsck.ext3 -p -F -f "$dev_vg_lv" } fscheck_xfs() { - xfs_check $dev_vg_lv + xfs_check "$dev_vg_lv" } fscheck_reiserfs() { - reiserfsck --check -p -f $dev_vg_lv &1 | tee cmd.out + vgdisplay $vg 2>&1 | tee cmd.out grep "Inconsistent metadata found for VG $vg" cmd.out - vgdisplay 2>&1 | tee cmd.out + vgdisplay $vg 2>&1 | tee cmd.out not grep "Inconsistent metadata found for VG $vg" cmd.out check # lvs fixes up init - lvs 2>&1 | tee cmd.out + lvs $vg 2>&1 | tee cmd.out grep "Inconsistent metadata found for VG $vg" cmd.out - vgdisplay 2>&1 | tee cmd.out + vgdisplay $vg 2>&1 | tee cmd.out not grep "Inconsistent metadata found for VG $vg" cmd.out check # vgs fixes up as well init - vgs 2>&1 | tee cmd.out + vgs $vg 2>&1 | tee cmd.out grep "Inconsistent metadata found for VG $vg" cmd.out - vgs 2>&1 | tee cmd.out + vgs $vg 2>&1 | tee cmd.out not grep "Inconsistent metadata found for VG $vg" cmd.out check fi @@ -71,8 +71,8 @@ vgremove -f $vg pvremove -ff $(cat DEVICES) pvcreate $(cat DEVICES) -aux backup_dev $dev2 -vgcreate $vg $dev1 -vgextend $vg $dev2 -aux restore_dev $dev2 -should check compare_fields vgs $vg vg_mda_count pvs $dev2 vg_mda_count +aux backup_dev "$dev2" +vgcreate $vg "$dev1" +vgextend $vg "$dev2" +aux restore_dev "$dev2" +should check compare_fields vgs $vg vg_mda_count pvs "$dev2" vg_mda_count --- LVM2/test/shell/listings.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/listings.sh 2012/03/16 13:00:06 1.2 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -14,35 +15,25 @@ . lib/test -get_lvs_() -{ - case $(lvs --units s --nosuffix --noheadings -o $1_read_ahead "$vg"/"$lv") in - *$2) true ;; - *) false ;; - esac -} - aux prepare_devs 5 -pvcreate $dev1 -pvcreate --metadatacopies 0 $dev2 -pvcreate --metadatacopies 0 $dev3 -pvcreate $dev4 -pvcreate --metadatacopies 0 $dev5 +pvcreate "$dev1" +pvcreate --metadatacopies 0 "$dev2" +pvcreate --metadatacopies 0 "$dev3" +pvcreate "$dev4" +pvcreate --metadatacopies 0 "$dev5" #COMM bz195276 -- pvs doesn't show PVs until a VG is created -pvs --noheadings|tee out -test $(wc -l out pvdisplay --maps $(cat DEVICES) >out2 not diff out out2 - --- LVM2/test/shell/lock-blocking.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lock-blocking.sh 2012/03/16 13:00:06 1.2 @@ -14,9 +14,9 @@ . lib/test aux prepare_devs 3 -test -e LOCAL_CLVMD && exit 200 -pvcreate $dev1 $dev2 -vgcreate $vg $dev1 $dev2 +test -e LOCAL_CLVMD && skip +pvcreate "$dev1" "$dev2" +vgcreate $vg "$dev1" "$dev2" # if wait_for_locks set, vgremove should wait for orphan lock # flock process should have exited by the time first vgremove completes @@ -30,7 +30,7 @@ # if wait_for_locks not set, vgremove should fail on non-blocking lock # we must wait for flock process at the end - vgremove won't wait -vgcreate $vg $dev1 $dev2 +vgcreate $vg "$dev1" "$dev2" flock -w 5 $TESTDIR/var/lock/lvm/P_orphans -c "sleep 10" & while ! test -f $TESTDIR/var/lock/lvm/P_orphans ; do sleep .1 ; done --- LVM2/test/shell/lvchange-mirror.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvchange-mirror.sh 2012/03/16 13:00:06 1.2 @@ -10,19 +10,21 @@ # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA . lib/test + +aux prepare_dmeventd aux prepare_vg 3 # force resync 2-way active mirror -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 -check mirror $vg $lv1 $dev3 +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3":0-1 +check mirror $vg $lv1 "$dev3" echo y | lvchange --resync $vg/$lv1 -check mirror $vg $lv1 $dev3 +check mirror $vg $lv1 "$dev3" lvremove -ff $vg # force resync 2-way inactive mirror -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3":0-1 lvchange -an $vg/$lv1 -check mirror $vg $lv1 $dev3 +check mirror $vg $lv1 "$dev3" lvchange --resync $vg/$lv1 -check mirror $vg $lv1 $dev3 +check mirror $vg $lv1 "$dev3" lvremove -ff $vg --- LVM2/test/shell/lvconvert-mirror-basic-0.sh 2011/11/21 11:36:53 1.3 +++ LVM2/test/shell/lvconvert-mirror-basic-0.sh 2012/03/16 13:00:06 1.4 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2010 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, --- LVM2/test/shell/lvconvert-mirror-basic-1.sh 2011/11/21 11:36:53 1.3 +++ LVM2/test/shell/lvconvert-mirror-basic-1.sh 2012/03/16 13:00:06 1.4 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2010 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, --- LVM2/test/shell/lvconvert-mirror-basic-2.sh 2011/11/21 11:36:53 1.3 +++ LVM2/test/shell/lvconvert-mirror-basic-2.sh 2012/03/16 13:00:06 1.4 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2010 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, --- LVM2/test/shell/lvconvert-mirror-basic-3.sh 2011/11/21 11:36:53 1.3 +++ LVM2/test/shell/lvconvert-mirror-basic-3.sh 2012/03/16 13:00:06 1.4 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2010 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, --- LVM2/test/shell/lvconvert-mirror-basic.sh 2012/03/04 16:02:19 1.2 +++ LVM2/test/shell/lvconvert-mirror-basic.sh 2012/03/16 13:00:06 1.3 @@ -1,4 +1,5 @@ -# Copyright (C) 2010 Red Hat, Inc. All rights reserved. +#!/bin/sh +# Copyright (C) 2010-2012 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions @@ -10,15 +11,12 @@ . lib/test -log_name_to_count() -{ - if [ "$1" = "mirrored" ]; then - echo 2 - elif [ "$1" = "disk" ]; then - echo 1 - else - echo 0 - fi +log_name_to_count() { + case "$1" in + mirrored) echo 2 ;; + disk) echo 1 ;; + *) echo 0 ;; + esac } # FIXME: For test_[up|down]convert, I'd still like to be able @@ -38,15 +36,14 @@ # 2-way disk-log mirror while not active # -> test_lvconvert 2 disk 3 disk 0 -test_lvconvert() -{ +test_lvconvert() { local start_count=$1 local start_count_p1=$(($start_count + 1)) local start_log_type=$2 local finish_count=$3 local finish_count_p1=$(($finish_count + 1)) local finish_log_type=$4 - local dev_array=($dev1 $dev2 $dev3 $dev4 $dev5) + local dev_array=("$dev1" "$dev2" "$dev3" "$dev4" "$dev5") local start_log_count local finish_log_count local max_log_count @@ -58,19 +55,15 @@ #test $finish_count -gt $start_count && up=true # Do we have enough devices for the mirror images? - if [ $start_count_p1 -gt ${#dev_array[@]} ]; then - echo "Action requires too many devices" - return 1 - fi + test $start_count_p1 -gt ${#dev_array[@]} && \ + die "Action requires too many devices" # Do we have enough devices for the mirror images? - if [ $finish_count_p1 -gt ${#dev_array[@]} ]; then - echo "Action requires too many devices" - return 1 - fi + test $finish_count_p1 -gt ${#dev_array[@]} && \ + die "Action requires too many devices" - start_log_count=`log_name_to_count $start_log_type` - finish_log_count=`log_name_to_count $finish_log_type` + start_log_count=$(log_name_to_count $start_log_type) + finish_log_count=$(log_name_to_count $finish_log_type) if [ $finish_log_count -gt $start_log_count ]; then max_log_count=$finish_log_count else @@ -92,9 +85,7 @@ fi lvs -a -o name,copy_percent,devices $vg - if ! $active; then - lvchange -an $vg/$lv1 - fi + test $active || lvchange -an $vg/$lv1 # Are there extra devices for the log or do we overlap if [ $(($finish_count_p1 + $finish_log_count)) -gt ${#dev_array[@]} ]; then @@ -104,9 +95,7 @@ lvconvert -m $finish_count --mirrorlog $finish_log_type \ $vg/$lv1 $alloc - if ! $active; then - lvchange -ay $vg/$lv1 - fi + test $active || lvchange -ay $vg/$lv1 check mirror_no_temporaries $vg $lv1 if [ "$finish_count_p1" -eq 1 ]; then --- LVM2/test/shell/lvconvert-mirror.sh 2012/03/04 16:02:19 1.4 +++ LVM2/test/shell/lvconvert-mirror.sh 2012/03/16 13:00:06 1.5 @@ -11,9 +11,8 @@ . lib/test -wait_for_mirror_in_sync_() -{ - while [ $(lvs --noheadings -o copy_percent $1) != "100.00" ]; do sleep 1; done +wait_for_mirror_in_sync_() { + while test $(get lv_field $1 copy_percent) != "100.00"; do sleep 1; done } # convert from linear to 2-way mirror @@ -21,95 +20,95 @@ # FIXME - test fails with extent size < 512k vgcreate -c n -s 512k $vg $(cat DEVICES) -lvcreate -l2 -n $lv1 $vg $dev1 -lvconvert -i1 -m+1 $vg/$lv1 $dev2 $dev3:0-1 -check mirror $vg $lv1 $dev3 +lvcreate -l2 -n $lv1 $vg "$dev1" +lvconvert -i1 -m+1 $vg/$lv1 "$dev2" "$dev3:0-1" +check mirror $vg $lv1 "$dev3" lvremove -ff $vg # convert from 2-way mirror to linear -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3:0-1" lvconvert -m-1 $vg/$lv1 check linear $vg $lv1 lvremove -ff $vg # and now try removing a specific leg (bz453643) -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 -lvconvert -m0 $vg/$lv1 $dev2 -check lv_on $vg $lv1 $dev1 +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3:0-1" +lvconvert -m0 $vg/$lv1 "$dev2" +check lv_on $vg $lv1 "$dev1" lvremove -ff $vg # convert from disklog to corelog, active -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3:0-1" lvconvert -f --mirrorlog core $vg/$lv1 check mirror $vg $lv1 core lvremove -ff $vg # convert from corelog to disklog, active -lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $dev1 $dev2 -lvconvert --mirrorlog disk $vg/$lv1 $dev3:0-1 -check mirror $vg $lv1 $dev3 +lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg "$dev1" "$dev2" +lvconvert --mirrorlog disk $vg/$lv1 "$dev3:0-1" +check mirror $vg $lv1 "$dev3" lvremove -ff $vg # bz192865: lvconvert log of an inactive mirror lv # convert from disklog to corelog, inactive -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3:0-1" lvchange -an $vg/$lv1 echo y | lvconvert -f --mirrorlog core $vg/$lv1 check mirror $vg $lv1 core lvremove -ff $vg # convert from corelog to disklog, inactive -lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $dev1 $dev2 +lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg "$dev1" "$dev2" lvchange -an $vg/$lv1 -lvconvert --mirrorlog disk $vg/$lv1 $dev3:0-1 -check mirror $vg $lv1 $dev3 +lvconvert --mirrorlog disk $vg/$lv1 "$dev3:0-1" +check mirror $vg $lv1 "$dev3" lvremove -ff $vg # convert linear to 2-way mirror with 1 PV -lvcreate -l2 -n $lv1 $vg $dev1 -not lvconvert -m+1 --mirrorlog core $vg/$lv1 $dev1 +lvcreate -l2 -n $lv1 $vg "$dev1" +not lvconvert -m+1 --mirrorlog core $vg/$lv1 "$dev1" lvremove -ff $vg # Start w/ 3-way mirror # Test pulling primary image before mirror in-sync (should fail) # Test pulling primary image after mirror in-sync (should work) # Test that the correct devices remain in the mirror -lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev4 $dev3:0 +lvcreate -l2 -m2 -n $lv1 $vg "$dev1" "$dev2" "$dev4" "$dev3:0" # FIXME: # This is somewhat timing dependent - sync /could/ finish before # we get a chance to have this command fail -should not lvconvert -m-1 $vg/$lv1 $dev1 +should not lvconvert -m-1 $vg/$lv1 "$dev1" lvconvert $vg/$lv1 # wait -lvconvert -m2 $vg/$lv1 $dev1 $dev2 $dev4 $dev3:0 # If the above "should" failed... +lvconvert -m2 $vg/$lv1 "$dev1" "$dev2" "$dev4" "$dev3:0" # If the above "should" failed... wait_for_mirror_in_sync_ $vg/$lv1 -lvconvert -m-1 $vg/$lv1 $dev1 -check mirror_images_on $lv1 $dev2 $dev4 -lvconvert -m-1 $vg/$lv1 $dev2 +lvconvert -m-1 $vg/$lv1 "$dev1" +check mirror_images_on $lv1 "$dev2" "$dev4" +lvconvert -m-1 $vg/$lv1 "$dev2" check linear $vg $lv1 -check lv_on $vg $lv1 $dev4 +check lv_on $vg $lv1 "$dev4" lvremove -ff $vg # No parallel lvconverts on a single LV please -lvcreate -l5 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0 +lvcreate -l5 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3:0" check mirror $vg $lv1 check mirror_legs $vg $lv1 2 -lvconvert -m+1 -b $vg/$lv1 $dev4 +lvconvert -m+1 -b $vg/$lv1 "$dev4" # Next convert should fail b/c we can't have 2 at once -should not lvconvert -m+1 $vg/$lv1 $dev5 +should not lvconvert -m+1 $vg/$lv1 "$dev5" lvconvert $vg/$lv1 # wait lvconvert -m2 $vg/$lv1 # In case the above "should" actually failed -check mirror $vg $lv1 $dev3 +check mirror $vg $lv1 "$dev3" check mirror_no_temporaries $vg $lv1 check mirror_legs $vg $lv1 3 lvremove -ff $vg # add 1 mirror to core log mirror, but # implicitly keep log as 'core' -lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $dev1 $dev2 +lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg "$dev1" "$dev2" lvconvert -m +1 -i1 $vg/$lv1 check mirror $vg $lv1 core @@ -128,28 +127,28 @@ # add 1 mirror then add 1 more mirror during conversion # FIXME this has been explicitly forbidden? -#lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0 -#lvconvert -m+1 -b $vg/$lv1 $dev4 -#lvconvert -m+1 $vg/$lv1 $dev5 +#lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3":0 +#lvconvert -m+1 -b $vg/$lv1 "$dev4" +#lvconvert -m+1 $vg/$lv1 "$dev5" # -#check mirror $vg $lv1 $dev3 +#check mirror $vg $lv1 "$dev3" #check mirror_no_temporaries $vg $lv1 #check mirror_legs $vg $lv1 4 #lvremove -ff $vg # Linear to mirror with mirrored log using --alloc anywhere -lvcreate -l2 -n $lv1 $vg $dev1 -lvconvert -m +1 --mirrorlog mirrored $vg/$lv1 $dev1 $dev2 --alloc anywhere +lvcreate -l2 -n $lv1 $vg "$dev1" +lvconvert -m +1 --mirrorlog mirrored --alloc anywhere $vg/$lv1 "$dev1" "$dev2" should check mirror $vg $lv1 lvremove -ff $vg # convert inactive mirror and start polling -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0 +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3:0" lvchange -an $vg/$lv1 -lvconvert -m+1 $vg/$lv1 $dev4 +lvconvert -m+1 $vg/$lv1 "$dev4" lvchange -ay $vg/$lv1 lvconvert $vg/$lv1 # wait -check mirror $vg $lv1 $dev3 +check mirror $vg $lv1 "$dev3" check mirror_no_temporaries $vg $lv1 lvremove -ff $vg @@ -157,45 +156,45 @@ # removal during conversion # "remove newly added mirror" -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0 -lvconvert -m+1 -b $vg/$lv1 $dev4 -lvconvert -m-1 $vg/$lv1 $dev4 +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3:0" +lvconvert -m+1 -b $vg/$lv1 "$dev4" +lvconvert -m-1 $vg/$lv1 "$dev4" lvconvert $vg/$lv1 # wait -check mirror $vg $lv1 $dev3 +check mirror $vg $lv1 "$dev3" check mirror_no_temporaries $vg $lv1 check mirror_legs $vg $lv1 2 lvremove -ff $vg # "remove one of newly added mirrors" -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0 -lvconvert -m+2 -b $vg/$lv1 $dev4 $dev5 -lvconvert -m-1 $vg/$lv1 $dev4 +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3:0" +lvconvert -m+2 -b $vg/$lv1 "$dev4" "$dev5" +lvconvert -m-1 $vg/$lv1 "$dev4" lvconvert $vg/$lv1 # wait -check mirror $vg $lv1 $dev3 +check mirror $vg $lv1 "$dev3" check mirror_no_temporaries $vg $lv1 check mirror_legs $vg $lv1 3 lvremove -ff $vg # "remove from original mirror (the original is still mirror)" -lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev5 $dev3:0 -lvconvert -m+1 -b $vg/$lv1 $dev4 -lvconvert -m-1 $vg/$lv1 $dev2 -lvconvert $vg/$lv1 +lvcreate -l2 -m2 -n $lv1 $vg "$dev1" "$dev2" "$dev5" "$dev3:0" +lvconvert -m+1 -b $vg/$lv1 "$dev4" +lvconvert -m-1 $vg/$lv1 "$dev2" +lvconvert $vg/$lv1 -check mirror $vg $lv1 $dev3 +check mirror $vg $lv1 "$dev3" check mirror_no_temporaries $vg $lv1 check mirror_legs $vg $lv1 3 lvremove -ff $vg # "remove from original mirror (the original becomes linear)" -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0 -lvconvert -m+1 -b $vg/$lv1 $dev4 -lvconvert -m-1 $vg/$lv1 $dev2 -lvconvert $vg/$lv1 +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3:0" +lvconvert -m+1 -b $vg/$lv1 "$dev4" +lvconvert -m-1 $vg/$lv1 "$dev2" +lvconvert $vg/$lv1 -check mirror $vg $lv1 $dev3 +check mirror $vg $lv1 "$dev3" check mirror_no_temporaries $vg $lv1 check mirror_legs $vg $lv1 2 lvremove -ff $vg @@ -203,21 +202,21 @@ # --------------------------------------------------------------------- # "rhbz440405: lvconvert -m0 incorrectly fails if all PEs allocated" -lvcreate -l`pvs --noheadings -ope_count $dev1` -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0 +lvcreate -l`pvs --noheadings -ope_count "$dev1"` -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3:0" wait_for_mirror_in_sync_ $vg/$lv1 -lvconvert -m0 $vg/$lv1 $dev1 +lvconvert -m0 $vg/$lv1 "$dev1" check linear $vg $lv1 lvremove -ff $vg # "rhbz264241: lvm mirror doesn't lose it's "M" --nosync attribute after being down and the up converted" -lvcreate -l2 -m1 -n$lv1 --nosync $vg +lvcreate -l2 -m1 -n$lv1 --nosync $vg lvconvert -m0 $vg/$lv1 lvconvert -m1 $vg/$lv1 lvs --noheadings -o attr $vg/$lv1 | grep '^ *m' lvremove -ff $vg # lvconvert from linear (on multiple PVs) to mirror -lvcreate -l 8 -n $lv1 $vg $dev1:0-3 $dev2:0-3 +lvcreate -l 8 -n $lv1 $vg "$dev1:0-3" "$dev2:0-3" lvconvert -m1 $vg/$lv1 should check mirror $vg $lv1 @@ -225,7 +224,7 @@ lvremove -ff $vg # BZ 463272: disk log mirror convert option is lost if downconvert option is also given -lvcreate -l1 -m2 --corelog -n $lv1 $vg $dev1 $dev2 $dev3 +lvcreate -l1 -m2 --corelog -n $lv1 $vg "$dev1" "$dev2" "$dev3" wait_for_mirror_in_sync_ $vg/$lv1 lvconvert -m1 --mirrorlog disk $vg/$lv1 check mirror $vg $lv1 @@ -235,13 +234,13 @@ # --- # add mirror and disk log -# "add 1 mirror and disk log" -lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $dev1 $dev2 +# "add 1 mirror and disk log" +lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg "$dev1" "$dev2" # FIXME on next line, specifying $dev3:0 $dev4 (i.e log device first) fails (!) -lvconvert -m+1 --mirrorlog disk -i1 $vg/$lv1 $dev4 $dev3:0 +lvconvert -m+1 --mirrorlog disk -i1 $vg/$lv1 "$dev4" "$dev3:0" -check mirror $vg $lv1 $dev3 +check mirror $vg $lv1 "$dev3" check mirror_no_temporaries $vg $lv1 check mirror_legs $vg $lv1 3 lvremove -ff $vg --- LVM2/test/shell/lvconvert-raid.sh 2012/03/15 20:00:54 1.4 +++ LVM2/test/shell/lvconvert-raid.sh 2012/03/16 13:00:06 1.5 @@ -1,6 +1,5 @@ -#!/bin/bash - -# Copyright (C) 2011 Red Hat, Inc. All rights reserved. +#!/bin/sh +# Copyright (C) 2011-2012 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions @@ -13,22 +12,19 @@ . lib/test # is_in_sync -function is_in_sync() -{ - local dm_name +is_in_sync_() { local a local b local idx - - dm_name=`echo $1 | sed s:-:--: | sed s:/:-:` + local dm_name=$(echo $1 | sed s:-:--: | sed s:/:-:) if ! a=(`dmsetup status $dm_name`); then echo "Unable to get sync status of $1" - exit 1 + return 1 elif [ ${a[2]} = "snapshot-origin" ]; then if ! a=(`dmsetup status ${dm_name}-real`); then echo "Unable to get sync status of $1" - exit 1 + return 1 fi fi @@ -41,9 +37,9 @@ idx=$((${a[3]} + 4)) else echo "Unable to get sync ratio for target type '${a[2]}'" - exit 1 + return 1 fi - b=(`echo ${a[$idx]} | sed s:/:' ':`) + b=( $(echo ${a[$idx]} | sed s:/:' ':) ) if [ ${b[0]} != ${b[1]} ]; then echo "$dm_name (${a[3]}) is not in-sync" @@ -52,7 +48,7 @@ if [[ ${a[$(($idx - 1))]} =~ a ]]; then echo "$dm_name in-sync, but 'a' characters in health status" - exit 1 + return 1 fi if [ ${a[2]} = "raid" ]; then @@ -60,49 +56,26 @@ else echo "$dm_name (${a[2]}) is in-sync" fi - - return 0 } # wait_for_sync -function wait_for_sync() -{ - local i=0 - - while ! is_in_sync $1; do - sleep 2 - i=$(($i + 1)) - if [ $i -gt 500 ]; then - echo "Sync is taking too long - assume stuck" - exit 1 - fi +wait_for_sync_() { + for i in {1..100} ; do + is_in_sync_ $1 && return + sleep 1 done -} - -function is_raid_available() -{ - local a - - modprobe dm-raid - a=(`dmsetup targets | grep raid`) - if [ -z $a ]; then - echo "RAID target not available" - return 1 - fi - if [ ${a[1]} != "v1.1.0" ]; then - echo "Bad RAID version" - return 1 - fi - return 0 + echo "Sync is taking too long - assume stuck" + return 1 } ######################################################## # MAIN ######################################################## -is_raid_available || skip +aux target_at_least dm-raid 1 1 0 || skip -aux prepare_vg 5 80 +aux prepare_pvs 5 80 +vgcreate -c n -s 256k $vg $(cat DEVICES) ########################################### # RAID1 convert tests @@ -138,7 +111,7 @@ lvcreate -l 2 -n $lv1 $vg else lvcreate --type raid1 -m $(($i - 1)) -l 2 -n $lv1 $vg - wait_for_sync $vg/$lv1 + wait_for_sync_ $vg/$lv1 fi if $under_snap; then @@ -159,7 +132,7 @@ # 3-way to 2-way convert while specifying devices lvcreate --type raid1 -m 2 -l 2 -n $lv1 $vg $dev1 $dev2 $dev3 -wait_for_sync $vg/$lv1 +wait_for_sync_ $vg/$lv1 lvconvert -m1 $vg/$lv1 $dev2 lvremove -ff $vg @@ -172,7 +145,7 @@ ########################################### # 3-way to 2-way/linear lvcreate --type raid1 -m 2 -l 2 -n $lv1 $vg -wait_for_sync $vg/$lv1 +wait_for_sync_ $vg/$lv1 lvconvert --splitmirrors 1 -n $lv2 $vg/$lv1 check lv_exists $vg $lv1 check linear $vg $lv2 @@ -181,7 +154,7 @@ # 2-way to linear/linear lvcreate --type raid1 -m 1 -l 2 -n $lv1 $vg -wait_for_sync $vg/$lv1 +wait_for_sync_ $vg/$lv1 lvconvert --splitmirrors 1 -n $lv2 $vg/$lv1 check linear $vg $lv1 check linear $vg $lv2 @@ -190,7 +163,7 @@ # 3-way to linear/2-way lvcreate --type raid1 -m 2 -l 2 -n $lv1 $vg -wait_for_sync $vg/$lv1 +wait_for_sync_ $vg/$lv1 # FIXME: Can't split off a RAID1 from a RAID1 yet should lvconvert --splitmirrors 2 -n $lv2 $vg/$lv1 #check linear $vg $lv1 @@ -203,7 +176,7 @@ ########################################### # 3-way to 2-way/linear lvcreate --type raid1 -m 2 -l 2 -n $lv1 $vg -wait_for_sync $vg/$lv1 +wait_for_sync_ $vg/$lv1 lvconvert --splitmirrors 1 --trackchanges $vg/$lv1 check lv_exists $vg $lv1 check linear $vg ${lv1}_rimage_2 @@ -216,7 +189,7 @@ ########################################### for i in 1 2 3 ; do lvcreate --type mirror -m $i -l 2 -n $lv1 $vg - wait_for_sync $vg/$lv1 + wait_for_sync_ $vg/$lv1 lvconvert --type raid1 $vg/$lv1 lvremove -ff $vg done --- LVM2/test/shell/lvconvert-repair-dmeventd.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvconvert-repair-dmeventd.sh 2012/03/16 13:00:06 1.2 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright (C) 2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -11,16 +11,18 @@ . lib/test +which mkfs.ext2 || skip + aux prepare_vg 5 aux prepare_dmeventd -which mkfs.ext2 || exit 200 - lvcreate -m 3 --ig -L 1 -n 4way $vg lvchange --monitor y $vg/4way -aux disable_dev $dev2 $dev4 +aux disable_dev "$dev2" "$dev4" mkfs.ext2 $DM_DEV_DIR/$vg/4way sleep 10 # FIXME: need a "poll" utility, akin to "check" -aux enable_dev $dev2 $dev4 +aux enable_dev "$dev2" "$dev4" check mirror $vg 4way check mirror_legs $vg 4way 2 + +vgremove -ff $vg --- LVM2/test/shell/lvconvert-repair-policy.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvconvert-repair-policy.sh 2012/03/16 13:00:06 1.2 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright (C) 2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -20,10 +20,10 @@ # is always on $dev3. ($dev4 behaves as a spare) cleanup() { vgreduce --removemissing $vg - for d in "$@"; do aux enable_dev $d; done - for d in "$@"; do vgextend $vg $d; done + for d in "$@"; do aux enable_dev "$d"; done + for d in "$@"; do vgextend $vg "$d"; done lvremove -ff $vg/mirror - lvcreate -m 1 --ig -l 2 -n mirror $vg $dev1 $dev2 $dev3:0 + lvcreate -m 1 --ig -l 2 -n mirror $vg "$dev1" "$dev2" "$dev3":0 } repair() { @@ -34,58 +34,58 @@ lvchange -a n $vg/mirror # Fail a leg of a mirror. -aux disable_dev $dev1 +aux disable_dev "$dev1" lvchange --partial -a y $vg/mirror repair 'activation { mirror_image_fault_policy = "remove" }' check linear $vg mirror -cleanup $dev1 +cleanup "$dev1" # Fail a leg of a mirror. # Expected result: Mirror (leg replaced, should retain log) -aux disable_dev $dev1 +aux disable_dev "$dev1" repair 'activation { mirror_image_fault_policy = "replace" mirror_log_fault_policy = "remove" }' check mirror $vg mirror check active $vg mirror_mlog -cleanup $dev1 +cleanup "$dev1" # Fail a leg of a mirror. # Expected result: Mirror (leg replaced) -aux disable_dev $dev1 +aux disable_dev "$dev1" repair 'activation { mirror_image_fault_policy = "replace" }' check mirror $vg mirror check active $vg mirror_mlog -cleanup $dev1 +cleanup "$dev1" # Fail a leg of a mirror (use old name for policy specification) # Expected result: Mirror (leg replaced) -aux disable_dev $dev1 +aux disable_dev "$dev1" repair 'activation { mirror_image_fault_policy = "replace" }' check mirror $vg mirror check active $vg mirror_mlog -cleanup $dev1 +cleanup "$dev1" # Fail a leg of a mirror w/ no available spare # Expected result: linear # (or 2-way with leg/log overlap if alloc anywhere) -aux disable_dev $dev2 $dev4 +aux disable_dev "$dev2" "$dev4" repair 'activation { mirror_image_fault_policy = "replace" }' check mirror $vg mirror not check lv_exists $vg mirror_mlog -cleanup $dev2 $dev4 +cleanup "$dev2" "$dev4" # Fail the log device of a mirror w/ no available spare # Expected result: mirror w/ corelog -aux disable_dev $dev3 $dev4 +aux disable_dev "$dev3" "$dev4" repair 'activation { mirror_image_fault_policy = "replace" }' $vg/mirror check mirror $vg mirror not check lv_exists $vg mirror_mlog -cleanup $dev3 $dev4 +cleanup "$dev3" "$dev4" # Fail the log device with a remove policy # Expected result: mirror w/ corelog lvchange -a y $vg/mirror -aux disable_dev $dev3 $dev4 +aux disable_dev "$dev3" "$dev4" repair 'activation { mirror_log_fault_policy = "remove" }' check mirror $vg mirror core not check lv_exists $vg mirror_mlog -cleanup $dev3 $dev4 +cleanup "$dev3" "$dev4" --- LVM2/test/shell/lvconvert-repair-replace.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvconvert-repair-replace.sh 2012/03/16 13:00:06 1.2 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright (C) 2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -17,77 +17,76 @@ # 3-way, disk log # multiple failures, full replace -lvcreate --mirrorlog disk -m 2 --ig -L 1 -n 3way $vg $dev1 $dev2 $dev3 $dev4:0-1 -aux disable_dev $dev1 $dev2 +lvcreate --mirrorlog disk -m 2 --ig -L 1 -n 3way $vg "$dev1" "$dev2" "$dev3" "$dev4":0-1 +aux disable_dev "$dev1" "$dev2" echo y | lvconvert --repair $vg/3way 2>&1 | tee 3way.out -lvs -a -o +devices | not grep unknown +lvs -a -o +devices $vg | not grep unknown not grep "WARNING: Failed" 3way.out vgreduce --removemissing $vg check mirror $vg 3way -aux enable_dev $dev1 $dev2 +aux enable_dev "$dev1" "$dev2" -vgremove -ff $vg; vgcreate -c n $vg $dev1 $dev2 $dev3 $dev4 $dev5 $dev6 +vgremove -ff $vg; vgcreate -c n $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" "$dev6" # 2-way, mirrored log # Double log failure, full replace lvcreate --mirrorlog mirrored -m 1 --ig -L 1 -n 2way $vg \ - $dev1 $dev2 $dev3:0 $dev4:0 -aux disable_dev $dev3 $dev4 + "$dev1" "$dev2" "$dev3":0 "$dev4":0 +aux disable_dev "$dev3" "$dev4" echo y | lvconvert --repair $vg/2way 2>&1 | tee 2way.out -lvs -a -o +devices | not grep unknown +lvs -a -o +devices $vg | not grep unknown not grep "WARNING: Failed" 2way.out vgreduce --removemissing $vg check mirror $vg 2way -aux enable_dev $dev3 $dev4 +aux enable_dev "$dev3" "$dev4" -vgremove -ff $vg; vgcreate -c n $vg $dev1 $dev2 $dev3 $dev4 $dev5 $dev6 +vgremove -ff $vg; vgcreate -c n $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" "$dev6" # 3-way, mirrored log # Single log failure, replace lvcreate --mirrorlog mirrored -m 2 --ig -L 1 -n 3way $vg \ - $dev1 $dev2 $dev3 $dev4:0 $dev5:0 -aux disable_dev $dev4 + "$dev1" "$dev2" "$dev3" "$dev4":0 "$dev5":0 +aux disable_dev "$dev4" echo y | lvconvert --repair $vg/3way 2>&1 | tee 3way.out -lvs -a -o +devices | not grep unknown +lvs -a -o +devices $vg | not grep unknown not grep "WARNING: Failed" 3way.out vgreduce --removemissing $vg check mirror $vg 3way -aux enable_dev $dev4 +aux enable_dev "$dev4" -vgremove -ff $vg; vgcreate -c n $vg $dev1 $dev2 $dev3 $dev4 $dev5 +vgremove -ff $vg; vgcreate -c n $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" # 3-way, disk log # multiple failures, partial replace -lvcreate --mirrorlog disk -m 2 --ig -L 1 -n 3way $vg $dev1 $dev2 $dev3 $dev4 -aux disable_dev $dev1 $dev2 +lvcreate --mirrorlog disk -m 2 --ig -L 1 -n 3way $vg "$dev1" "$dev2" "$dev3" "$dev4" +aux disable_dev "$dev1" "$dev2" echo y | lvconvert --repair $vg/3way 2>&1 | tee 3way.out grep "WARNING: Failed" 3way.out -lvs -a -o +devices | not grep unknown +lvs -a -o +devices $vg | not grep unknown vgreduce --removemissing $vg check mirror $vg 3way -aux enable_dev $dev1 $dev2 +aux enable_dev "$dev1" "$dev2" lvchange -a n $vg/3way -vgremove -ff $vg; vgcreate -c n $vg $dev1 $dev2 $dev3 +vgremove -ff $vg; vgcreate -c n $vg "$dev1" "$dev2" "$dev3" -lvcreate --mirrorlog disk -m 1 --ig -L 1 -n 2way $vg $dev1 $dev2 $dev3 -aux disable_dev $dev1 +lvcreate --mirrorlog disk -m 1 --ig -L 1 -n 2way $vg "$dev1" "$dev2" "$dev3" +aux disable_dev "$dev1" echo y | lvconvert --repair $vg/2way 2>&1 | tee 2way.out grep "WARNING: Failed" 2way.out -lvs -a -o +devices | not grep unknown +lvs -a -o +devices $vg | not grep unknown vgreduce --removemissing $vg check mirror $vg 2way -aux enable_dev $dev1 $dev2 +aux enable_dev "$dev1" "$dev2" lvchange -a n $vg/2way -vgremove -ff $vg; vgcreate -c n $vg $dev1 $dev2 $dev3 $dev4 +vgremove -ff $vg; vgcreate -c n $vg "$dev1" "$dev2" "$dev3" "$dev4" # Test repair of inactive mirror with log failure # Replacement should fail, but covert should succeed (switch to corelog) -lvcreate -m 2 --ig -l 2 -n mirror2 $vg $dev1 $dev2 $dev3 $dev4:0 +lvcreate -m 2 --ig -l 2 -n mirror2 $vg "$dev1" "$dev2" "$dev3" "$dev4":0 vgchange -a n $vg -pvremove -ff -y $dev4 +pvremove -ff -y "$dev4" echo 'y' | lvconvert -y --repair $vg/mirror2 check mirror $vg mirror2 -vgs - +vgs $vg --- LVM2/test/shell/lvconvert-repair-snapshot.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvconvert-repair-snapshot.sh 2012/03/16 13:00:06 1.2 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2011 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -14,14 +15,13 @@ aux lvmconf 'allocation/maximise_cling = 0' aux lvmconf 'allocation/mirror_logs_require_separate_pvs = 1' -lvcreate -m 3 --ig -L 2M -n 4way $vg $dev1 $dev2 $dev3 $dev4 $dev5:0 +lvcreate -m 3 --ig -L 2M -n 4way $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5":0 lvcreate -s $vg/4way -L 2M -n snap -aux disable_dev $dev2 $dev4 +aux disable_dev "$dev2" "$dev4" echo n | lvconvert --repair $vg/4way 2>&1 | tee 4way.out -lvs -a -o +devices | not grep unknown +lvs -a -o +devices $vg | not grep unknown vgreduce --removemissing $vg -aux enable_dev $dev2 $dev4 -lvs -a -o +devices -check mirror $vg 4way $dev5 - +aux enable_dev "$dev2" "$dev4" +lvs -a -o +devices $vg +check mirror $vg 4way "$dev5" --- LVM2/test/shell/lvconvert-repair-transient-dmeventd.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvconvert-repair-transient-dmeventd.sh 2012/03/16 13:00:06 1.2 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright (C) 2011 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -16,12 +16,14 @@ lvcreate -m 3 --ig -L 1 -n 4way $vg lvchange --monitor y $vg/4way -aux disable_dev $dev2 $dev4 +aux disable_dev "$dev2" "$dev4" mkfs.ext3 $DM_DEV_DIR/$vg/4way -aux enable_dev $dev2 $dev4 +aux enable_dev "$dev2" "$dev4" sleep 3 -lvs -a -o +devices | not grep unknown +lvs -a -o +devices $vg | not grep unknown check mirror $vg 4way check mirror_legs $vg 4way 2 -lvs -a -o +devices | not grep mimage_1 -lvs -a -o +devices | not grep mimage_3 +lvs -a -o +devices $vg | not grep mimage_1 +lvs -a -o +devices $vg | not grep mimage_3 + +vgremove -f $vg --- LVM2/test/shell/lvconvert-repair-transient.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvconvert-repair-transient.sh 2012/03/16 13:00:06 1.2 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright (C) 2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -14,13 +14,15 @@ aux prepare_vg 5 lvcreate -m 3 --ig -L 1 -n 4way $vg -aux disable_dev $dev2 $dev4 +aux disable_dev "$dev2" "$dev4" mkfs.ext3 $DM_DEV_DIR/$vg/4way & sleep 1 -aux enable_dev $dev2 $dev4 +aux enable_dev "$dev2" "$dev4" echo n | lvconvert --repair $vg/4way 2>&1 | tee 4way.out lvs -a -o +devices | not grep unknown vgreduce --removemissing $vg check mirror $vg 4way lvchange -a n $vg/4way wait + +vgremove -f $vg --- LVM2/test/shell/lvconvert-repair.sh 2012/03/04 16:02:19 1.2 +++ LVM2/test/shell/lvconvert-repair.sh 2012/03/16 13:00:06 1.3 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright (C) 2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -24,91 +24,91 @@ # 4-way, disk log => 2-way, disk log aux prepare_vg 5 -lvcreate -m 3 --ig -L 1 -n 4way $vg $dev1 $dev2 $dev3 $dev4 $dev5:0 -aux disable_dev $dev2 $dev4 +lvcreate -m 3 --ig -L 1 -n 4way $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5":0 +aux disable_dev "$dev2" "$dev4" echo n | lvconvert --repair $vg/4way 2>&1 | tee 4way.out -lvs -a -o +devices | not grep unknown +lvs -a -o +devices $vg | not grep unknown vgreduce --removemissing $vg -aux enable_dev $dev2 $dev4 -check mirror $vg 4way $dev5 +aux enable_dev "$dev2" "$dev4" +check mirror $vg 4way "$dev5" # 3-way, disk log => linear recreate_vg_ lvcreate -m 2 --ig -L 1 -n 3way $vg -aux disable_dev $dev1 $dev2 +aux disable_dev "$dev1" "$dev2" echo n | lvconvert --repair $vg/3way check linear $vg 3way -lvs -a -o +devices | not grep unknown -lvs -a -o +devices | not grep mlog +lvs -a -o +devices $vg | not grep unknown +lvs -a -o +devices $vg | not grep mlog dmsetup ls | grep $PREFIX | not grep mlog vgreduce --removemissing $vg -aux enable_dev $dev1 $dev2 +aux enable_dev "$dev1" "$dev2" check linear $vg 3way # fail just log and get it removed # 3-way, disk log => 3-way, core log recreate_vg_ -lvcreate -m 2 --ig -L 1 -n 3way $vg $dev1 $dev2 $dev3 $dev4:0 -aux disable_dev $dev4 +lvcreate -m 2 --ig -L 1 -n 3way $vg "$dev1" "$dev2" "$dev3" "$dev4":0 +aux disable_dev "$dev4" echo n | lvconvert --repair $vg/3way check mirror $vg 3way core -lvs -a -o +devices | not grep unknown -lvs -a -o +devices | not grep mlog +lvs -a -o +devices $vg | not grep unknown +lvs -a -o +devices $vg | not grep mlog dmsetup ls | grep $PREFIX | not grep mlog vgreduce --removemissing $vg -aux enable_dev $dev4 +aux enable_dev "$dev4" # 3-way, mirrored log => 3-way, core log recreate_vg_ lvcreate -m 2 --mirrorlog mirrored --ig -L 1 -n 3way $vg \ - $dev1 $dev2 $dev3 $dev4:0 $dev5:0 -aux disable_dev $dev4 $dev5 + "$dev1" "$dev2" "$dev3" "$dev4":0 "$dev5":0 +aux disable_dev "$dev4" "$dev5" echo n | lvconvert --repair $vg/3way check mirror $vg 3way core -lvs -a -o +devices | not grep unknown -lvs -a -o +devices | not grep mlog +lvs -a -o +devices $vg | not grep unknown +lvs -a -o +devices $vg | not grep mlog dmsetup ls | grep $PREFIX | not grep mlog vgreduce --removemissing $vg -aux enable_dev $dev4 $dev5 +aux enable_dev "$dev4" "$dev5" # 2-way, disk log => 2-way, core log recreate_vg_ -lvcreate -m 1 --ig -L 1 -n 2way $vg $dev1 $dev2 $dev3:0 -aux disable_dev $dev3 +lvcreate -m 1 --ig -L 1 -n 2way $vg "$dev1" "$dev2" "$dev3":0 +aux disable_dev "$dev3" echo n | lvconvert --repair $vg/2way check mirror $vg 2way core -lvs -a -o +devices | not grep unknown -lvs -a -o +devices | not grep mlog +lvs -a -o +devices $vg | not grep unknown +lvs -a -o +devices $vg | not grep mlog vgreduce --removemissing $vg -aux enable_dev $dev3 +aux enable_dev "$dev3" # fail single devices recreate_vg_ -vgreduce $vg $dev4 +vgreduce $vg "$dev4" lvcreate -m 1 --ig -L 1 -n mirror $vg lvchange -a n $vg/mirror -vgextend $vg $dev4 -aux disable_dev $dev1 +vgextend $vg "$dev4" +aux disable_dev "$dev1" lvchange --partial -a y $vg/mirror not vgreduce -v --removemissing $vg lvconvert -y --repair $vg/mirror vgreduce --removemissing $vg -aux enable_dev $dev1 -vgextend $vg $dev1 -aux disable_dev $dev2 +aux enable_dev "$dev1" +vgextend $vg "$dev1" +aux disable_dev "$dev2" lvconvert -y --repair $vg/mirror vgreduce --removemissing $vg -aux enable_dev $dev2 -vgextend $vg $dev2 -aux disable_dev $dev3 +aux enable_dev "$dev2" +vgextend $vg "$dev2" +aux disable_dev "$dev3" lvconvert -y --repair $vg/mirror vgreduce --removemissing $vg -aux enable_dev $dev3 -vgextend $vg $dev3 +aux enable_dev "$dev3" +vgextend $vg "$dev3" vgremove -ff $vg --- LVM2/test/shell/lvconvert-twostep.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvconvert-twostep.sh 2012/03/16 13:00:06 1.2 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright (C) 2010 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -14,13 +14,13 @@ aux prepare_vg 4 lvcreate -m 1 --mirrorlog disk --ig -L 1 -n mirror $vg -not lvconvert -m 2 --mirrorlog core $vg/mirror $dev3 2>&1 | tee errs +not lvconvert -m 2 --mirrorlog core $vg/mirror "$dev3" 2>&1 | tee errs grep "two steps" errs -lvconvert -m 2 $vg/mirror $dev3 +lvconvert -m 2 $vg/mirror "$dev3" lvconvert --mirrorlog core $vg/mirror -not lvconvert -m 1 --mirrorlog disk $vg/mirror $dev3 2>&1 | tee errs +not lvconvert -m 1 --mirrorlog disk $vg/mirror "$dev3" 2>&1 | tee errs grep "two steps" errs -not lvconvert -m 1 --mirrorlog mirrored $vg/mirror $dev3 $dev4 2>&1 | tee errs +not lvconvert -m 1 --mirrorlog mirrored $vg/mirror "$dev3" "$dev4" 2>&1 | tee errs grep "two steps" errs --- LVM2/test/shell/lvcreate-mirror.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvcreate-mirror.sh 2012/03/16 13:00:06 1.2 @@ -15,27 +15,27 @@ aux lvmconf 'allocation/mirror_logs_require_separate_pvs = 1' # 2-way mirror with corelog, 2 PVs -lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $dev1 $dev2 +lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg "$dev1" "$dev2" check mirror_images_redundant $vg $lv1 lvremove -ff $vg # 2-way mirror with disklog, 3 PVs -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3":0-1 check mirror_images_redundant $vg $lv1 -check mirror_log_on $vg $lv1 $dev3 +check mirror_log_on $vg $lv1 "$dev3" lvremove -ff $vg # 3-way mirror with disklog, 4 PVs -lvcreate -l2 -m2 --mirrorlog disk -n $lv1 $vg $dev1 $dev2 $dev4 $dev3:0-1 +lvcreate -l2 -m2 --mirrorlog disk -n $lv1 $vg "$dev1" "$dev2" "$dev4" "$dev3":0-1 check mirror_images_redundant $vg $lv1 -check mirror_log_on $vg $lv1 $dev3 +check mirror_log_on $vg $lv1 "$dev3" lvremove -ff $vg # lvcreate --nosync is in 100% sync after creation (bz429342) -lvcreate -l2 -m1 --nosync -n $lv1 $vg $dev1 $dev2 $dev3:0-1 2>out +lvcreate -l2 -m1 --nosync -n $lv1 $vg "$dev1" "$dev2" "$dev3":0-1 2>out grep "New mirror won't be synchronised." out lvs -o copy_percent --noheadings $vg/$lv1 | grep 100.00 lvremove -ff $vg # creating 2-way mirror with disklog from 2 PVs fails -not lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 +not lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" --- LVM2/test/shell/lvcreate-operation.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvcreate-operation.sh 2012/03/16 13:00:06 1.2 @@ -22,22 +22,22 @@ } aux prepare_pvs 2 -aux pvcreate --metadatacopies 0 $dev1 +aux pvcreate --metadatacopies 0 "$dev1" aux vgcreate -c n $vg $(cat DEVICES) # --- # Create snapshots of LVs on --metadatacopies 0 PV (bz450651) -lvcreate -n$lv1 -l4 $vg $dev1 +lvcreate -n$lv1 -l4 $vg "$dev1" lvcreate -n$lv2 -l4 -s $vg/$lv1 lvcreate -n$lv3 -l4 --permission r -s $vg/$lv1 cleanup_lvs # --- # Create mirror on two devices with mirrored log using --alloc anywhere -lvcreate -m 1 -l4 -n $lv1 --mirrorlog mirrored $vg --alloc anywhere $dev1 $dev2 +lvcreate -m 1 -l4 -n $lv1 --mirrorlog mirrored $vg --alloc anywhere "$dev1" "$dev2" cleanup_lvs # -- # Create mirror on one dev with mirrored log using --alloc anywhere, should fail -not lvcreate -m 1 -l4 -n $lv1 --mirrorlog mirrored $vg --alloc anywhere $dev1 +not lvcreate -m 1 -l4 -n $lv1 --mirrorlog mirrored $vg --alloc anywhere "$dev1" cleanup_lvs --- LVM2/test/shell/lvcreate-pvtags.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvcreate-pvtags.sh 2012/03/16 13:00:06 1.2 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -15,7 +16,7 @@ aux lvmconf 'allocation/mirror_logs_require_separate_pvs = 1' # not required, just testing -aux pvcreate --metadatacopies 0 $dev1 +aux pvcreate --metadatacopies 0 "$dev1" vgcreate -c n $vg $(cat DEVICES) pvchange --addtag fast $(cat DEVICES) @@ -42,6 +43,6 @@ not lvcreate -l1 -m3 --corelog $vg @fast # lvcreate mirror with a single PV arg -not lvcreate -l1 -m1 --corelog $vg $dev1 +not lvcreate -l1 -m1 --corelog $vg "$dev1" vgremove -ff $vg --- LVM2/test/shell/lvcreate-raid.sh 2012/03/04 16:02:19 1.2 +++ LVM2/test/shell/lvcreate-raid.sh 2012/03/16 13:00:06 1.3 @@ -1,5 +1,4 @@ -#!/bin/bash - +#!/bin/sh # Copyright (C) 2011 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -15,13 +14,11 @@ # is_raid_in_sync function is_raid_in_sync() { - local dm_name + local dm_name=$(echo $1 | sed s:-:--: | sed s:/:-:) local a local b local idx - dm_name=`echo $1 | sed s:-:--: | sed s:/:-:` - if ! a=(`dmsetup status $dm_name`); then echo "Unable to get sync status of $1" exit 1 --- LVM2/test/shell/lvcreate-repair.sh 2012/02/23 23:58:42 1.4 +++ LVM2/test/shell/lvcreate-repair.sh 2012/03/16 13:00:06 1.5 @@ -1,5 +1,5 @@ -#!/bin/bash -# Copyright (C) 2011 Red Hat, Inc. All rights reserved. +#!/bin/sh +# Copyright (C) 2011-2012 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions @@ -14,39 +14,38 @@ aux prepare_vg 3 # fail multiple devices -for i in $dev1 $dev2 $dev3 ; do - for j in $dev2 $dev3 ; do - - if test $i = $j ; then continue ; fi +for i in "$dev1" "$dev2" "$dev3" ; do + for j in "$dev2" "$dev3" ; do + if test "$i" = "$j" ; then continue ; fi vgremove -ff $vg - vgcreate $vg $dev1 $dev2 $dev3 + vgcreate $vg "$dev1" "$dev2" "$dev3" # exit 1 - lvcreate -l1 -n $lv1 $vg $dev1 + lvcreate -l1 -n $lv1 $vg "$dev1" - aux disable_dev $i $j + aux disable_dev "$i" "$j" vgreduce --removemissing --force $vg # check if reduced device was removed - test $i = $dev1 && dmsetup table | not egrep "$vg-$lv1: *[^ ]+" >/dev/null + test "$i" = "$dev1" && dmsetup table | not egrep "$vg-$lv1: *[^ ]+" >/dev/null lvcreate -l1 -n $lv2 $vg - test $i != $dev1 && check lv_exists $vg $lv1 + test "$i" != "$dev1" && check lv_exists $vg $lv1 check lv_exists $vg $lv2 - aux enable_dev $i $j + aux enable_dev "$i" "$j" vgscan - test $i != $dev1 && check lv_exists $vg $lv1 + test "$i" != "$dev1" && check lv_exists $vg $lv1 check lv_exists $vg $lv2 done done vgremove -ff $vg -vgcreate $vg $dev1 $dev2 $dev3 +vgcreate $vg "$dev1" "$dev2" "$dev3" # use tricky 'dd' for i in "$dev1" "$dev2" "$dev3" ; do @@ -57,7 +56,7 @@ dd if="$i" of=backup_i bs=256K count=1 dd if="$j" of=backup_j bs=256K count=1 - lvcreate -l1 -n $lv1 $vg $dev1 + lvcreate -l1 -n $lv1 $vg "$dev1" dd if=backup_j of="$j" bs=256K count=1 dd if=backup_i of="$i" bs=256K count=1 @@ -73,7 +72,7 @@ dd if="$dev1" of=backup_i bs=256K count=1 dd if="$dev2" of=backup_j bs=256K count=1 -lvcreate -l1 $vg $dev1 +lvcreate -l1 $vg "$dev1" dd if=backup_j of="$dev2" bs=256K count=1 dd if=backup_i of="$dev1" bs=256K count=1 @@ -86,7 +85,7 @@ # dirty game dd if=/dev/zero of="$dev3" bs=256K count=1 -aux notify_lvmetad $dev3 # udev be watching you +aux notify_lvmetad "$dev3" # udev be watching you vgreduce --removemissing --force $vg @@ -97,4 +96,4 @@ # device-mapper: create ioctl failed: Device or resource busy # Failed to activate new LV. -should lvcreate -l1 $vg $dev1 +should lvcreate -l1 $vg "$dev1" --- LVM2/test/shell/lvcreate-small-snap.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvcreate-small-snap.sh 2012/03/16 13:00:06 1.2 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright (C) 2010 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, --- LVM2/test/shell/lvcreate-thin.sh 2012/03/04 16:04:52 1.3 +++ LVM2/test/shell/lvcreate-thin.sh 2012/03/16 13:00:06 1.4 @@ -15,13 +15,6 @@ . lib/test -check_lv_exists_() -{ - for d in $*; do - check lv_exists $vg $d - done -} - check_lv_field_modules_() { mod=$1 @@ -87,7 +80,7 @@ lvcreate -L4M -V2G --type thin --thinpool $vg/pool5 lvcreate -L4M -V2G --type thin --thinpool pool6 $vg -check_lv_exists_ lvol0 lvol1 lvol2 lvol3 lvol4 lvol5 +check lv_exists $vg lvol0 lvol1 lvol2 lvol3 lvol4 lvol5 lvremove -ff $vg @@ -99,7 +92,7 @@ lvcreate -L4M -V2G -T --thinpool pool5 --name lv5 $vg lvcreate -L4M -V2G -T --thinpool pool6 --name $vg/lv6 $vg -check_lv_exists_ lv1 lv2 lv3 lv4 lv5 lv6 +check lv_exists $vg lv1 lv2 lv3 lv4 lv5 lv6 lvremove -ff $vg @@ -110,7 +103,7 @@ lvcreate -L4M -V2G --type thin --thinpool pool5 --name lv5 $vg lvcreate -L4M -V2G --type thin --thinpool pool6 --name $vg/lv6 $vg -check_lv_exists_ lv1 lv2 lv3 lv4 lv5 lv6 +check lv_exists $vg lv1 lv2 lv3 lv4 lv5 lv6 lvremove -ff $vg @@ -123,7 +116,7 @@ lvcreate -V2G --type thin --thinpool $vg/pool lvcreate -V2G --type thin --thinpool pool $vg -check_lv_exists_ lvol0 lvol1 lvol2 lvol3 lvol4 lvol5 +check lv_exists $vg lvol0 lvol1 lvol2 lvol3 lvol4 lvol5 # Create named thin LV in existing pool @@ -140,7 +133,7 @@ lvcreate -V2G --type thin --thinpool pool --name lv11 $vg lvcreate -V2G --type thin --thinpool pool --name $vg/lv12 $vg -check_lv_exists_ lv1 lv2 lv3 lv4 lv5 lv6 lv7 lv8 lv9 lv10 lv11 lv12 +check lv_exists $vg lv1 lv2 lv3 lv4 lv5 lv6 lv7 lv8 lv9 lv10 lv11 lv12 check vg_field $vg lv_count 19 lvremove -ff $vg @@ -181,6 +174,8 @@ not lvcreate --chunksize 256 -l1 -T $vg/pool1 # Too small chunk size (min is 64KB - 128 sectors) not lvcreate --chunksize 32 -l1 -T $vg/pool1 +# Too large chunk size (max is 1GB) +not lvcreate -L4M --chunksize 2G -T $vg/pool1 lvcreate -L4M -V2G --name lv1 -T $vg/pool1 # Origin name is not accepted @@ -188,29 +183,30 @@ vgremove -ff $vg -# Test --poolmetadatasize +# Test --poolmetadatasize range # allocating large devices for testing aux teardown_devs -aux prepare_pvs 7 16500 +aux prepare_pvs 10 16500 vgcreate $clustered $vg -s 64K $(cat DEVICES) -lvcreate -L4M --chunksize 128 -T $vg/pool lvcreate -L4M --chunksize 128 --poolmetadatasize 0 -T $vg/pool1 2>out grep "WARNING: Minimum" out # FIXME: metadata allocation fails, if PV doesn't have at least 16GB # i.e. pool metadata device cannot be multisegment -lvcreate -L4M --chunksize 128 --poolmetadatasize 17G -T $vg/pool2 2>out +lvcreate -L4M --chunksize 64k --poolmetadatasize 17G -T $vg/pool2 2>out grep "WARNING: Maximum" out -check lv_field $vg/pool_tmeta size "2.00m" check lv_field $vg/pool1_tmeta size "2.00m" check lv_field $vg/pool2_tmeta size "16.00g" lvremove -ff $vg -# check automatic calculation of poolmetadatasize -lvcreate -L10G --chunksize 128 -T $vg/pool +# Test automatic calculation of pool metadata size +lvcreate -L160G -T $vg/pool +check lv_field $vg/pool lv_metadata_size "80.00m" +check lv_field $vg/pool chunksize "128.00k" +lvremove -ff $vg/pool + lvcreate -L10G --chunksize 256 -T $vg/pool1 lvcreate -L60G --chunksize 1024 -T $vg/pool2 -check lv_field $vg/pool_tmeta size "5.00m" check lv_field $vg/pool1_tmeta size "2.50m" check lv_field $vg/pool2_tmeta size "3.75m" vgremove -ff $vg --- LVM2/test/shell/lvcreate-usage.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvcreate-usage.sh 2012/03/16 13:00:06 1.2 @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 2008 Red Hat, Inc. All rights reserved. +# Copyright (C) 2008-2011 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions @@ -14,7 +14,7 @@ . lib/test aux prepare_pvs 4 -aux pvcreate --metadatacopies 0 $dev1 +aux pvcreate --metadatacopies 0 "$dev1" vgcreate -cn $vg $(cat DEVICES) # "lvcreate rejects repeated invocation (run 2 times) (bz178216)" @@ -26,34 +26,34 @@ # "lvcreate rejects a negative stripe_size" not lvcreate -L 64m -n $lv -i2 --stripesize -4 $vg 2>err; -grep "^ Negative stripesize is invalid\$" err +grep "Negative stripesize is invalid" err # 'lvcreate rejects a too-large stripesize' not lvcreate -L 64m -n $lv -i2 --stripesize 4294967291 $vg 2>err -grep "^ Stripe size cannot be larger than" err +grep "Stripe size cannot be larger than" err # 'lvcreate w/single stripe succeeds with diagnostics to stdout' lvcreate -L 64m -n $lv -i1 --stripesize 4 $vg 2> err | tee out -grep "^ Ignoring stripesize argument with single stripe\$" out +grep "Ignoring stripesize argument with single stripe" out lvdisplay $vg lvremove -ff $vg # 'lvcreate w/default (64KB) stripe size succeeds with diagnostics to stdout' lvcreate -L 64m -n $lv -i2 $vg > out -grep "^ Using default stripesize" out +grep "Using default stripesize" out lvdisplay $vg check lv_field $vg/$lv stripesize "64.00k" lvremove -ff $vg # 'lvcreate rejects an invalid number of stripes' not lvcreate -L 64m -n $lv -i129 $vg 2>err -grep "^ Number of stripes (129) must be between 1 and 128\$" err +grep "Number of stripes (129) must be between 1 and 128" err # The case on lvdisplay output is to verify that the LV was not created. # 'lvcreate rejects an invalid stripe size' not lvcreate -L 64m -n $lv -i2 --stripesize 3 $vg 2>err -grep "^ Invalid stripe size" err -case $(lvdisplay $vg) in "") true ;; *) false ;; esac +grep "Invalid stripe size" err +test -z "$(lvdisplay $vg)" # Setting max_lv works. (bz490298) lvremove -ff $vg @@ -70,8 +70,7 @@ lvremove -ff $vg/$lv3 lvcreate -l1 -m1 -n $lv3 $vg -lvs -vgs -o +max_lv +vgs -o +max_lv $vg not lvcreate -l1 -n $lv4 $vg not lvcreate -l1 -m1 -n $lv4 $vg @@ -94,11 +93,11 @@ not lvcreate -L 8m -n $lv2 -s --chunksize 3k $vg/$lv1 not lvcreate -L 8m -n $lv2 -s --chunksize 1024k $vg/$lv1 lvcreate -L 8m -n $lv2 -s --chunksize 4k $vg/$lv1 -check lv_field $vg/$lv2 chunk_size 4.00k -check lv_field $vg/$lv2 origin_size 32.00m +check lv_field $vg/$lv2 chunk_size "4.00k" +check lv_field $vg/$lv2 origin_size "32.00m" lvcreate -L 8m -n $lv3 -s --chunksize 512k $vg/$lv1 -check lv_field $vg/$lv3 chunk_size 512.00k -check lv_field $vg/$lv3 origin_size 32.00m +check lv_field $vg/$lv3 chunk_size "512.00k" +check lv_field $vg/$lv3 origin_size "32.00m" lvremove -ff $vg vgchange -l 0 $vg @@ -149,4 +148,3 @@ check lv_field $vg/$lv lv_read_ahead "auto" check lv_field $vg/$lv lv_kernel_read_ahead "512.00k" lvremove -ff $vg - --- LVM2/test/shell/lvextend-percent-extents.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvextend-percent-extents.sh 2012/03/16 13:00:06 1.2 @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 2008 Red Hat, Inc. All rights reserved. +# Copyright (C) 2008-2011 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions @@ -19,34 +19,34 @@ # 'lvextend rejects both size and extents without PVs' not lvextend -l 10 -L 64m $vg/$lv 2>err -grep "^ Please specify either size or extents but not both.\$" err +grep "Please specify either size or extents but not both." err # 'lvextend rejects both size and extents with PVs' -not lvextend -l 10 -L 64m $vg/$lv $dev1 2>err -grep "^ Please specify either size or extents but not both.\$" err +not lvextend -l 10 -L 64m $vg/$lv "$dev1" 2>err +grep "Please specify either size or extents but not both." err # 'lvextend accepts no size or extents but one PV - bz154691' -lvextend $vg/$lv $dev1 >out -grep "^ Logical volume $lv successfully resized\$" out -check pv_field $dev1 pv_free "0" +lvextend $vg/$lv "$dev1" >out +grep "Logical volume $lv successfully resized" out +check pv_field "$dev1" pv_free "0" -lvremove -f $vg/$lv +lvremove -f $vg/$lv # 'lvextend computes necessary free space correctly - bz213552' -vgsize=$(vgs -o vg_extent_count --noheadings) +vgsize=$(get vg_field $vg vg_extent_count) lvcreate -l $vgsize -n $lv $vg lvreduce -f -l $(( $vgsize / 2 )) $vg/$lv lvextend -l $vgsize $vg/$lv -# 'Reset LV to original size' -lvremove -f $vg/$lv +# 'Reset LV to original size' +lvremove -f $vg/$lv lvcreate -L 64m -n $lv $vg # 'lvextend accepts no size but extents 100%PVS and two PVs - bz154691' -lvextend -l +100%PVS $vg/$lv $dev1 $dev2 >out -grep "^ Logical volume $lv successfully resized\$" out -check pv_field $dev1 pv_free "0" -check pv_field $dev2 pv_free "0" +lvextend -l +100%PVS $vg/$lv "$dev1" "$dev2" >out +grep "Logical volume $lv successfully resized" out +check pv_field "$dev1" pv_free "0" +check pv_field "$dev2" pv_free "0" # Exercise the range overlap code. Allocate every 2 extents. # @@ -68,16 +68,16 @@ # Total number of extents should be 12 + overlap = 12 + 6 = 18. # Thus, total size for the LV should be 18 * 4M = 72M # -# 'Reset LV to 12 extents, allocate every other 2 extents' -create_pvs=`for i in $(seq 0 4 20); do echo -n "\$dev1:$i-$(($i + 1)) "; done` +# 'Reset LV to 12 extents, allocate every other 2 extents' +create_pvs=$(for i in $(seq 0 4 20); do echo -n "$dev1:$i-$(($i + 1)) "; done) lvremove -f $vg/$lv lvcreate -l 12 -n $lv $vg $create_pvs check lv_field $vg/$lv lv_size "48.00m" -# 'lvextend with partially allocated PVs and extents 100%PVS with PE ranges' -extend_pvs=`for i in $(seq 0 6 18); do echo -n "\$dev1:$i-$(($i + 2)) "; done` +# 'lvextend with partially allocated PVs and extents 100%PVS with PE ranges' +extend_pvs=$(for i in $(seq 0 6 18); do echo -n "$dev1:$i-$(($i + 2)) "; done) lvextend -l +100%PVS $vg/$lv $extend_pvs >out -grep "^ Logical volume $lv successfully resized\$" out +grep "Logical volume $lv successfully resized" out check lv_field $vg/$lv lv_size "72.00m" # Simple seg_count validation; initially create the LV with half the # of @@ -85,19 +85,19 @@ # then reduce (should be back to 1) # FIXME: test other segment fields such as seg_size, pvseg_start, pvseg_size lvremove -f $vg/$lv -pe_count=$(pvs -o pv_pe_count --noheadings $dev1) +pe_count=$(get pv_field "$dev1" pv_pe_count) pe1=$(( $pe_count / 2 )) lvcreate -l $pe1 -n $lv $vg -pesize=$(lvs -ovg_extent_size --units b --nosuffix --noheadings $vg/$lv) +pesize=$(get lv_field $vg/$lv vg_extent_size --units b --nosuffix) segsize=$(( $pe1 * $pesize / 1024 / 1024 ))m -check lv_field $vg/$lv seg_count 1 -check lv_field $vg/$lv seg_start 0 -check lv_field $vg/$lv seg_start_pe 0 +check lv_field $vg/$lv seg_count "1" +check lv_field $vg/$lv seg_start "0" +check lv_field $vg/$lv seg_start_pe "0" #check lv_field $vg/$lv seg_size $segsize lvextend -l +$(( $pe_count * 1 )) $vg/$lv -check lv_field $vg/$lv seg_count 2 +check lv_field $vg/$lv seg_count "2" lvreduce -f -l -$(( $pe_count * 1 )) $vg/$lv -check lv_field $vg/$lv seg_count 1 +check lv_field $vg/$lv seg_count "1" # do not reduce to 0 extents lvremove -f $vg/$lv --- LVM2/test/shell/lvextend-snapshot-dmeventd.sh 2012/03/04 16:02:19 1.4 +++ LVM2/test/shell/lvextend-snapshot-dmeventd.sh 2012/03/16 13:00:06 1.5 @@ -1,5 +1,5 @@ -#!/bin/bash -# Copyright (C) 2010 Red Hat, Inc. All rights reserved. +#!/bin/sh +# Copyright (C) 2010-2012 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions @@ -15,48 +15,47 @@ lvextend --use-policies --config "activation { snapshot_extend_threshold = $1 }" $vg/snap } -write() { - mount $DM_DEV_DIR/$vg/snap mnt - dd if=/dev/zero of=mnt/file$1 bs=1k count=$2 - umount mnt +write_() { + dd if=/dev/zero of="$DM_DEV_DIR/$vg/snap" bs=1k count=$2 seek=$1 } -percent() { - lvs $vg/snap -o snap_percent --noheadings | cut -c4- | cut -d. -f1 +percent_() { + get lv_field $vg/snap snap_percent | cut -d. -f1 } -which mkfs.ext2 || skip +wait_for_change_() { + # dmeventd only checks every 10 seconds :( + for i in $(seq 1 15) ; do + test "$(percent_)" != "$1" && return + sleep 1 + done + + return 1 # timeout +} -aux prepare_vg 3 aux prepare_dmeventd +aux prepare_vg 2 -lvcreate -l 8 -n base $vg -mkfs.ext2 $DM_DEV_DIR/$vg/base +lvcreate -L16M -n base $vg +lvcreate -s -L4M -n snap $vg/base -lvcreate -s -l 4 -n snap $vg/base -lvchange --monitor y $vg/snap +write_ 0 1000 +test 24 -eq $(percent_) -mkdir mnt +lvchange --monitor y $vg/snap -write 1 4096 -pre=`percent` -sleep 15 # dmeventd only checks every 10 seconds :( -post=`percent` - -test $pre = $post - -write 2 5000 -pre=`percent` -sleep 15 # dmeventd only checks every 10 seconds :( -post=`percent` -test $pre -gt $post +write_ 1000 1700 +pre=$(percent_) +wait_for_change_ $pre +test $pre -gt $(percent_) # check that a second extension happens; we used to fail to extend when the # utilisation ended up between THRESH and (THRESH + 10)... see RHBZ 754198 # (the utilisation after the write should be 57 %) -write 3 5000 -pre=`percent` -sleep 15 # dmeventd only checks every 10 seconds :( -post=`percent` -test $pre -gt $post +write_ 2700 2000 +pre=$(percent_) +wait_for_change_ $pre +test $pre -gt $(percent_) + +vgremove -f $vg --- LVM2/test/shell/lvextend-snapshot-policy.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvextend-snapshot-policy.sh 2012/03/16 13:00:06 1.2 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright (C) 2010 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -11,37 +11,39 @@ . lib/test +which mkfs.ext2 || skip + extend() { lvextend --use-policies --config "activation { snapshot_extend_threshold = $1 }" $vg/snap } write() { - mount $DM_DEV_DIR/$vg/snap mnt - dd if=/dev/zero of=mnt/file$1 bs=1k count=$2 + mount "$DM_DEV_DIR/$vg/snap" mnt + dd if=/dev/zero of="mnt/file$1" bs=1k count=$2 umount mnt } percent() { - lvs $vg/snap -o snap_percent --noheadings | cut -c4- | cut -d. -f1 + get lv_field $vg/snap snap_percent | cut -d. -f1 } -which mkfs.ext2 || exit 200 - +aux prepare_dmeventd aux prepare_vg 2 + lvcreate -l 8 -n base $vg -mkfs.ext2 $DM_DEV_DIR/$vg/base +mkfs.ext2 "$DM_DEV_DIR/$vg/base" lvcreate -s -l 4 -n snap $vg/base mkdir mnt write 1 4096 -pre=`percent` +pre=$(percent) extend 50 -post=`percent` +test $pre -eq $(percent) -test $pre = $post write 2 4096 -pre=`percent` +pre=$(percent) extend 50 -post=`percent` -test $pre -gt $post +test $pre -gt $(percent) + +vgremove -f $vg --- LVM2/test/shell/lvm-init.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvm-init.sh 2012/03/16 13:00:06 1.2 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -18,4 +19,3 @@ # invalid units not pvs --config 'global { units = "<" }' - --- LVM2/test/shell/lvmcache-exercise.sh 2012/02/23 14:21:18 1.3 +++ LVM2/test/shell/lvmcache-exercise.sh 2012/03/16 13:00:06 1.4 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -12,11 +13,11 @@ aux prepare_pvs 5 -vgcreate $vg1 $dev1 -vgcreate $vg2 $dev3 +vgcreate $vg1 "$dev1" +vgcreate $vg2 "$dev3" -aux disable_dev $dev1 +aux disable_dev "$dev1" pvscan -vgcreate $vg1 $dev2 -aux enable_dev $dev1 +vgcreate $vg1 "$dev2" +aux enable_dev "$dev1" pvs --- LVM2/test/shell/lvmetad-pvs.sh 2012/03/01 20:03:45 1.1 +++ LVM2/test/shell/lvmetad-pvs.sh 2012/03/16 13:00:06 1.2 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright (C) 2012 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -11,10 +11,9 @@ . lib/test -aux prepare_devs 1 20000 -pvcreate $dev1 -pvs | grep $dev1 +aux prepare_pvs 1 20000 +pvs $(cat DEVICES) | grep "$dev1" # check for PV size overflows -pvs | grep 19.53g -pvs | not grep 16.00e +pvs $(cat DEVICES) | grep 19.53g +pvs $(cat DEVICES) | not grep 16.00e --- LVM2/test/shell/lvresize-mirror.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvresize-mirror.sh 2012/03/16 13:00:06 1.2 @@ -10,29 +10,30 @@ # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA . lib/test + aux prepare_vg 5 80 # extend 2-way mirror -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3":0-1 lvchange -an $vg/$lv1 lvextend -l+2 $vg/$lv1 -check mirror $vg $lv1 $dev3 +check mirror $vg $lv1 "$dev3" check mirror_images_contiguous $vg $lv1 lvremove -ff $vg # reduce 2-way mirror -lvcreate -l4 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 +lvcreate -l4 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3":0-1 lvchange -an $vg/$lv1 lvreduce -l-2 $vg/$lv1 -check mirror $vg $lv1 $dev3 +check mirror $vg $lv1 "$dev3" lvremove -ff $vg # extend 2-way mirror (cling if not contiguous) -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 -lvcreate -l1 -n $lv2 $vg $dev1 -lvcreate -l1 -n $lv3 $vg $dev2 +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3":0-1 +lvcreate -l1 -n $lv2 $vg "$dev1" +lvcreate -l1 -n $lv3 $vg "$dev2" lvchange -an $vg/$lv1 lvextend -l+2 $vg/$lv1 -check mirror $vg $lv1 $dev3 +check mirror $vg $lv1 "$dev3" check mirror_images_clung $vg $lv1 lvremove -ff $vg --- LVM2/test/shell/lvresize-rounding.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvresize-rounding.sh 2012/03/16 13:00:06 1.2 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2007-2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, --- LVM2/test/shell/lvresize-usage.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/lvresize-usage.sh 2012/03/16 13:00:06 1.2 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2007-2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, --- LVM2/test/shell/mdata-strings.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/mdata-strings.sh 2012/03/16 13:00:06 1.2 @@ -18,22 +18,20 @@ # for udev impossible to create pv_ugly="__\"!@#\$%^&*,()|@||'\\\"__pv1" -# 'set up temp files, loopback devices' +# 'set up temp files, loopback devices' name=$(basename "$dev1") dmsetup rename "$name" "$PREFIX$pv_ugly" -dev1=$(dirname "$dev1")/$PREFIX$pv_ugly +dev1=$(dirname "$dev1")/"$PREFIX$pv_ugly" dmsetup table | grep -F "$pv_ugly" -# 'pvcreate, vgcreate on filename with backslashed chars' -created=$dev1 +# 'pvcreate, vgcreate on filename with backslashed chars' +created="$dev1" # when used with real udev without fallback, it will fail here -pvcreate "$dev1" || created=$dev2 +pvcreate "$dev1" || created="$dev2" pvdisplay | should grep -F "$pv_ugly" should check pv_field "$dev1" pv_name "$dev1" vgcreate $vg "$created" -# 'no parse errors and VG really exists' -vgs 2>err -not grep "Parse error" err; -vgs $vg - +# 'no parse errors and VG really exists' +vgs $vg 2>err +not grep "Parse error" err --- LVM2/test/shell/metadata-balance.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/metadata-balance.sh 2012/03/16 13:00:06 1.2 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -15,24 +16,24 @@ echo Make sure we can ignore / un-ignore mdas on a per-PV basis for pv_in_vg in 1 0; do for mdacp in 1 2; do - pvcreate --metadatacopies $mdacp $dev1 $dev2 - pvcreate --metadatacopies 0 $dev3 + pvcreate --metadatacopies $mdacp "$dev1" "$dev2" + pvcreate --metadatacopies 0 "$dev3" if [ $pv_in_vg = 1 ]; then - vgcreate -c n "$vg" $dev1 $dev2 $dev3 + vgcreate -c n $vg "$dev1" "$dev2" "$dev3" fi - pvchange --metadataignore y $dev1 - check pv_field $dev1 pv_mda_count $mdacp - check pv_field $dev1 pv_mda_used_count 0 - check pv_field $dev2 pv_mda_count $mdacp - check pv_field $dev2 pv_mda_used_count $mdacp + pvchange --metadataignore y "$dev1" + check pv_field "$dev1" pv_mda_count $mdacp + check pv_field "$dev1" pv_mda_used_count 0 + check pv_field "$dev2" pv_mda_count $mdacp + check pv_field "$dev2" pv_mda_used_count $mdacp if [ $pv_in_vg = 1 ]; then check vg_field $vg vg_mda_count $(($mdacp * 2)) check vg_field $vg vg_mda_used_count $mdacp check vg_field $vg vg_mda_copies unmanaged fi - pvchange --metadataignore n $dev1 - check pv_field $dev1 pv_mda_count $mdacp - check pv_field $dev1 pv_mda_used_count $mdacp + pvchange --metadataignore n "$dev1" + check pv_field "$dev1" pv_mda_count $mdacp + check pv_field "$dev1" pv_mda_used_count $mdacp if [ $pv_in_vg = 1 ]; then check vg_field $vg vg_mda_count $(($mdacp * 2)) check vg_field $vg vg_mda_used_count $(($mdacp * 2)) @@ -61,13 +62,13 @@ echo Test of vgmetadatacopies with vgcreate and vgchange for mdacp in 1 2; do - pvcreate --metadatacopies $mdacp $dev1 $dev2 $dev4 $dev5 - check pv_field $dev1 pv_mda_used_count $mdacp - check pv_field $dev2 pv_mda_used_count $mdacp - check pv_field $dev4 pv_mda_used_count $mdacp - check pv_field $dev5 pv_mda_used_count $mdacp - pvcreate --metadatacopies 0 $dev3 - vgcreate -c n "$vg" $dev1 $dev2 $dev3 + pvcreate --metadatacopies $mdacp "$dev1" "$dev2" "$dev4" "$dev5" + check pv_field "$dev1" pv_mda_used_count $mdacp + check pv_field "$dev2" pv_mda_used_count $mdacp + check pv_field "$dev4" pv_mda_used_count $mdacp + check pv_field "$dev5" pv_mda_used_count $mdacp + pvcreate --metadatacopies 0 "$dev3" + vgcreate -c n $vg "$dev1" "$dev2" "$dev3" check vg_field $vg vg_mda_copies unmanaged echo ensure both --vgmetadatacopies and --metadatacopies accepted vgchange --metadatacopies $(($mdacp * 1)) $vg @@ -87,33 +88,33 @@ check vg_field $vg vg_mda_copies unmanaged vgremove -f $vg echo vgcreate succeeds even when creating a VG w/all ignored mdas - pvchange --metadataignore y $dev1 $dev2 - check pv_field $dev1 pv_mda_count $mdacp - check pv_field $dev2 pv_mda_used_count 0 - vgcreate -c n "$vg" $dev1 $dev2 + pvchange --metadataignore y "$dev1" "$dev2" + check pv_field "$dev1" pv_mda_count $mdacp + check pv_field "$dev2" pv_mda_used_count 0 + vgcreate -c n $vg "$dev1" "$dev2" check vg_field $vg vg_mda_copies unmanaged vgremove -f $vg echo vgcreate succeeds with a specific number of metadata copies - vgcreate -c n --vgmetadatacopies $(($mdacp * 2)) "$vg" $dev1 $dev2 + vgcreate -c n --vgmetadatacopies $(($mdacp * 2)) $vg "$dev1" "$dev2" check vg_field $vg vg_mda_copies $(($mdacp * 2)) vgremove -f $vg - vgcreate -c n --vgmetadatacopies $(($mdacp * 1)) "$vg" $dev1 $dev2 + vgcreate -c n --vgmetadatacopies $(($mdacp * 1)) $vg "$dev1" "$dev2" check vg_field $vg vg_mda_copies $(($mdacp * 1)) vgremove -f $vg echo vgcreate succeeds with a larger value than total metadatacopies - vgcreate -c n --vgmetadatacopies $(($mdacp * 5)) "$vg" $dev1 $dev2 + vgcreate -c n --vgmetadatacopies $(($mdacp * 5)) $vg "$dev1" "$dev2" check vg_field $vg vg_mda_copies $(($mdacp * 5)) vgremove -f $vg echo vgcreate succeeds with --vgmetadatacopies unmanaged - vgcreate -c n --vgmetadatacopies unmanaged "$vg" $dev1 $dev2 + vgcreate -c n --vgmetadatacopies unmanaged $vg "$dev1" "$dev2" check vg_field $vg vg_mda_copies unmanaged vgremove -f $vg - pvunignore_ $dev1 - pvunignore_ $dev2 - pvunignore_ $dev4 - pvunignore_ $dev5 + pvunignore_ "$dev1" + pvunignore_ "$dev2" + pvunignore_ "$dev4" + pvunignore_ "$dev5" echo vgcreate succeds with small value of --metadatacopies, ignores mdas - vgcreate -c n --vgmetadatacopies 1 "$vg" $dev1 $dev2 $dev4 $dev5 + vgcreate -c n --vgmetadatacopies 1 $vg "$dev1" "$dev2" "$dev4" "$dev5" check vg_field $vg vg_mda_copies 1 check vg_field $vg vg_mda_count $(($mdacp * 4)) check vg_field $vg vg_mda_used_count 1 @@ -130,103 +131,102 @@ vgchange --vgmetadatacopies 0 $vg check vg_field $vg vg_mda_copies unmanaged vgremove -f $vg - vgcreate -c n --vgmetadatacopies 0 "$vg" $dev1 $dev2 $dev4 $dev5 + vgcreate -c n --vgmetadatacopies 0 $vg "$dev1" "$dev2" "$dev4" "$dev5" check vg_field $vg vg_mda_copies unmanaged vgremove -f $vg done echo Test vgextend / vgreduce with vgmetadatacopies for mdacp in 1 2; do - pvcreate --metadatacopies $mdacp $dev1 $dev2 $dev4 $dev5 - pvcreate --metadatacopies 0 $dev3 + pvcreate --metadatacopies $mdacp "$dev1" "$dev2" "$dev4" "$dev5" + pvcreate --metadatacopies 0 "$dev3" echo Set a large value of vgmetadatacopies - vgcreate -c n --vgmetadatacopies $(($mdacp * 5)) "$vg" $dev1 $dev2 $dev3 + vgcreate -c n --vgmetadatacopies $(($mdacp * 5)) $vg "$dev1" "$dev2" "$dev3" check vg_field $vg vg_mda_copies $(($mdacp * 5)) echo Ignore mdas on devices to be used for vgextend echo Large value of vgetadatacopies should automatically un-ignore mdas - pvchange --metadataignore y $dev4 $dev5 - check pv_field $dev4 pv_mda_used_count 0 - vgextend $vg $dev4 $dev5 - check pv_field $dev4 pv_mda_used_count $mdacp - check pv_field $dev5 pv_mda_used_count $mdacp + pvchange --metadataignore y "$dev4" "$dev5" + check pv_field "$dev4" pv_mda_used_count 0 + vgextend $vg "$dev4" "$dev5" + check pv_field "$dev4" pv_mda_used_count $mdacp + check pv_field "$dev5" pv_mda_used_count $mdacp vgremove -f $vg echo Set a small value of vgmetadatacopies - vgcreate -c n --vgmetadatacopies $(($mdacp * 1)) "$vg" $dev1 $dev2 $dev3 + vgcreate -c n --vgmetadatacopies $(($mdacp * 1)) $vg "$dev1" "$dev2" "$dev3" check vg_field $vg vg_mda_copies $(($mdacp * 1)) echo Ignore mdas on devices to be used for vgextend echo Small value of vgetadatacopies should leave mdas as ignored - pvchange --metadataignore y $dev4 $dev5 - check pv_field $dev4 pv_mda_used_count 0 - vgextend $vg $dev4 $dev5 - check pv_field $dev4 pv_mda_used_count 0 - check pv_field $dev5 pv_mda_used_count 0 + pvchange --metadataignore y "$dev4" "$dev5" + check pv_field "$dev4" pv_mda_used_count 0 + vgextend $vg "$dev4" "$dev5" + check pv_field "$dev4" pv_mda_used_count 0 + check pv_field "$dev5" pv_mda_used_count 0 echo vgreduce of ignored pv w/mda should not trigger any change to ignore bits - vgreduce $vg $dev4 - check pv_field $dev4 pv_mda_used_count 0 - check pv_field $dev5 pv_mda_used_count 0 + vgreduce $vg "$dev4" + check pv_field "$dev4" pv_mda_used_count 0 + check pv_field "$dev5" pv_mda_used_count 0 echo vgreduce of un-ignored pv w/mda should trigger un-ignore on an mda - vgreduce $vg $dev1 $dev2 $dev3 - check pv_field $dev5 pv_mda_used_count $mdacp + vgreduce $vg "$dev1" "$dev2" "$dev3" + check pv_field "$dev5" pv_mda_used_count $mdacp check vg_field $vg vg_mda_copies $(($mdacp * 1)) - pvunignore_ $dev1 - pvunignore_ $dev2 + pvunignore_ "$dev1" + pvunignore_ "$dev2" echo setting vgmetadatacopies to unmanaged should allow vgextend to add w/out balancing vgchange --vgmetadatacopies unmanaged $vg - vgextend $vg $dev1 $dev2 + vgextend $vg "$dev1" "$dev2" check vg_field $vg vg_mda_copies unmanaged check vg_field $vg vg_mda_count $(($mdacp * 3)) check vg_field $vg vg_mda_used_count $((mdacp * 3)) - check pv_field $dev1 pv_mda_used_count $mdacp - check pv_field $dev2 pv_mda_used_count $mdacp + check pv_field "$dev1" pv_mda_used_count $mdacp + check pv_field "$dev2" pv_mda_used_count $mdacp vgremove -f $vg done echo Test special situations, vgsplit, vgmerge, etc for mdacp in 1 2; do - pvcreate --metadatacopies $mdacp $dev1 $dev2 $dev3 $dev4 $dev5 - vgcreate -c n --vgmetadatacopies 2 $vg1 $dev1 $dev2 $dev3 - vgcreate -c n --vgmetadatacopies $(($mdacp * 1)) $vg2 $dev4 $dev5 + pvcreate --metadatacopies $mdacp "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" + vgcreate -c n --vgmetadatacopies 2 $vg1 "$dev1" "$dev2" "$dev3" + vgcreate -c n --vgmetadatacopies $(($mdacp * 1)) $vg2 "$dev4" "$dev5" echo vgsplit/vgmerge preserves value of metadata copies check vg_field $vg1 vg_mda_copies 2 check vg_field $vg2 vg_mda_copies $(($mdacp * 1)) - vgsplit $vg1 $vg2 $dev1 + vgsplit $vg1 $vg2 "$dev1" check vg_field $vg2 vg_mda_copies $(($mdacp * 1)) vgmerge $vg1 $vg2 check vg_field $vg1 vg_mda_copies 2 check vg_field $vg1 vg_mda_count $(($mdacp * 5)) echo vgsplit into new vg sets proper value of vgmetadatacopies - vgsplit --vgmetadatacopies $(($mdacp * 2)) $vg1 $vg2 $dev1 $dev2 + vgsplit --vgmetadatacopies $(($mdacp * 2)) $vg1 $vg2 "$dev1" "$dev2" check vg_field $vg2 vg_mda_copies $(($mdacp * 2)) echo vgchange fails if given both vgmetadatacopies and metadatacopies not vgchange --vgmetadatacopies 5 --metadatacopies 7 $vg2 - vgremove -f $vg1 - vgremove -f $vg2 + vgremove -f $vg1 $vg2 done echo Test combination of --vgmetadatacopies and pvchange --metadataignore for mdacp in 1 2; do - pvcreate --metadatacopies $mdacp $dev1 $dev2 $dev3 $dev4 $dev5 - vgcreate -c n --vgmetadatacopies $(($mdacp * 1)) $vg1 $dev1 $dev2 + pvcreate --metadatacopies $mdacp "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" + vgcreate -c n --vgmetadatacopies $(($mdacp * 1)) $vg1 "$dev1" "$dev2" check vg_field $vg1 vg_mda_copies $(($mdacp * 1)) check vg_field $vg1 vg_mda_used_count $(($mdacp * 1)) - pvignore_ $dev3 + pvignore_ "$dev3" echo Ensure vgextend of PVs with ignored MDAs does not add to vg_mda_used_count - vgextend $vg1 $dev3 + vgextend $vg1 "$dev3" check vg_field $vg1 vg_mda_used_count $(($mdacp * 1)) echo Using pvchange to unignore should update vg_mda_used_count - pvchange -f --metadataignore n $dev3 - check pv_field $dev3 pv_mda_used_count $mdacp + pvchange -f --metadataignore n "$dev3" + check pv_field "$dev3" pv_mda_used_count $mdacp check vg_field $vg1 vg_mda_used_count $(($mdacp * 2)) echo Set unmanaged on the vg should keep ignore bits the same during vgextend vgchange --vgmetadatacopies unmanaged $vg1 check vg_field $vg1 vg_mda_used_count $(($mdacp * 2)) - pvunignore_ $dev4 - vgextend $vg1 $dev4 - check pv_field $dev4 pv_mda_used_count $mdacp + pvunignore_ "$dev4" + vgextend $vg1 "$dev4" + check pv_field "$dev4" pv_mda_used_count $mdacp check vg_field $vg1 vg_mda_used_count $(($mdacp * 3)) echo Using pvchange to ignore should update vg_mda_used_count - pvchange -f --metadataignore y $dev4 - check pv_field $dev4 pv_mda_used_count 0 + pvchange -f --metadataignore y "$dev4" + check pv_field "$dev4" pv_mda_used_count 0 check vg_field $vg1 vg_mda_used_count $(($mdacp * 2)) vgremove -f $vg1 done --- LVM2/test/shell/metadata-dirs.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/metadata-dirs.sh 2012/03/16 13:00:06 1.2 @@ -12,32 +12,32 @@ . lib/test aux prepare_devs 3 -pvcreate --metadatacopies 0 $(cat DEVICES) +pvcreate --metadatacopies 0 $(cat DEVICES) not vgcreate $vg $(cat DEVICES) aux lvmconf "metadata/dirs = [ \"$TESTDIR/mda\" ]" -vgcreate $vg $dev1 +vgcreate $vg "$dev1" check vg_field $vg vg_mda_count 1 vgremove -ff $vg vgcreate $vg $(cat DEVICES) check vg_field $vg vg_mda_count 1 - vgremove -ff $vg -pvcreate --metadatacopies 1 --metadataignore y $dev1 + +pvcreate --metadatacopies 1 --metadataignore y "$dev1" vgcreate $vg $(cat DEVICES) check vg_field $vg vg_mda_count 2 - vgremove -ff $vg -pvcreate --metadatacopies 1 --metadataignore n $dev1 + +pvcreate --metadatacopies 1 --metadataignore n "$dev1" vgcreate $vg $(cat DEVICES) check vg_field $vg vg_mda_count 2 - vgremove -ff $vg -pvcreate --metadatacopies 0 $dev1 +pvcreate --metadatacopies 0 "$dev1" aux lvmconf "metadata/dirs = [ \"$TESTDIR/mda\", \"$TESTDIR/mda2\" ]" vgcreate $vg $(cat DEVICES) check vg_field $vg vg_mda_count 2 +vgremove -ff $vg --- LVM2/test/shell/metadata.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/metadata.sh 2012/03/16 13:00:06 1.2 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -12,69 +13,64 @@ aux prepare_devs 5 -pvcreate $dev1 -pvcreate --metadatacopies 0 $dev2 -pvcreate --metadatacopies 0 $dev3 -pvcreate $dev4 -pvcreate --metadatacopies 0 $dev5 +pvcreate "$dev1" +pvcreate --metadatacopies 0 "$dev2" +pvcreate --metadatacopies 0 "$dev3" +pvcreate "$dev4" +pvcreate --metadatacopies 0 "$dev5" -vgcreate -c n "$vg" $(cat DEVICES) +vgcreate -c n $vg $(cat DEVICES) lvcreate -n $lv -l 1 -i5 -I256 $vg -pvchange -x n $dev1 -pvchange -x y $dev1 +pvchange -x n "$dev1" +pvchange -x y "$dev1" vgchange -a n $vg -pvchange --uuid $dev1 -pvchange --uuid $dev2 +pvchange --uuid "$dev1" +pvchange --uuid "$dev2" vgremove -f $vg # check that PVs without metadata don't cause too many full device rescans (bz452606) for mdacp in 1 0; do pvcreate --metadatacopies $mdacp $(cat DEVICES) - pvcreate $dev1 + pvcreate "$dev1" vgcreate -c n $vg $(cat DEVICES) lvcreate -n $lv1 -l 2 -i5 -I256 $vg lvcreate -n $lv2 -m2 -l 2 $vg - #lvchange -an $vg - lvchange -an $vg/$lv1 - lvchange -an $vg/$lv2 + lvchange -an $vg/$lv1 $vg/$lv2 vgchange -ay $vg - lvchange -vvvv -an $vg/$lv1 >out$mdacp 2>&1 - lvchange -vvvv -an $vg/$lv2 >>out$mdacp 2>&1 + lvchange -an $vg/$lv1 $vg/$lv2 vgremove -f $vg done not grep "Cached VG .* incorrect PV list" out0 # some M1 metadata tests -pvcreate -M1 $dev1 -pvcreate -M1 $dev2 -pvcreate -M1 $dev3 -pv3_uuid=$(pvs --noheadings -o pv_uuid $dev3) -vgcreate -M1 -c n $vg $dev1 $dev2 $dev3 -pvchange --uuid $dev1 +pvcreate -M1 "$dev1" "$dev2" "$dev3" +pv3_uuid=$(get pv_field "$dev3" pv_uuid) +vgcreate -M1 -c n $vg "$dev1" "$dev2" "$dev3" +pvchange --uuid "$dev1" # verify pe_start of all M1 PVs pv_align="128.00k" -check pv_field $dev1 pe_start $pv_align -check pv_field $dev2 pe_start $pv_align -check pv_field $dev3 pe_start $pv_align +check pv_field "$dev1" pe_start $pv_align +check pv_field "$dev2" pe_start $pv_align +check pv_field "$dev3" pe_start $pv_align -pvs --units k -o name,pe_start,vg_mda_size,vg_name +pvs --units k -o name,pe_start,vg_mda_size,vg_name $(cat DEVICES) # upgrade from v1 to v2 metadata vgconvert -M2 $vg # verify pe_start of all M2 PVs -check pv_field $dev1 pe_start $pv_align -check pv_field $dev2 pe_start $pv_align -check pv_field $dev3 pe_start $pv_align +check pv_field "$dev1" pe_start $pv_align +check pv_field "$dev2" pe_start $pv_align +check pv_field "$dev3" pe_start $pv_align -pvs --units k -o name,pe_start,vg_mda_size,vg_name +pvs --units k -o name,pe_start,vg_mda_size,vg_name $(cat DEVICES) # create backup and then restore $dev3 vgcfgbackup -f $TESTDIR/bak-%s $vg -pvcreate -ff -y --restorefile $TESTDIR/bak-$vg --uuid $pv3_uuid $dev3 +pvcreate -ff -y --restorefile $TESTDIR/bak-$vg --uuid $pv3_uuid "$dev3" vgcfgrestore -f $TESTDIR/bak-$vg $vg # verify pe_start of $dev3 -check pv_field $dev3 pe_start $pv_align +check pv_field "$dev3" pe_start $pv_align --- LVM2/test/shell/mirror-names.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/mirror-names.sh 2012/03/16 13:00:06 1.2 @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 2007-2008 Red Hat, Inc. All rights reserved. +# Copyright (C) 2007-2012 Red Hat, Inc. All rights reserved. # Copyright (C) 2007-2008 NEC Corporation # # This copyrighted material is made available to anyone wishing to use, @@ -18,134 +18,124 @@ # Utilities lv_devices_() { - local d - local lv=$1 - shift - local devices=$* - - local devs=$(lvs -a -odevices --noheadings $lv | sed 's/([0-9]*)//g' | - sed 's/ //g' | sed 's/,/ /g') - - for d in $devs; do - (echo $devices | grep $d >/dev/null) || return 1 - devices=$(echo $devices | sed "s/$d//") - done + local d + local lv=$1 + shift + local devices=$@ + local devs=$(get lv_field $lv devices -a | sed 's/([0-9]*)//g; s/ //g; s/,/ /g') + + for d in $devs; do + (echo $devices | grep $d) || return 1 + devices=$(echo $devices | sed "s/$d//") + done - [ "$(echo $devices | sed 's/ //g')" = "" ] + test -z "$(echo $devices | sed 's/ //g')" } lv_mirror_log_() { - local lv=$1 - - echo $(lvs -a -omirror_log --noheadings $lv | sed 's/ //g') + test $(get lv_field $1 mirror_log) = $2 } lv_convert_lv_() { - local lv=$1 - - echo $(lvs -a -oconvert_lv --noheadings $lv | sed 's/ //g') + get lv_field $1 convert_lv } # --------------------------------------------------------------------- -# Initialize PVs and VGs - -aux prepare_vg 5 80 - -# --------------------------------------------------------------------- # Common environment setup/cleanup for each sub testcases prepare_lvs_() { lvremove -ff $vg - if dmsetup table|grep $vg; then + (dmsetup table | not grep $vg) || { echo "ERROR: lvremove did leave some some mappings in DM behind!" return 1 - fi - : + } } check_and_cleanup_lvs_() { - lvs -a -o+devices $vg - lvremove -ff $vg - if dmsetup table|grep $vg; then + lvs -a -o+devices $vg + lvremove -ff $vg + (dmsetup table | not grep $vg) || { echo "ERROR: lvremove did leave some some mappings in DM behind!" return 1 - fi + } } -prepare_lvs_ +# --------------------------------------------------------------------- +# Initialize PVs and VGs + +aux prepare_vg 5 80 + +prepare_lvs_ check_and_cleanup_lvs_ # --------------------------------------------------------------------- # basic -#COMM "init: lvcreate" +#COMM "init: lvcreate" prepare_lvs_ #COMM "mirror images are ${lv1}_mimage_x" -lvcreate -l2 -m1 -n $lv1 $vg -lv_devices_ $vg/$lv1 "$lv1"_mimage_0 "$lv1"_mimage_1 +lvcreate -l2 -m1 -n $lv1 $vg +lv_devices_ $vg/$lv1 ${lv1}_mimage_0 ${lv1}_mimage_1 #COMM "mirror log is ${lv1}_mlog" -lv_mirror_log_ $vg/$lv1 "$lv1"_mlog +lv_mirror_log_ $vg/$lv1 ${lv1}_mlog -# "cleanup" +# "cleanup" check_and_cleanup_lvs_ #COMM "mirror with name longer than 22 characters (bz221322)" name="LVwithanamelogerthan22characters_butidontwonttocounthem" -lvcreate -m1 -l2 -n"$name" $vg -lvs $vg/"$name" +lvcreate -m1 -l2 -n $name $vg +lvs $vg/$name check_and_cleanup_lvs_ # --------------------------------------------------------------------- # lvrename -#COMM "init: lvrename" +#COMM "init: lvrename" prepare_lvs_ -#COMM "renamed mirror names: $lv1 to $lv2" -lvcreate -l2 -m1 -n $lv1 $vg -lvrename $vg/$lv1 $vg/$lv2 -lv_devices_ $vg/$lv2 "$lv2"_mimage_0 "$lv2"_mimage_1 -lv_mirror_log_ $vg/$lv2 "$lv2"_mlog +#COMM "renamed mirror names: $lv1 to $lv2" +lvcreate -l2 -m1 -n $lv1 $vg +lvrename $vg/$lv1 $vg/$lv2 +lv_devices_ $vg/$lv2 ${lv2}_mimage_0 ${lv2}_mimage_1 +lv_mirror_log_ $vg/$lv2 ${lv2}_mlog -#COMM "cleanup" +#COMM "cleanup" check_and_cleanup_lvs_ # --------------------------------------------------------------------- # lvconvert -#COMM "init: lvconvert" +#COMM "init: lvconvert" prepare_lvs_ #COMM "converting mirror names is ${lv1}_mimagetmp_2" -lvcreate -l2 -m1 -n $lv1 $vg +lvcreate -l2 -m1 -n $lv1 $vg lvconvert -m+1 -i+40 -b $vg/$lv1 -convlv=$(lv_convert_lv_ "$vg/$lv1") -test "$convlv" = "$lv1"_mimagetmp_2 -lv_devices_ $vg/$lv1 "$convlv" "$lv1"_mimage_2 -lv_devices_ "$vg/$convlv" "$lv1"_mimage_0 "$lv1"_mimage_1 -loglv=$(lv_mirror_log_ "$vg/$convlv") -test "$loglv" = "$lv1"_mlog +convlv=$(lv_convert_lv_ $vg/$lv1) +test $convlv = ${lv1}_mimagetmp_2 +lv_devices_ $vg/$lv1 $convlv ${lv1}_mimage_2 +lv_devices_ $vg/$convlv ${lv1}_mimage_0 ${lv1}_mimage_1 +lv_mirror_log_ $vg/$convlv ${lv1}_mlog #COMM "mirror log name after re-adding is ${lv1}_mlog" \ -lvconvert --mirrorlog core $vg/$lv1 -lvconvert --mirrorlog disk $vg/$lv1 -convlv=$(lv_convert_lv_ "$vg/$lv1") -lv_devices_ $vg/$lv1 "$convlv" "$lv1"_mimage_2 -lv_devices_ "$vg/$convlv" "$lv1"_mimage_0 "$lv1"_mimage_1 -loglv=$(lv_mirror_log_ "$vg/$convlv") -test "$loglv" = "$lv1"_mlog +lvconvert --mirrorlog core $vg/$lv1 +lvconvert --mirrorlog disk $vg/$lv1 +convlv=$(lv_convert_lv_ $vg/$lv1) +lv_devices_ $vg/$lv1 $convlv ${lv1}_mimage_2 +lv_devices_ $vg/$convlv ${lv1}_mimage_0 ${lv1}_mimage_1 +lv_mirror_log_ $vg/$convlv ${lv1}_mlog #COMM "renamed converting mirror names: $lv1 to $lv2" \ -lvrename $vg/$lv1 $vg/$lv2 -convlv=$(lv_convert_lv_ "$vg/$lv2") -lv_devices_ $vg/$lv2 "$convlv" "$lv2"_mimage_2 -lv_devices_ "$vg/$convlv" "$lv2"_mimage_0 "$lv2"_mimage_1 -loglv=$(lv_mirror_log_ "$vg/$convlv") -test "$loglv" = "$lv2"_mlog +lvrename $vg/$lv1 $vg/$lv2 +convlv=$(lv_convert_lv_ $vg/$lv2) +lv_devices_ $vg/$lv2 $convlv ${lv2}_mimage_2 +lv_devices_ $vg/$convlv ${lv2}_mimage_0 ${lv2}_mimage_1 +lv_mirror_log_ $vg/$convlv ${lv2}_mlog -#COMM "cleanup" +#COMM "cleanup" check_and_cleanup_lvs_ # Temporary mirror log should have "_mlogtmp_" suffix --- LVM2/test/shell/mirror-vgreduce-removemissing.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/mirror-vgreduce-removemissing.sh 2012/03/16 13:00:06 1.2 @@ -1,4 +1,5 @@ -# Copyright (C) 2008 Red Hat, Inc. All rights reserved. +#!/bin/sh +# Copyright (C) 2008-2012 Red Hat, Inc. All rights reserved. # Copyright (C) 2007 NEC Corporation # # This copyrighted material is made available to anyone wishing to use, @@ -17,15 +18,14 @@ { local lv=$vg/$1 shift - local pvs=$* + local pvs=$@ echo "Check if $lv is exactly on PVs $pvs" rm -f out1 out2 echo $pvs | sed 's/ /\n/g' | sort | uniq > out1 lvs -a -o+devices $lv - lvs -a -odevices --noheadings $lv > lvs_log - sed 's/([^)]*)//g; s/[ ,]/\n/g' lvs_log | sort | uniq > out2 || true + get lv_devices $lv | sed 's/ /\n/g' | sort | uniq > out2 || true diff --ignore-blank-lines out1 out2 } @@ -34,7 +34,7 @@ { local lv=$1 shift - local pvs="$*" + local pvs=$@ local mimages local i @@ -44,7 +44,7 @@ lvs --noheadings -a -o lv_name $vg > lvs_log mimages=$(grep "${lv}_mimage_" lvs_log | \ sed 's/\[//g; s/\]//g' || true) - + for i in $mimages; do echo "Checking $vg/$i" lvs -a -o+devices $vg/$i @@ -57,23 +57,22 @@ mirrorlog_is_on_() { - local lv="$1"_mlog + local lv=${1}_mlog shift - lv_is_on_ $lv $* + lv_is_on_ $lv "$@" } lv_is_linear_() { echo "Check if $1 is linear LV (i.e. not a mirror)" - lvs -o stripes,attr --noheadings $vg/$1 | sed 's/ //g' - lvs -o stripes,attr --noheadings $vg/$1 | sed 's/ //g' | grep '^1-' >/dev/null + get lv_field $vg/$1 "stripes,attr" | grep "^1 -" >/dev/null } rest_pvs_() { local index=$1 local num=$2 - local rem="" + local rem= local n for n in $(seq 1 $(($index - 1))) $(seq $(($index + 1)) $num); do @@ -95,33 +94,31 @@ prepare_lvs_() { lvremove -ff $vg; - if dmsetup table|grep -v -- "-missing_"|grep $vg; then - echo "ERROR: lvremove did leave some some mappings in DM behind!" - return 1 + if (dmsetup table | grep -v -- "-missing_" | grep $vg); then + die "ERROR: lvremove did leave some some mappings in DM behind!" fi : } check_and_cleanup_lvs_() { - lvs -a -o+devices $vg + lvs -a -o+devices $vg lvremove -ff $vg - if dmsetup table|grep $vg; then - echo "ERROR: lvremove did leave some some mappings in DM behind!" - return 1 + if (dmsetup table | grep $vg); then + die "ERROR: lvremove did leave some some mappings in DM behind!" fi } recover_vg_() { - aux enable_dev $* - pvcreate -ff $* - vgextend $vg $* + aux enable_dev "$@" + pvcreate -ff "$@" + vgextend $vg "$@" check_and_cleanup_lvs_ } -#COMM "check environment setup/cleanup" -prepare_lvs_ +#COMM "check environment setup/cleanup" +prepare_lvs_ check_and_cleanup_lvs_ # --------------------------------------------------------------------- @@ -129,17 +126,17 @@ #COMM "basic: fail the 2nd mirror image of 2-way mirrored LV" prepare_lvs_ -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0 +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3":0 lvchange -an $vg/$lv1 mimages_are_on_ $lv1 $dev1 $dev2 mirrorlog_is_on_ $lv1 $dev3 -aux disable_dev $dev2 +aux disable_dev "$dev2" vgreduce --removemissing --force $vg lv_is_linear_ $lv1 -lv_is_on_ $lv1 $dev1 +lv_is_on_ $lv1 "$dev1" # "cleanup" -recover_vg_ $dev2 +recover_vg_ "$dev2" # --------------------------------------------------------------------- # LV has 3 images in flat, @@ -150,15 +147,15 @@ { local index=$1 - lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev3 $dev4:0 + lvcreate -l2 -m2 -n $lv1 $vg "$dev1" "$dev2" "$dev3" "$dev4":0 lvchange -an $vg/$lv1 - mimages_are_on_ $lv1 $dev1 $dev2 $dev3 - mirrorlog_is_on_ $lv1 $dev4 + mimages_are_on_ $lv1 "$dev1" "$dev2" "$dev3" + mirrorlog_is_on_ $lv1 "$dev4" eval aux disable_dev \$dev$index vgreduce --removemissing --force $vg lvs -a -o+devices $vg mimages_are_on_ $lv1 $(rest_pvs_ $index 3) - mirrorlog_is_on_ $lv1 $dev4 + mirrorlog_is_on_ $lv1 "$dev4" } for n in $(seq 1 3); do @@ -177,10 +174,10 @@ { local index=$1 - lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev3 $dev4:0 + lvcreate -l2 -m2 -n $lv1 $vg "$dev1" "$dev2" "$dev3" "$dev4":0 lvchange -an $vg/$lv1 - mimages_are_on_ $lv1 $dev1 $dev2 $dev3 - mirrorlog_is_on_ $lv1 $dev4 + mimages_are_on_ $lv1 "$dev1" "$dev2" "$dev3" + mirrorlog_is_on_ $lv1 "$dev4" rest_pvs_ $index 3 aux disable_dev $(rest_pvs_ $index 3) vgreduce --force --removemissing $vg @@ -205,17 +202,17 @@ { local index=$1 - lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev3 $dev5:0 - lvchange -an $vg/$lv1 - lvconvert -m+1 $vg/$lv1 $dev4 - check mirror_images_on $vg $lv1 $dev1 $dev2 $dev3 $dev4 - check mirror_log_on $vg $lv1 $dev5 - eval aux disable_dev \$dev$index + lvcreate -l2 -m2 -n $lv1 $vg "$dev1" "$dev2" "$dev3" "$dev5":0 + lvchange -an $vg/$lv1 + lvconvert -m+1 $vg/$lv1 "$dev4" + check mirror_images_on $vg $lv1 "$dev1" "$dev2" "$dev3" "$dev4" + check mirror_log_on $vg $lv1 "$dev5" + eval aux disable_dev \$dev$index lvs -a -o +devices - vgreduce --removemissing --force $vg - lvs -a -o+devices # $vg - check mirror_images_on $vg $lv1 $dev5 # $(rest_pvs_ $index 4) - check mirror_log_on $vg $lv1 $dev5 + vgreduce --removemissing --force $vg + lvs -a -o+devices # $vg + check mirror_images_on $vg $lv1 "$dev5" # $(rest_pvs_ $index 4) + check mirror_log_on $vg $lv1 "$dev5" } for n in $(seq 1 4); do @@ -234,11 +231,11 @@ { local index=$1 - lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev3 $dev5:0 + lvcreate -l2 -m2 -n $lv1 $vg "$dev1" "$dev2" "$dev3" "$dev5":0 lvchange -an $vg/$lv1 - lvconvert -m+1 $vg/$lv1 $dev4 - check mirror_images_on $vg $lv1 $dev1 $dev2 $dev3 $dev4 - check mirror_log_on $vg $lv1 $dev5 + lvconvert -m+1 $vg/$lv1 "$dev4" + check mirror_images_on $vg $lv1 "$dev1" "$dev2" "$dev3" "$dev4" + check mirror_log_on $vg $lv1 "$dev5" lvs -a -o+devices $vg aux disable_dev $(rest_pvs_ $index 4) vgreduce --removemissing --force $vg @@ -264,21 +261,21 @@ { local index=$1 - lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0 - lvchange -an $vg/$lv1 - lvconvert -m+2 $vg/$lv1 $dev3 $dev4 - mimages_are_on_ $lv1 $dev1 $dev2 $dev3 $dev4 - mirrorlog_is_on_ $lv1 $dev5 - eval aux disable_dev \$dev$n - vgreduce --removemissing --force $vg - lvs -a -o+devices $vg - mimages_are_on_ $lv1 $(rest_pvs_ $index 4) - mirrorlog_is_on_ $lv1 $dev5 + lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev5":0 + lvchange -an $vg/$lv1 + lvconvert -m+2 $vg/$lv1 "$dev3" "$dev4" + mimages_are_on_ $lv1 "$dev1" "$dev2" "$dev3" "$dev4" + mirrorlog_is_on_ $lv1 "$dev5" + eval aux disable_dev \$dev$n + vgreduce --removemissing --force $vg + lvs -a -o+devices $vg + mimages_are_on_ $lv1 $(rest_pvs_ $index 4) + mirrorlog_is_on_ $lv1 "$dev5" } for n in $(seq 1 4); do - #COMM "fail mirror image $(($n - 1)) of 4-way (2 converting) mirrored LV" - prepare_lvs_ + #COMM "fail mirror image $(($n - 1)) of 4-way (2 converting) mirrored LV" + prepare_lvs_ test_2way_mirror_plus_2_fail_1_ $n eval recover_vg_ \$dev$n done @@ -292,17 +289,17 @@ { local index=$1 - lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0 - lvchange -an $vg/$lv1 - lvconvert -m+2 $vg/$lv1 $dev3 $dev4 - mimages_are_on_ $lv1 $dev1 $dev2 $dev3 $dev4 - mirrorlog_is_on_ $lv1 $dev5 - aux disable_dev $(rest_pvs_ $index 4) - vgreduce --removemissing --force $vg - lvs -a -o+devices $vg + lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev5":0 + lvchange -an $vg/$lv1 + lvconvert -m+2 $vg/$lv1 "$dev3" "$dev4" + mimages_are_on_ $lv1 "$dev1" "$dev2" "$dev3" "$dev4" + mirrorlog_is_on_ $lv1 "$dev5" + aux disable_dev $(rest_pvs_ $index 4) + vgreduce --removemissing --force $vg + lvs -a -o+devices $vg eval local dev=\$dev$n mimages_are_on_ $lv1 $dev || lv_is_on_ $lv1 $dev - not mirrorlog_is_on_ $lv1 $dev5 + not mirrorlog_is_on_ $lv1 "$dev5" } for n in $(seq 1 4); do @@ -315,110 +312,109 @@ # --------------------------------------------------------------------- # log device is gone (flat mirror and stacked mirror) -#COMM "fail mirror log of 2-way mirrored LV" -prepare_lvs_ -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0 -lvchange -an $vg/$lv1 -mimages_are_on_ $lv1 $dev1 $dev2 -mirrorlog_is_on_ $lv1 $dev5 -aux disable_dev $dev5 -vgreduce --removemissing --force $vg -mimages_are_on_ $lv1 $dev1 $dev2 -not mirrorlog_is_on_ $lv1 $dev5 -recover_vg_ $dev5 - -#COMM "fail mirror log of 3-way (1 converting) mirrored LV" -prepare_lvs_ -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0 -lvchange -an $vg/$lv1 -lvconvert -m+1 $vg/$lv1 $dev3 -mimages_are_on_ $lv1 $dev1 $dev2 $dev3 -mirrorlog_is_on_ $lv1 $dev5 -aux disable_dev $dev5 -vgreduce --removemissing --force $vg -mimages_are_on_ $lv1 $dev1 $dev2 $dev3 -not mirrorlog_is_on_ $lv1 $dev5 -recover_vg_ $dev5 +#COMM "fail mirror log of 2-way mirrored LV" +prepare_lvs_ +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev5":0 +lvchange -an $vg/$lv1 +mimages_are_on_ $lv1 "$dev1" "$dev2" +mirrorlog_is_on_ $lv1 "$dev5" +aux disable_dev "$dev5" +vgreduce --removemissing --force $vg +mimages_are_on_ $lv1 "$dev1" "$dev2" +not mirrorlog_is_on_ $lv1 "$dev5" +recover_vg_ "$dev5" + +#COMM "fail mirror log of 3-way (1 converting) mirrored LV" +prepare_lvs_ +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev5":0 +lvchange -an $vg/$lv1 +lvconvert -m+1 $vg/$lv1 "$dev3" +mimages_are_on_ $lv1 "$dev1" "$dev2" "$dev3" +mirrorlog_is_on_ $lv1 "$dev5" +aux disable_dev "$dev5" +vgreduce --removemissing --force $vg +mimages_are_on_ $lv1 "$dev1" "$dev2" "$dev3" +not mirrorlog_is_on_ $lv1 "$dev5" +recover_vg_ "$dev5" # --------------------------------------------------------------------- # all images are gone (flat mirror and stacked mirror) #COMM "fail all mirror images of 2-way mirrored LV" -prepare_lvs_ -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0 -lvchange -an $vg/$lv1 -mimages_are_on_ $lv1 $dev1 $dev2 -mirrorlog_is_on_ $lv1 $dev5 -aux disable_dev $dev1 $dev2 -vgreduce --removemissing --force $vg +prepare_lvs_ +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev5":0 +lvchange -an $vg/$lv1 +mimages_are_on_ $lv1 "$dev1" "$dev2" +mirrorlog_is_on_ $lv1 "$dev5" +aux disable_dev "$dev1" "$dev2" +vgreduce --removemissing --force $vg not lvs $vg/$lv1 -recover_vg_ $dev1 $dev2 +recover_vg_ "$dev1" "$dev2" #COMM "fail all mirror images of 3-way (1 converting) mirrored LV" -prepare_lvs_ -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0 -lvchange -an $vg/$lv1 -lvconvert -m+1 $vg/$lv1 $dev3 -mimages_are_on_ $lv1 $dev1 $dev2 $dev3 -mirrorlog_is_on_ $lv1 $dev5 -aux disable_dev $dev1 $dev2 $dev3 -vgreduce --removemissing --force $vg +prepare_lvs_ +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev5":0 +lvchange -an $vg/$lv1 +lvconvert -m+1 $vg/$lv1 "$dev3" +mimages_are_on_ $lv1 "$dev1" "$dev2" "$dev3" +mirrorlog_is_on_ $lv1 "$dev5" +aux disable_dev "$dev1" "$dev2" "$dev3" +vgreduce --removemissing --force $vg not lvs $vg/$lv1 -recover_vg_ $dev1 $dev2 $dev3 +recover_vg_ "$dev1" "$dev2" "$dev3" # --------------------------------------------------------------------- # Multiple LVs #COMM "fail a mirror image of one of mirrored LV" -prepare_lvs_ -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0 -lvchange -an $vg/$lv1 -lvcreate -l2 -m1 -n $lv2 $vg $dev3 $dev4 $dev5:1 -lvchange -an $vg/$lv2 -mimages_are_on_ $lv1 $dev1 $dev2 -mimages_are_on_ $lv2 $dev3 $dev4 -mirrorlog_is_on_ $lv1 $dev5 -mirrorlog_is_on_ $lv2 $dev5 -aux disable_dev $dev2 -vgreduce --removemissing --force $vg -mimages_are_on_ $lv2 $dev3 $dev4 -mirrorlog_is_on_ $lv2 $dev5 -lv_is_linear_ $lv1 -lv_is_on_ $lv1 $dev1 -recover_vg_ $dev2 +prepare_lvs_ +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev5":0 +lvchange -an $vg/$lv1 +lvcreate -l2 -m1 -n $lv2 $vg "$dev3" "$dev4" "$dev5":1 +lvchange -an $vg/$lv2 +mimages_are_on_ $lv1 "$dev1" "$dev2" +mimages_are_on_ $lv2 "$dev3" "$dev4" +mirrorlog_is_on_ $lv1 "$dev5" +mirrorlog_is_on_ $lv2 "$dev5" +aux disable_dev "$dev2" +vgreduce --removemissing --force $vg +mimages_are_on_ $lv2 "$dev3" "$dev4" +mirrorlog_is_on_ $lv2 "$dev5" +lv_is_linear_ $lv1 +lv_is_on_ $lv1 "$dev1" +recover_vg_ "$dev2" #COMM "fail mirror images, one for each mirrored LV" -prepare_lvs_ -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0 -lvchange -an $vg/$lv1 -lvcreate -l2 -m1 -n $lv2 $vg $dev3 $dev4 $dev5:1 -lvchange -an $vg/$lv2 -mimages_are_on_ $lv1 $dev1 $dev2 -mimages_are_on_ $lv2 $dev3 $dev4 -mirrorlog_is_on_ $lv1 $dev5 -mirrorlog_is_on_ $lv2 $dev5 -aux disable_dev $dev2 -aux disable_dev $dev4 -vgreduce --removemissing --force $vg -lv_is_linear_ $lv1 -lv_is_on_ $lv1 $dev1 -lv_is_linear_ $lv2 -lv_is_on_ $lv2 $dev3 -recover_vg_ $dev2 $dev4 +prepare_lvs_ +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev5":0 +lvchange -an $vg/$lv1 +lvcreate -l2 -m1 -n $lv2 $vg "$dev3" "$dev4" "$dev5":1 +lvchange -an $vg/$lv2 +mimages_are_on_ $lv1 "$dev1" "$dev2" +mimages_are_on_ $lv2 "$dev3" "$dev4" +mirrorlog_is_on_ $lv1 "$dev5" +mirrorlog_is_on_ $lv2 "$dev5" +aux disable_dev "$dev2" +aux disable_dev "$dev4" +vgreduce --removemissing --force $vg +lv_is_linear_ $lv1 +lv_is_on_ $lv1 "$dev1" +lv_is_linear_ $lv2 +lv_is_on_ $lv2 "$dev3" +recover_vg_ "$dev2" "$dev4" # --------------------------------------------------------------------- # no failure #COMM "no failures" -prepare_lvs_ -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev5:0 -lvchange -an $vg/$lv1 -mimages_are_on_ $lv1 $dev1 $dev2 -mirrorlog_is_on_ $lv1 $dev5 -vgreduce --removemissing --force $vg -mimages_are_on_ $lv1 $dev1 $dev2 -mirrorlog_is_on_ $lv1 $dev5 +prepare_lvs_ +lvcreate -l2 -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev5":0 +lvchange -an $vg/$lv1 +mimages_are_on_ $lv1 "$dev1" "$dev2" +mirrorlog_is_on_ $lv1 "$dev5" +vgreduce --removemissing --force $vg +mimages_are_on_ $lv1 "$dev1" "$dev2" +mirrorlog_is_on_ $lv1 "$dev5" check_and_cleanup_lvs_ # --------------------------------------------------------------------- - --- LVM2/test/shell/name-mangling.sh 2012/03/06 03:16:05 1.2 +++ LVM2/test/shell/name-mangling.sh 2012/03/16 13:00:06 1.3 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2012 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, --- LVM2/test/shell/nomda-missing.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/nomda-missing.sh 2012/03/16 13:00:06 1.2 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright (C) 2010 Red Hat, Inc. All rights reserved. # @@ -13,22 +13,22 @@ . lib/test aux prepare_devs 4 -pvcreate $dev1 $dev2 -pvcreate --metadatacopies 0 $dev3 $dev4 -vgcreate -c n $vg $dev1 $dev2 $dev3 $dev4 - -lvcreate -l1 -n linear1 $vg $dev1 -lvcreate -l1 -n linear2 $vg $dev2 -lvcreate -l2 -n linear12 $vg $dev1:4 $dev2:4 +pvcreate "$dev1" "$dev2" +pvcreate --metadatacopies 0 "$dev3" "$dev4" +vgcreate -c n $vg "$dev1" "$dev2" "$dev3" "$dev4" + +lvcreate -l1 -n linear1 $vg "$dev1" +lvcreate -l1 -n linear2 $vg "$dev2" +lvcreate -l2 -n linear12 $vg "$dev1":4 "$dev2":4 -lvcreate -l1 -n origin1 $vg $dev1 -lvcreate -s $vg/origin1 -l1 -n s_napshot2 $dev2 +lvcreate -l1 -n origin1 $vg "$dev1" +lvcreate -s $vg/origin1 -l1 -n s_napshot2 "$dev2" -lvcreate -l1 -m1 -n mirror12 --mirrorlog core $vg $dev1 $dev2 -lvcreate -l1 -m1 -n mirror123 $vg $dev1 $dev2 $dev3 +lvcreate -l1 -m1 -n mirror12 --mirrorlog core $vg "$dev1" "$dev2" +lvcreate -l1 -m1 -n mirror123 $vg "$dev1" "$dev2" "$dev3" vgchange -a n $vg -aux disable_dev $dev1 +aux disable_dev "$dev1" not vgchange -a y $vg not vgck $vg @@ -41,8 +41,8 @@ check inactive $vg mirror123 vgchange -a n $vg -aux enable_dev $dev1 -aux disable_dev $dev2 +aux enable_dev "$dev1" +aux disable_dev "$dev2" not vgchange -a y $vg not vgck $vg @@ -55,8 +55,8 @@ check inactive $vg mirror123 vgchange -a n $vg -aux enable_dev $dev2 -aux disable_dev $dev3 +aux enable_dev "$dev2" +aux disable_dev "$dev3" not vgchange -a y $vg not vgck $vg @@ -69,8 +69,8 @@ check active $vg mirror12 vgchange -a n $vg -aux enable_dev $dev3 -aux disable_dev $dev4 +aux enable_dev "$dev3" +aux disable_dev "$dev4" vgchange -a y $vg not vgck $vg --- LVM2/test/shell/pool-labels.sh 2012/02/23 23:58:42 1.3 +++ LVM2/test/shell/pool-labels.sh 2012/03/16 13:00:06 1.4 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2007 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -10,18 +11,19 @@ . lib/test +env printf "" || skip # skip if printf is not available + # create the old GFS pool labeled linear devices create_pool_label_() { # FIXME # echo -e is bashism, dash builtin sh doesn't do \xNN in printf either # printf comes from coreutils, and is probably not posix either - env printf "\x01\x16\x70\x06\x5f\xcf\xff\xb9\xf8\x24\x8apool1" | dd of=$2 bs=5 seek=1 conv=notrunc + env printf "\x01\x16\x70\x06\x5f\xcf\xff\xb9\xf8\x24\x8apool1" | dd of="$2" bs=5 seek=1 conv=notrunc env printf "\x04\x01\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0$1\x68\x01\x16\x70\x00\x00\x00\x00\x00\x06\x5f\xd0" | dd of=$2 bs=273 seek=1 conv=notrunc aux notify_lvmetad "$2" } -env printf "" || exit 200 # skip if printf is not available aux prepare_devs 2 --- LVM2/test/shell/pv-duplicate.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/pv-duplicate.sh 2012/03/16 13:00:06 1.2 @@ -15,11 +15,11 @@ aux prepare_devs 3 -vgcreate -c n --metadatasize 128k $vg1 $dev1 +vgcreate -c n --metadatasize 128k $vg1 "$dev1" # copy mda -dd if=$dev1 of=$dev2 bs=256K count=1 -dd if=$dev1 of=$dev3 bs=256K count=1 +dd if="$dev1" of="$dev2" bs=256K count=1 +dd if="$dev1" of="$dev3" bs=256K count=1 -pvs $dev1 +pvs "$dev1" vgs $vg1 --- LVM2/test/shell/pv-min-size.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/pv-min-size.sh 2012/03/16 13:00:06 1.2 @@ -16,16 +16,16 @@ aux prepare_pvs 1 8 -check pv_field $dev1 pv_name $dev1 +check pv_field "$dev1" pv_name "$dev1" # increase min size beyond created PV size 10MB aux lvmconf 'devices/pv_min_size = 10240' # and test device is not visible -not check pv_field $dev1 pv_name $dev1 +not check pv_field "$dev1" pv_name "$dev1" # set too low value errornous value aux lvmconf 'devices/pv_min_size = -100' # check the incorrect value is printed -pvs $dev1 2>&1 | grep -- -100 +pvs "$dev1" 2>&1 | grep -- -100 --- LVM2/test/shell/pv-range-overflow.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/pv-range-overflow.sh 2012/03/16 13:00:06 1.2 @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 2008 Red Hat, Inc. All rights reserved. +# Copyright (C) 2008-2011 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions @@ -20,13 +20,13 @@ # Test for the bogus diagnostic reported in BZ 284771 # http://bugzilla.redhat.com/284771. # 'run pvmove with an unrecognized LV name to show bad diagnostic' -not pvmove -v -nbogus $dev1 $dev2 2> err -grep " Logical volume bogus not found." err +not pvmove -v -nbogus "$dev1" "$dev2" 2> err +grep "Logical volume bogus not found." err # With lvm-2.02.28 and earlier, on a system with 64-bit "long int", # the PE range parsing code would accept values up to 2^64-1, but would # silently truncate them to int32_t. I.e., $dev1:$(echo 2^32|bc) would be # treated just like $dev1:0. # 'run the offending pvmove command' -not pvmove -v -n$lv $dev1:4294967296 $dev2 +not pvmove -v -n$lv "$dev1":4294967296 "$dev2" --- LVM2/test/shell/pvchange-usage.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/pvchange-usage.sh 2012/03/16 13:00:06 1.2 @@ -15,52 +15,51 @@ aux prepare_devs 4 -for mda in 0 1 2 +for mda in 0 1 2 do -# "setup pv with metadatacopies = $mda" - pvcreate $dev4 - pvcreate --metadatacopies $mda $dev1 - vgcreate $vg1 $dev1 $dev4 - -# "pvchange adds/dels tag to pvs with metadatacopies = $mda " - pvchange $dev1 --addtag test$mda - check pv_field $dev1 pv_tags test$mda - pvchange $dev1 --deltag test$mda - check pv_field $dev1 pv_tags "" +# "setup pv with metadatacopies = $mda" + pvcreate "$dev4" + pvcreate --metadatacopies $mda "$dev1" + vgcreate $vg1 "$dev1" "$dev4" + +# "pvchange adds/dels tag to pvs with metadatacopies = $mda " + pvchange "$dev1" --addtag test$mda + check pv_field "$dev1" pv_tags test$mda + pvchange "$dev1" --deltag test$mda + check pv_field "$dev1" pv_tags "" # "vgchange disable/enable allocation for pvs with metadatacopies = $mda (bz452982)" - pvchange $dev1 -x n - check pv_field $dev1 pv_attr --- - pvchange $dev1 -x y - check pv_field $dev1 pv_attr a-- + pvchange "$dev1" -x n + check pv_field "$dev1" pv_attr --- + pvchange "$dev1" -x y + check pv_field "$dev1" pv_attr a-- # 'remove pv' - vgremove $vg1 - pvremove $dev1 $dev4 + vgremove $vg1 + pvremove "$dev1" "$dev4" done # "pvchange uuid" -pvcreate --metadatacopies 0 $dev1 -pvcreate --metadatacopies 2 $dev2 -vgcreate $vg1 $dev1 $dev2 -pvchange -u $dev1 -pvchange -u $dev2 +pvcreate --metadatacopies 0 "$dev1" +pvcreate --metadatacopies 2 "$dev2" +vgcreate $vg1 "$dev1" "$dev2" +pvchange -u "$dev1" +pvchange -u "$dev2" check pvlv_counts $vg1 2 0 0 pvchange -u --all check pvlv_counts $vg1 2 0 0 -# "pvchange rejects uuid change under an active lv" -lvcreate -l 16 -i 2 -n $lv --alloc anywhere $vg1 -check pvlv_counts $vg1 2 1 0 -not pvchange -u $dev1 -lvchange -an "$vg1"/"$lv" -pvchange -u $dev1 +# "pvchange rejects uuid change under an active lv" +lvcreate -l 16 -i 2 -n $lv --alloc anywhere $vg1 +check pvlv_counts $vg1 2 1 0 +not pvchange -u "$dev1" +lvchange -an $vg1/$lv +pvchange -u "$dev1" -# "cleanup" -lvremove -f "$vg1"/"$lv" +# "cleanup" +lvremove -f $vg1/$lv vgremove $vg1 # "pvchange reject --addtag to lvm1 pv" -pvcreate -M1 $dev1 -not pvchange $dev1 --addtag test - +pvcreate -M1 "$dev1" +not pvchange "$dev1" --addtag test --- LVM2/test/shell/pvcreate-metadata0.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/pvcreate-metadata0.sh 2012/03/16 13:00:06 1.2 @@ -23,10 +23,10 @@ pvcreate "$dev1" pvcreate --metadatacopies 0 "$dev2" -# "check lv snapshot" -vgcreate -c n "$vg" "$dev1" "$dev2" -lvcreate -n "$lv" -l 60%FREE "$vg" -lvcreate -s -n $lv2 -l 10%FREE "$vg"/"$lv" -pvdisplay +# "check lv snapshot" +vgcreate -c n $vg "$dev1" "$dev2" +lvcreate -n $lv -l 60%FREE $vg +lvcreate -s -n $lv2 -l 10%FREE $vg/$lv +pvdisplay lvdisplay -vgremove -f "$vg" +vgremove -f $vg --- LVM2/test/shell/pvcreate-operation-md.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/pvcreate-operation-md.sh 2012/03/16 13:00:06 1.2 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2009 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -8,18 +9,19 @@ # along with this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +. lib/test + # skip this test if mdadm or sfdisk (or others) aren't available -which mdadm || exit 200 -which sfdisk || exit 200 -which perl || exit 200 -which awk || exit 200 -which cut || exit 200 +which mdadm || skip +which sfdisk || skip +which perl || skip +which awk || skip +which cut || skip test -f /proc/mdstat && grep -q raid0 /proc/mdstat || \ -modprobe raid0 || exit 200 - -. lib/test + modprobe raid0 || skip +aux lvmconf 'devices/md_component_detection = 1' aux lvmconf 'devices/filter = [ "a|/dev/md.*|", "a/dev\/mapper\/.*$/", "r/.*/" ]' aux prepare_devs 2 @@ -50,10 +52,10 @@ } # create 2 disk MD raid0 array (stripe_width=128K) -test -b "$mddev" && exit 200 -mdadm --create --metadata=1.0 $mddev --auto=md --level 0 --raid-devices=2 --chunk 64 $dev1 $dev2 +test -b "$mddev" && skip +mdadm --create --metadata=1.0 $mddev --auto=md --level 0 --raid-devices=2 --chunk 64 "$dev1" "$dev2" trap 'cleanup_md_and_teardown' EXIT # cleanup this MD device at the end of the test -test -b "$mddev" || exit 200 +test -b "$mddev" || skip # Test alignment of PV on MD without any MD-aware or topology-aware detection # - should treat $mddev just like any other block device @@ -104,7 +106,7 @@ # in case the system is running without devtmpfs /dev # wait here for created device node on tmpfs aux udev_wait $mddev_p - test -b $mddev_p || exit 200 + test -b $mddev_p || skip # Checking for 'alignment_offset' in sysfs implies Linux >= 2.6.31 # but reliable alignment_offset support requires kernel.org Linux >= 2.6.33 @@ -117,7 +119,7 @@ # default alignment is 1M, add alignment_offset pv_align=$((1048576+$alignment_offset))B pvcreate --metadatasize 128k $mddev_p - check pv_field $mddev_p pe_start $pv_align "--units b" + check pv_field $mddev_p pe_start $pv_align --units b pvremove $mddev_p fi fi @@ -125,13 +127,13 @@ # Test newer topology-aware alignment detection w/ --dataalignment override if kernel_at_least 2 6 33 ; then cleanup_md - pvcreate -f $dev1 - pvcreate -f $dev2 + pvcreate -f "$dev1" + pvcreate -f "$dev2" # create 2 disk MD raid0 array (stripe_width=2M) - test -b "$mddev" && exit 200 - mdadm --create --metadata=1.0 $mddev --auto=md --level 0 --raid-devices=2 --chunk 1024 $dev1 $dev2 - test -b "$mddev" || exit 200 + test -b "$mddev" && skip + mdadm --create --metadata=1.0 $mddev --auto=md --level 0 --raid-devices=2 --chunk 1024 "$dev1" "$dev2" + test -b "$mddev" || skip # optimal_io_size=2097152, minimum_io_size=1048576 pv_align="2.00m" --- LVM2/test/shell/pvcreate-operation.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/pvcreate-operation.sh 2012/03/16 13:00:06 1.2 @@ -10,84 +10,83 @@ . lib/test +aux lvmconf 'devices/md_component_detection = 1' + aux prepare_devs 4 for mdatype in 1 2 do # pvcreate (lvm$mdatype) refuses to overwrite an mounted filesystem (bz168330) - test ! -d $TESTDIR/mnt && mkdir $TESTDIR/mnt - if mke2fs $dev1; then - mount $dev1 $TESTDIR/mnt - not pvcreate -M$mdatype $dev1 2>err - grep "Can't open $dev1 exclusively. Mounted filesystem?" err - umount $dev1 + test ! -d mnt && mkdir mnt + if mke2fs "$dev1"; then + mount "$dev1" mnt + not pvcreate -M$mdatype "$dev1" 2>err + grep "Can't open "$dev1" exclusively. Mounted filesystem?" err + umount "$dev1" fi # pvcreate (lvm$mdatype) succeeds when run repeatedly (pv not in a vg) (bz178216) - pvcreate -M$mdatype $dev1 - pvcreate -M$mdatype $dev1 - pvremove -f $dev1 - -# pvcreate (lvm$mdatype) fails when PV belongs to VG" \ - pvcreate -M$mdatype $dev1 - vgcreate -M$mdatype $vg1 $dev1 - not pvcreate -M$mdatype $dev1 + pvcreate -M$mdatype "$dev1" + pvcreate -M$mdatype "$dev1" + pvremove -f "$dev1" + +# pvcreate (lvm$mdatype) fails when PV belongs to VG +# pvcreate -M$mdatype "$dev1" + vgcreate -M$mdatype $vg1 "$dev1" + not pvcreate -M$mdatype "$dev1" vgremove -f $vg1 - pvremove -f $dev1 + pvremove -f "$dev1" # pvcreate (lvm$mdatype) fails when PV1 does and PV2 does not belong to VG - pvcreate -M$mdatype $dev1 - pvcreate -M$mdatype $dev2 - vgcreate -M$mdatype $vg1 $dev1 + pvcreate -M$mdatype "$dev1" + pvcreate -M$mdatype "$dev2" + vgcreate -M$mdatype $vg1 "$dev1" # pvcreate a second time on $dev2 and $dev1 - not pvcreate -M$mdatype $dev2 $dev1 + not pvcreate -M$mdatype "$dev2" "$dev1" vgremove -f $vg1 - pvremove -f $dev2 - pvremove -f $dev1 + pvremove -f "$dev2" "$dev1" # NOTE: Force pvcreate after test completion to ensure clean device -#test_expect_success \ -# "pvcreate (lvm$mdatype) fails on md component device" \ -# 'mdadm -C -l raid0 -n 2 /dev/md0 $dev1 $dev2 && -# pvcreate -M$mdatype $dev1; +#test_expect_success +# "pvcreate (lvm$mdatype) fails on md component device" +# 'mdadm -C -l raid0 -n 2 /dev/md0 "$dev1" "$dev2" && +# pvcreate -M$mdatype "$dev1"; # status=$?; echo status=$status; test $status != 0 && # mdadm --stop /dev/md0 && -# pvcreate -ff -y -M$mdatype $dev1 $dev2 && -# pvremove -f $dev1 $dev2' +# pvcreate -ff -y -M$mdatype "$dev1" "$dev2" && +# pvremove -f "$dev1" "$dev2"' done # pvcreate (lvm2) fails without -ff when PV with metadatacopies=0 belongs to VG -pvcreate --metadatacopies 0 $dev1 -pvcreate --metadatacopies 1 $dev2 -vgcreate $vg1 $dev1 $dev2 -not pvcreate $dev1 +pvcreate --metadatacopies 0 "$dev1" +pvcreate --metadatacopies 1 "$dev2" +vgcreate $vg1 "$dev1" "$dev2" +not pvcreate "$dev1" vgremove -f $vg1 -pvremove -f $dev2 -pvremove -f $dev1 +pvremove -f "$dev2" "$dev1" # pvcreate (lvm2) succeeds with -ff when PV with metadatacopies=0 belongs to VG -pvcreate --metadatacopies 0 $dev1 -pvcreate --metadatacopies 1 $dev2 -vgcreate $vg1 $dev1 $dev2 -pvcreate -ff -y $dev1 -vgreduce --removemissing $vg1 -vgremove -ff $vg1 -pvremove -f $dev2 -pvremove -f $dev1 +pvcreate --metadatacopies 0 "$dev1" +pvcreate --metadatacopies 1 "$dev2" +vgcreate $vg1 "$dev1" "$dev2" +pvcreate -ff -y "$dev1" +vgreduce --removemissing $vg1 +vgremove -ff $vg1 +pvremove -f "$dev2" "$dev1" for i in 0 1 2 3 do # pvcreate (lvm2) succeeds writing LVM label at sector $i - pvcreate --labelsector $i $dev1 - dd if=$dev1 bs=512 skip=$i count=1 2>/dev/null | strings | grep LABELONE >/dev/null - pvremove -f $dev1 + pvcreate --labelsector $i "$dev1" + dd if="$dev1" bs=512 skip=$i count=1 2>/dev/null | strings | grep LABELONE >/dev/null + pvremove -f "$dev1" done # pvcreate (lvm2) fails writing LVM label at sector 4 -not pvcreate --labelsector 4 $dev1 +not pvcreate --labelsector 4 "$dev1" backupfile=$PREFIX.mybackupfile uuid1=freddy-fred-fred-fred-fred-fred-freddy @@ -95,27 +94,27 @@ bogusuuid=fred # pvcreate rejects uuid option with less than 32 characters -not pvcreate --norestorefile --uuid $bogusuuid $dev1 +not pvcreate --norestorefile --uuid $bogusuuid "$dev1" # pvcreate rejects uuid option without restorefile -not pvcreate --uuid $uuid1 $dev1 +not pvcreate --uuid $uuid1 "$dev1" # pvcreate rejects uuid already in use -pvcreate --norestorefile --uuid $uuid1 $dev1 -not pvcreate --norestorefile --uuid $uuid1 $dev2 +pvcreate --norestorefile --uuid $uuid1 "$dev1" +not pvcreate --norestorefile --uuid $uuid1 "$dev2" # pvcreate rejects non-existent file given with restorefile -not pvcreate --uuid $uuid1 --restorefile $backupfile $dev1 +not pvcreate --uuid $uuid1 --restorefile $backupfile "$dev1" # pvcreate rejects restorefile with uuid not found in file -pvcreate --norestorefile --uuid $uuid1 $dev1 +pvcreate --norestorefile --uuid $uuid1 "$dev1" vgcfgbackup -f $backupfile -not pvcreate --uuid $uuid2 --restorefile $backupfile $dev2 +not pvcreate --uuid $uuid2 --restorefile $backupfile "$dev2" # pvcreate wipes swap signature when forced -dd if=/dev/zero of=$dev1 bs=1024 count=64 -mkswap $dev1 -blkid -c /dev/null $dev1 | grep "swap" -pvcreate -f $dev1 +dd if=/dev/zero of="$dev1" bs=1024 count=64 +mkswap "$dev1" +blkid -c /dev/null "$dev1" | grep "swap" +pvcreate -f "$dev1" # blkid cannot make up its mind whether not finding anything it knows is a failure or not -(blkid -c /dev/null $dev1 || true) | not grep "swap" +(blkid -c /dev/null "$dev1" || true) | not grep "swap" --- LVM2/test/shell/pvcreate-usage.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/pvcreate-usage.sh 2012/03/16 13:00:06 1.2 @@ -17,59 +17,57 @@ aux prepare_devs 4 #COMM 'pvcreate rejects negative setphysicalvolumesize' -not pvcreate --setphysicalvolumesize -1024 $dev1 +not pvcreate --setphysicalvolumesize -1024 "$dev1" #COMM 'pvcreate rejects negative metadatasize' -not pvcreate --metadatasize -1024 $dev1 +not pvcreate --metadatasize -1024 "$dev1" # x. metadatasize 0, defaults to 255 # FIXME: unable to check default value, not in reporting cmds # should default to 255 according to code # check pv_field pv_mda_size 255 #COMM 'pvcreate accepts metadatasize 0' -pvcreate --metadatasize 0 $dev1 -pvremove $dev1 +pvcreate --metadatasize 0 "$dev1" +pvremove "$dev1" #Verify vg_mda_size is smaller pv_mda_size -pvcreate --metadatasize 512k $dev1 -pvcreate --metadatasize 96k $dev2 -vgcreate $vg $dev1 $dev2 -check compare_fields vgs $vg vg_mda_size pvs $dev2 pv_mda_size -vgremove -ff $vg +pvcreate --metadatasize 512k "$dev1" +pvcreate --metadatasize 96k "$dev2" +vgcreate $vg "$dev1" "$dev2" +check compare_fields vgs $vg vg_mda_size pvs "$dev2" pv_mda_size +vgremove $vg # x. metadatasize too large # For some reason we allow this, even though there's no room for data? ##COMM 'pvcreate rejects metadatasize too large' -#not pvcreate --metadatasize 100000000000000 $dev1 +#not pvcreate --metadatasize 100000000000000 "$dev1" #COMM 'pvcreate rejects metadatacopies < 0' -not pvcreate --metadatacopies -1 $dev1 +not pvcreate --metadatacopies -1 "$dev1" #COMM 'pvcreate accepts metadatacopies = 0, 1, 2' for j in metadatacopies pvmetadatacopies do -pvcreate --$j 0 $dev1 -pvcreate --$j 1 $dev2 -pvcreate --$j 2 $dev3 -check pv_field $dev1 pv_mda_count 0 -check pv_field $dev2 pv_mda_count 1 -check pv_field $dev3 pv_mda_count 2 -pvremove $dev1 -pvremove $dev2 -pvremove $dev3 +pvcreate --$j 0 "$dev1" +pvcreate --$j 1 "$dev2" +pvcreate --$j 2 "$dev3" +check pv_field "$dev1" pv_mda_count 0 +check pv_field "$dev2" pv_mda_count 1 +check pv_field "$dev3" pv_mda_count 2 +pvremove "$dev1" "$dev2" "$dev3" done #COMM 'pvcreate rejects metadatacopies > 2' -not pvcreate --metadatacopies 3 $dev1 +not pvcreate --metadatacopies 3 "$dev1" #COMM 'pvcreate rejects invalid device' -not pvcreate $dev1bogus +not pvcreate "$dev1"bogus #COMM 'pvcreate rejects labelsector < 0' -not pvcreate --labelsector -1 $dev1 +not pvcreate --labelsector -1 "$dev1" #COMM 'pvcreate rejects labelsector > 1000000000000' -not pvcreate --labelsector 1000000000000 $dev1 +not pvcreate --labelsector 1000000000000 "$dev1" # other possibilites based on code inspection (not sure how hard) # x. device too small (min of 512 * 1024 KB) @@ -82,109 +80,107 @@ # x. set size to value inconsistent with device / PE size #COMM 'pvcreate basic dataalignment sanity checks' -not pvcreate --dataalignment -1 $dev1 -not pvcreate -M 1 --dataalignment 1 $dev1 -not pvcreate --dataalignment 1e $dev1 +not pvcreate --dataalignment -1 "$dev1" +not pvcreate -M 1 --dataalignment 1 "$dev1" +not pvcreate --dataalignment 1e "$dev1" #COMM 'pvcreate always rounded up to page size for start of device' -#pvcreate --metadatacopies 0 --dataalignment 1 $dev1 +#pvcreate --metadatacopies 0 --dataalignment 1 "$dev1" # amuse shell experts -#check pv_field $dev1 pe_start $(($(getconf PAGESIZE)/1024))".00k" +#check pv_field "$dev1" pe_start $(($(getconf PAGESIZE)/1024))".00k" #COMM 'pvcreate sets data offset directly' -pvcreate --dataalignment 512k $dev1 -check pv_field $dev1 pe_start 512.00k +pvcreate --dataalignment 512k "$dev1" +check pv_field "$dev1" pe_start "512.00k" #COMM 'vgcreate/vgremove do not modify data offset of existing PV' -vgcreate $vg $dev1 --config 'devices { data_alignment = 1024 }' -check pv_field $dev1 pe_start 512.00k +vgcreate $vg "$dev1" --config 'devices { data_alignment = 1024 }' +check pv_field "$dev1" pe_start "512.00k" vgremove $vg --config 'devices { data_alignment = 1024 }' -check pv_field $dev1 pe_start 512.00k +check pv_field "$dev1" pe_start "512.00k" #COMM 'pvcreate sets data offset next to mda area' -pvcreate --metadatasize 100k --dataalignment 100k $dev1 -check pv_field $dev1 pe_start 200.00k +pvcreate --metadatasize 100k --dataalignment 100k "$dev1" +check pv_field "$dev1" pe_start "200.00k" # metadata area start is aligned according to pagesize -if [ $PAGESIZE -eq 65536 ] ; then - pv_align="192.50k" -elif [ $PAGESIZE -eq 8192 ] ; then - pv_align="136.50k" -else - pv_align="133.00k" -fi +case "$PAGESIZE" in + 65536) pv_align="192.50k" ;; + 8192) pv_align="136.50k" ;; + *) pv_align="133.00k" ;; +esac -pvcreate --metadatasize 128k --dataalignment 3.5k $dev1 -check pv_field $dev1 pe_start $pv_align +pvcreate --metadatasize 128k --dataalignment 3.5k "$dev1" +check pv_field "$dev1" pe_start $pv_align -pvcreate --metadatasize 128k --metadatacopies 2 --dataalignment 3.5k $dev1 -check pv_field $dev1 pe_start $pv_align +pvcreate --metadatasize 128k --metadatacopies 2 --dataalignment 3.5k "$dev1" +check pv_field "$dev1" pe_start $pv_align # data area is aligned to 1M by default, # data area start is shifted by the specified alignment_offset -pv_align="1052160B" # 1048576 + (7*512) -pvcreate --metadatasize 128k --dataalignmentoffset 7s $dev1 -check pv_field $dev1 pe_start $pv_align "--units b" +pv_align=1052160B # 1048576 + (7*512) +pvcreate --metadatasize 128k --dataalignmentoffset 7s "$dev1" +check pv_field "$dev1" pe_start $pv_align --units b # 2nd metadata area is created without problems when # data area start is shifted by the specified alignment_offset -pvcreate --metadatasize 128k --metadatacopies 2 --dataalignmentoffset 7s $dev1 -check pv_field $dev1 pv_mda_count 2 +pvcreate --metadatasize 128k --metadatacopies 2 --dataalignmentoffset 7s "$dev1" +check pv_field "$dev1" pv_mda_count 2 # FIXME: compare start of 2nd mda with and without --dataalignmentoffset #COMM 'pv with LVM1 compatible data alignment can be convereted' #compatible == LVM1_PE_ALIGN == 64k -pvcreate --dataalignment 256k $dev1 -vgcreate -s 1m $vg $dev1 +pvcreate --dataalignment 256k "$dev1" +vgcreate -s 1m $vg "$dev1" vgconvert -M1 $vg vgconvert -M2 $vg -check pv_field $dev1 pe_start 256.00k +check pv_field "$dev1" pe_start 256.00k vgremove $vg #COMM 'pv with LVM1 incompatible data alignment cannot be convereted' -pvcreate --dataalignment 10k $dev1 -vgcreate -s 1m $vg $dev1 +pvcreate --dataalignment 10k "$dev1" +vgcreate -s 1m $vg "$dev1" not vgconvert -M1 $vg vgremove $vg #COMM 'vgcfgrestore allows pe_start=0' #basically it produces nonsense, but it tests vgcfgrestore, #not that final cfg is usable... -pvcreate --metadatacopies 0 $dev1 -pvcreate $dev2 -vgcreate $vg $dev1 $dev2 -vgcfgbackup -f "$(pwd)/backup.$$" $vg -sed 's/pe_start = [0-9]*/pe_start = 0/' "$(pwd)/backup.$$" > "$(pwd)/backup.$$1" -vgcfgrestore -f "$(pwd)/backup.$$1" $vg -check pv_field $dev1 pe_start 0 -check pv_field $dev2 pe_start 0 +pvcreate --metadatacopies 0 "$dev1" +pvcreate "$dev2" +vgcreate $vg "$dev1" "$dev2" +vgcfgbackup -f backup.$$ $vg +sed 's/pe_start = [0-9]*/pe_start = 0/' backup.$$ > backup.$$1 +vgcfgrestore -f backup.$$1 $vg +check pv_field "$dev1" pe_start "0" +check pv_field "$dev2" pe_start "0" vgremove $vg -echo test pvcreate --metadataignore +echo "test pvcreate --metadataignore" for pv_in_vg in 1 0; do for mdacp in 1 2; do for ignore in y n; do - echo pvcreate --metadataignore has proper mda_count and mda_used_count - pvcreate --metadatacopies $mdacp --metadataignore $ignore $dev1 $dev2 - check pv_field $dev1 pv_mda_count $mdacp - check pv_field $dev2 pv_mda_count $mdacp + echo "pvcreate --metadataignore has proper mda_count and mda_used_count" + pvcreate --metadatacopies $mdacp --metadataignore $ignore "$dev1" "$dev2" + check pv_field "$dev1" pv_mda_count "$mdacp" + check pv_field "$dev2" pv_mda_count "$mdacp" if [ $ignore = y ]; then - check pv_field $dev1 pv_mda_used_count 0 - check pv_field $dev2 pv_mda_used_count 0 + check pv_field "$dev1" pv_mda_used_count "0" + check pv_field "$dev2" pv_mda_used_count "0" else - check pv_field $dev1 pv_mda_used_count $mdacp - check pv_field $dev2 pv_mda_used_count $mdacp + check pv_field "$dev1" pv_mda_used_count "$mdacp" + check pv_field "$dev2" pv_mda_used_count "$mdacp" fi - echo vgcreate has proper vg_mda_count and vg_mda_used_count + echo "vgcreate has proper vg_mda_count and vg_mda_used_count" if [ $pv_in_vg = 1 ]; then - vgcreate -c n "$vg" $dev1 $dev2 - check vg_field $vg vg_mda_count $(($mdacp * 2)) + vgcreate -c n $vg "$dev1" "$dev2" + check vg_field $vg vg_mda_count "$(($mdacp * 2))" if [ $ignore = y ]; then - check vg_field $vg vg_mda_used_count 1 + check vg_field $vg vg_mda_used_count "1" else - check vg_field $vg vg_mda_used_count $(($mdacp * 2)) + check vg_field $vg vg_mda_used_count "$(($mdacp * 2))" fi - check vg_field $vg vg_mda_copies unmanaged + check vg_field $vg vg_mda_copies "unmanaged" vgremove $vg fi done --- LVM2/test/shell/pvmove-basic.sh 2012/03/04 16:02:19 1.2 +++ LVM2/test/shell/pvmove-basic.sh 2012/03/16 13:00:06 1.3 @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 2008 Red Hat, Inc. All rights reserved. +# Copyright (C) 2008-2012 Red Hat, Inc. All rights reserved. # Copyright (C) 2007 NEC Corporation # # This copyrighted material is made available to anyone wishing to use, @@ -58,31 +58,31 @@ FIRST="" prepare_lvs_() { - lvcreate -l2 -n $lv1 $vg $dev1 - test -z "$FIRST" && lv_is_on_ $vg/$lv1 $dev1 - lvcreate -l9 -i3 -n $lv2 $vg $dev2 $dev3 $dev4 - test -z "$FIRST" && lv_is_on_ $vg/$lv2 $dev2 $dev3 $dev4 - lvextend -l+2 $vg/$lv1 $dev2 - test -z "$FIRST" && lv_is_on_ $vg/$lv1 $dev1 $dev2 - lvextend -l+2 $vg/$lv1 $dev3 - test -z "$FIRST" && lv_is_on_ $vg/$lv1 $dev1 $dev2 $dev3 - lvextend -l+2 $vg/$lv1 $dev1 - test -z "$FIRST" && lv_is_on_ $vg/$lv1 $dev1 $dev2 $dev3 $dev1 - lvcreate -l1 -n $lv3 $vg $dev2 - test -z "$FIRST" && lv_is_on_ $vg/$lv3 $dev2 - save_dev_sum_ $(lvdev_ $vg $lv1) - save_dev_sum_ $(lvdev_ $vg $lv2) - save_dev_sum_ $(lvdev_ $vg $lv3) + lvcreate -l2 -n $lv1 $vg "$dev1" + test -z "$FIRST" && lv_is_on_ $vg/$lv1 "$dev1" + lvcreate -l9 -i3 -n $lv2 $vg "$dev2" "$dev3" "$dev4" + test -z "$FIRST" && lv_is_on_ $vg/$lv2 "$dev2" "$dev3" "$dev4" + lvextend -l+2 $vg/$lv1 "$dev2" + test -z "$FIRST" && lv_is_on_ $vg/$lv1 "$dev1" "$dev2" + lvextend -l+2 $vg/$lv1 "$dev3" + test -z "$FIRST" && lv_is_on_ $vg/$lv1 "$dev1" "$dev2" "$dev3" + lvextend -l+2 $vg/$lv1 "$dev1" + test -z "$FIRST" && lv_is_on_ $vg/$lv1 "$dev1" "$dev2" "$dev3" "$dev1" + lvcreate -l1 -n $lv3 $vg "$dev2" + test -z "$FIRST" && lv_is_on_ $vg/$lv3 "$dev2" + save_dev_sum_ $(lvdev_ $vg $lv1) + save_dev_sum_ $(lvdev_ $vg $lv2) + save_dev_sum_ $(lvdev_ $vg $lv3) if test -z "$FIRST" ; then - lvs -a -o devices --noheadings $vg/$lv1 > ${lv1}_devs - lvs -a -o devices --noheadings $vg/$lv2 > ${lv2}_devs - lvs -a -o devices --noheadings $vg/$lv3 > ${lv3}_devs + get lv_field $vg/$lv1 devices > ${lv1}_devs + get lv_field $vg/$lv2 devices > ${lv2}_devs + get lv_field $vg/$lv3 devices > ${lv3}_devs fi FIRST=done } lv_not_changed_() { - lvs -a -o devices --noheadings $1 > out + get lv_field $1 devices > out diff $(basename $1)_devs out } @@ -110,276 +110,276 @@ # filter by LV #COMM "only specified LV is moved: from pv2 to pv5 only for lv1" -prepare_lvs_ -pvmove -i1 -n $vg/$lv1 $dev2 $dev5 -lv_is_on_ $vg/$lv1 $dev1 $dev5 $dev3 $dev1 -lv_not_changed_ $vg/$lv2 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i1 -n $vg/$lv1 "$dev2" "$dev5" +lv_is_on_ $vg/$lv1 "$dev1" "$dev5" "$dev3" "$dev1" +lv_not_changed_ $vg/$lv2 +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ # --- # segments in a LV #COMM "the 1st seg of 3-segs LV is moved: from pv1 of lv1 to pv4" -prepare_lvs_ -pvmove -i0 -n $vg/$lv1 $dev1 $dev4 -lv_is_on_ $vg/$lv1 $dev4 $dev2 $dev3 $dev4 -lv_not_changed_ $vg/$lv2 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 -n $vg/$lv1 "$dev1" "$dev4" +lv_is_on_ $vg/$lv1 "$dev4" "$dev2" "$dev3" "$dev4" +lv_not_changed_ $vg/$lv2 +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ #COMM "the 2nd seg of 3-segs LV is moved: from pv2 of lv1 to pv4" -prepare_lvs_ -pvmove -i0 -n $vg/$lv1 $dev2 $dev4 -lv_is_on_ $vg/$lv1 $dev1 $dev4 $dev3 $dev1 -lv_not_changed_ $vg/$lv2 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 -n $vg/$lv1 "$dev2" "$dev4" +lv_is_on_ $vg/$lv1 "$dev1" "$dev4" "$dev3" "$dev1" +lv_not_changed_ $vg/$lv2 +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ #COMM "the 3rd seg of 3-segs LV is moved: from pv3 of lv1 to pv4" -prepare_lvs_ -pvmove -i0 -n $vg/$lv1 $dev3 $dev4 -lv_is_on_ $vg/$lv1 $dev1 $dev2 $dev4 $dev1 -lv_not_changed_ $vg/$lv2 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 -n $vg/$lv1 "$dev3" "$dev4" +lv_is_on_ $vg/$lv1 "$dev1" "$dev2" "$dev4" "$dev1" +lv_not_changed_ $vg/$lv2 +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ # --- # multiple LVs matching #COMM "1 out of 3 LVs is moved: from pv4 to pv5" -prepare_lvs_ -pvmove -i0 $dev4 $dev5 -lv_not_changed_ $vg/$lv1 -lv_is_on_ $vg/$lv2 $dev2 $dev3 $dev5 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 "$dev4" "$dev5" +lv_not_changed_ $vg/$lv1 +lv_is_on_ $vg/$lv2 "$dev2" "$dev3" "$dev5" +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ #COMM "2 out of 3 LVs are moved: from pv3 to pv5" -prepare_lvs_ -pvmove -i0 $dev3 $dev5 -lv_is_on_ $vg/$lv1 $dev1 $dev2 $dev5 $dev1 -lv_is_on_ $vg/$lv2 $dev2 $dev5 $dev4 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 "$dev3" "$dev5" +lv_is_on_ $vg/$lv1 "$dev1" "$dev2" "$dev5" "$dev1" +lv_is_on_ $vg/$lv2 "$dev2" "$dev5" "$dev4" +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ #COMM "3 out of 3 LVs are moved: from pv2 to pv5" -prepare_lvs_ -pvmove -i0 $dev2 $dev5 -lv_is_on_ $vg/$lv1 $dev1 $dev5 $dev3 $dev1 -lv_is_on_ $vg/$lv2 $dev5 $dev3 $dev4 -lv_is_on_ $vg/$lv3 $dev5 +prepare_lvs_ +pvmove -i0 "$dev2" "$dev5" +lv_is_on_ $vg/$lv1 "$dev1" "$dev5" "$dev3" "$dev1" +lv_is_on_ $vg/$lv2 "$dev5" "$dev3" "$dev4" +lv_is_on_ $vg/$lv3 "$dev5" check_and_cleanup_lvs_ # --- # areas of striping #COMM "move the 1st stripe: from pv2 of lv2 to pv1" -prepare_lvs_ -pvmove -i0 -n $vg/$lv2 $dev2 $dev1 -lv_not_changed_ $vg/$lv1 -lv_is_on_ $vg/$lv2 $dev1 $dev3 $dev4 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 -n $vg/$lv2 "$dev2" "$dev1" +lv_not_changed_ $vg/$lv1 +lv_is_on_ $vg/$lv2 "$dev1" "$dev3" "$dev4" +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ #COMM "move the 2nd stripe: from pv3 of lv2 to pv1" -prepare_lvs_ -pvmove -i0 -n $vg/$lv2 $dev3 $dev1 -lv_not_changed_ $vg/$lv1 -lv_is_on_ $vg/$lv2 $dev2 $dev1 $dev4 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 -n $vg/$lv2 "$dev3" "$dev1" +lv_not_changed_ $vg/$lv1 +lv_is_on_ $vg/$lv2 "$dev2" "$dev1" "$dev4" +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ #COMM "move the 3rd stripe: from pv4 of lv2 to pv1" -prepare_lvs_ -pvmove -i0 -n $vg/$lv2 $dev4 $dev1 -lv_not_changed_ $vg/$lv1 -lv_is_on_ $vg/$lv2 $dev2 $dev3 $dev1 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 -n $vg/$lv2 "$dev4" "$dev1" +lv_not_changed_ $vg/$lv1 +lv_is_on_ $vg/$lv2 "$dev2" "$dev3" "$dev1" +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ # --- # partial segment match (source segment splitted) #COMM "match to the start of segment:from pv2:0-0 to pv5" -prepare_lvs_ -pvmove -i0 $dev2:0-0 $dev5 -lv_not_changed_ $vg/$lv1 -lv_is_on_ $vg/$lv2 $dev5 $dev2 $dev3 $dev4 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 "$dev2":0-0 "$dev5" +lv_not_changed_ $vg/$lv1 +lv_is_on_ $vg/$lv2 "$dev5" "$dev2" "$dev3" "$dev4" +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ #COMM "match to the middle of segment: from pv2:1-1 to pv5" -prepare_lvs_ -pvmove -i0 $dev2:1-1 $dev5 -lv_not_changed_ $vg/$lv1 -lv_is_on_ $vg/$lv2 $dev2 $dev5 $dev2 $dev3 $dev4 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 "$dev2":1-1 "$dev5" +lv_not_changed_ $vg/$lv1 +lv_is_on_ $vg/$lv2 "$dev2" "$dev5" "$dev2" "$dev3" "$dev4" +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ #COMM "match to the end of segment: from pv2:2-2 to pv5" -prepare_lvs_ -pvmove -i0 $dev2:2-2 $dev5 -lv_not_changed_ $vg/$lv1 -lv_is_on_ $vg/$lv2 $dev2 $dev5 $dev3 $dev4 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 "$dev2":2-2 "$dev5" +lv_not_changed_ $vg/$lv1 +lv_is_on_ $vg/$lv2 "$dev2" "$dev5" "$dev3" "$dev4" +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ # --- # destination segment splitted #COMM "no destination split: from pv2:0-2 to pv5" -prepare_lvs_ -pvmove -i0 $dev2:0-2 $dev5 -lv_not_changed_ $vg/$lv1 -lv_is_on_ $vg/$lv2 $dev5 $dev3 $dev4 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 "$dev2":0-2 "$dev5" +lv_not_changed_ $vg/$lv1 +lv_is_on_ $vg/$lv2 "$dev5" "$dev3" "$dev4" +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ #COMM "destination split into 2: from pv2:0-2 to pv5:5-5 and pv4:5-6" -prepare_lvs_ -pvmove -i0 --alloc anywhere $dev2:0-2 $dev5:5-5 $dev4:5-6 -lv_not_changed_ $vg/$lv1 -lv_is_on_ $vg/$lv2 $dev5 $dev4 $dev3 $dev4 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 --alloc anywhere "$dev2":0-2 "$dev5":5-5 "$dev4":5-6 +lv_not_changed_ $vg/$lv1 +lv_is_on_ $vg/$lv2 "$dev5" "$dev4" "$dev3" "$dev4" +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ #COMM "destination split into 3: from pv2:0-2 to {pv3,4,5}:5-5" -prepare_lvs_ -pvmove -i0 --alloc anywhere $dev2:0-2 $dev3:5-5 $dev4:5-5 $dev5:5-5 -lv_not_changed_ $vg/$lv1 -lv_is_on_ $vg/$lv2 $dev3 $dev4 $dev5 $dev3 $dev4 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 --alloc anywhere "$dev2":0-2 "$dev3":5-5 "$dev4":5-5 "$dev5":5-5 +lv_not_changed_ $vg/$lv1 +lv_is_on_ $vg/$lv2 "$dev3" "$dev4" "$dev5" "$dev3" "$dev4" +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ # --- # alloc policy (anywhere, contiguous) with both success and failure cases -#COMM "alloc normal on same PV for source and destination: from pv3:0-2 to pv3:5-7" -prepare_lvs_ -not pvmove -i0 $dev3:0-2 $dev3:5-7 +#COMM "alloc normal on same PV for source and destination: from pv3:0-2 to pv3:5-7" +prepare_lvs_ +not pvmove -i0 "$dev3":0-2 "$dev3":5-7 # "(cleanup previous test)" -lv_not_changed_ $vg/$lv1 -lv_not_changed_ $vg/$lv2 -lv_not_changed_ $vg/$lv3 +lv_not_changed_ $vg/$lv1 +lv_not_changed_ $vg/$lv2 +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ #COMM "alloc anywhere on same PV for source and destination: from pv3:0-2 to pv3:5-7" -prepare_lvs_ -pvmove -i0 --alloc anywhere $dev3:0-2 $dev3:5-7 -lv_not_changed_ $vg/$lv1 -lv_is_on_ $vg/$lv2 $dev2 $dev3 $dev4 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 --alloc anywhere "$dev3":0-2 "$dev3":5-7 +lv_not_changed_ $vg/$lv1 +lv_is_on_ $vg/$lv2 "$dev2" "$dev3" "$dev4" +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ #COMM "alloc anywhere but better area available: from pv3:0-2 to pv3:5-7 or pv5:5-6,pv4:5-5" -prepare_lvs_ -pvmove -i0 --alloc anywhere $dev3:0-2 $dev3:5-7 $dev5:5-6 $dev4:5-5 -lv_not_changed_ $vg/$lv1 -#lv_is_on_ $vg/$lv2 $dev2 $dev5 $dev4 $dev4 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 --alloc anywhere "$dev3":0-2 "$dev3":5-7 "$dev5":5-6 "$dev4":5-5 +lv_not_changed_ $vg/$lv1 +#lv_is_on_ $vg/$lv2 "$dev2" "$dev5" "$dev4" "$dev4" +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ #COMM "alloc contiguous but area not available: from pv2:0-2 to pv5:5-5 and pv4:5-6" -prepare_lvs_ -not pvmove -i0 --alloc contiguous $dev2:0-2 $dev5:5-5 $dev4:5-6 +prepare_lvs_ +not pvmove -i0 --alloc contiguous "$dev2":0-2 "$dev5":5-5 "$dev4":5-6 # "(cleanup previous test)" -lv_not_changed_ $vg/$lv1 -lv_not_changed_ $vg/$lv2 -lv_not_changed_ $vg/$lv3 +lv_not_changed_ $vg/$lv1 +lv_not_changed_ $vg/$lv2 +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ #COMM "alloc contiguous and contiguous area available: from pv2:0-2 to pv5:0-0,pv5:3-5 and pv4:5-6" -prepare_lvs_ -pvmove -i0 --alloc contiguous $dev2:0-2 $dev5:0-0 $dev5:3-5 $dev4:5-6 -lv_not_changed_ $vg/$lv1 -lv_is_on_ $vg/$lv2 $dev5 $dev3 $dev4 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 --alloc contiguous "$dev2":0-2 "$dev5":0-0 "$dev5":3-5 "$dev4":5-6 +lv_not_changed_ $vg/$lv1 +lv_is_on_ $vg/$lv2 "$dev5" "$dev3" "$dev4" +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ # --- # multiple segments in a LV #COMM "multiple source LVs: from pv3 to pv5" -prepare_lvs_ -pvmove -i0 $dev3 $dev5 -lv_is_on_ $vg/$lv1 $dev1 $dev2 $dev5 -lv_is_on_ $vg/$lv2 $dev2 $dev5 $dev4 -lv_not_changed_ $vg/$lv3 +prepare_lvs_ +pvmove -i0 "$dev3" "$dev5" +lv_is_on_ $vg/$lv1 "$dev1" "$dev2" "$dev5" +lv_is_on_ $vg/$lv2 "$dev2" "$dev5" "$dev4" +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ # --- # move inactive LV #COMM "move inactive LV: from pv2 to pv5" -prepare_lvs_ -lvchange -an $vg/$lv1 -lvchange -an $vg/$lv3 -pvmove -i0 $dev2 $dev5 -lv_is_on_ $vg/$lv1 $dev1 $dev5 $dev3 -lv_is_on_ $vg/$lv2 $dev5 $dev3 $dev4 -lv_is_on_ $vg/$lv3 $dev5 +prepare_lvs_ +lvchange -an $vg/$lv1 +lvchange -an $vg/$lv3 +pvmove -i0 "$dev2" "$dev5" +lv_is_on_ $vg/$lv1 "$dev1" "$dev5" "$dev3" +lv_is_on_ $vg/$lv2 "$dev5" "$dev3" "$dev4" +lv_is_on_ $vg/$lv3 "$dev5" check_and_cleanup_lvs_ # --- # other failure cases #COMM "no PEs to move: from pv3 to pv1" -prepare_lvs_ -pvmove -i0 $dev3 $dev1 -not pvmove -i0 $dev3 $dev1 +prepare_lvs_ +pvmove -i0 "$dev3" "$dev1" +not pvmove -i0 "$dev3" "$dev1" # "(cleanup previous test)" -lv_is_on_ $vg/$lv1 $dev1 $dev2 $dev1 -lv_is_on_ $vg/$lv2 $dev2 $dev1 $dev4 -lv_not_changed_ $vg/$lv3 +lv_is_on_ $vg/$lv1 "$dev1" "$dev2" "$dev1" +lv_is_on_ $vg/$lv2 "$dev2" "$dev1" "$dev4" +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ -#COMM "no space available: from pv2:0-0 to pv1:0-0" -prepare_lvs_ -not pvmove -i0 $dev2:0-0 $dev1:0-0 +#COMM "no space available: from pv2:0-0 to pv1:0-0" +prepare_lvs_ +not pvmove -i0 "$dev2":0-0 "$dev1":0-0 # "(cleanup previous test)" -lv_not_changed_ $vg/$lv1 -lv_not_changed_ $vg/$lv2 -lv_not_changed_ $vg/$lv3 +lv_not_changed_ $vg/$lv1 +lv_not_changed_ $vg/$lv2 +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ #COMM 'same source and destination: from pv1 to pv1' -prepare_lvs_ -not pvmove -i0 $dev1 $dev1 +prepare_lvs_ +not pvmove -i0 "$dev1" "$dev1" #"(cleanup previous test)" -lv_not_changed_ $vg/$lv1 -lv_not_changed_ $vg/$lv2 -lv_not_changed_ $vg/$lv3 +lv_not_changed_ $vg/$lv1 +lv_not_changed_ $vg/$lv2 +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ #COMM "sum of specified destination PEs is large enough, but it includes source PEs and the free PEs are not enough" -prepare_lvs_ -not pvmove --alloc anywhere $dev1:0-2 $dev1:0-2 $dev5:0-0 2> err +prepare_lvs_ +not pvmove --alloc anywhere "$dev1":0-2 "$dev1":0-2 "$dev5":0-0 2> err #"(cleanup previous test)" -grep "Insufficient free space" err -lv_not_changed_ $vg/$lv1 -lv_not_changed_ $vg/$lv2 -lv_not_changed_ $vg/$lv3 +grep "Insufficient free space" err +lv_not_changed_ $vg/$lv1 +lv_not_changed_ $vg/$lv2 +lv_not_changed_ $vg/$lv3 check_and_cleanup_lvs_ # --------------------------------------------------------------------- #COMM "pvmove abort" -prepare_lvs_ -pvmove -i100 -b $dev1 $dev3 -pvmove --abort +prepare_lvs_ +pvmove -i100 -b "$dev1" "$dev3" +pvmove --abort check_and_cleanup_lvs_ #COMM "pvmove out of --metadatacopies 0 PV (bz252150)" vgremove -ff $vg pvcreate $(cat DEVICES) -pvcreate --metadatacopies 0 $dev1 $dev2 +pvcreate --metadatacopies 0 "$dev1" "$dev2" create_vg_ -lvcreate -l4 -n $lv1 $vg $dev1 -pvmove $dev1 +lvcreate -l4 -n $lv1 $vg "$dev1" +pvmove "$dev1" #COMM "pvmove fails activating mirror, properly restores state before pvmove" -dmsetup create "$vg-pvmove0" --notable -not pvmove -i 1 $dev2 -test $(dmsetup info --noheadings -c -o suspended "$vg-$lv1") = "Active" -dmsetup remove "$vg-pvmove0" +dmsetup create $vg-pvmove0 --notable +not pvmove -i 1 "$dev2" +test $(dmsetup info --noheadings -c -o suspended $vg-$lv1) = "Active" +dmsetup remove $vg-pvmove0 --- LVM2/test/shell/pvremove-usage.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/pvremove-usage.sh 2012/03/16 13:00:06 1.2 @@ -12,57 +12,57 @@ . lib/test aux prepare_devs 3 -pvcreate $dev1 -pvcreate --metadatacopies 0 $dev2 -pvcreate --metadatacopies 2 $dev3 -pvremove $dev2 +pvcreate "$dev1" +pvcreate --metadatacopies 0 "$dev2" +pvcreate --metadatacopies 2 "$dev3" +pvremove "$dev2" # failing, but still removing everything what can be removed # is somewhat odd as default, what do we have -f for? -pvs | not grep $dev2 -pvcreate --metadatacopies 0 $dev2 +pvs | not grep "$dev2" +pvcreate --metadatacopies 0 "$dev2" # check pvremove refuses to remove pv in a vg -vgcreate -c n $vg $dev1 $dev2 -not pvremove $dev2 $dev3 +vgcreate -c n $vg "$dev1" "$dev2" +not pvremove "$dev2" "$dev3" for mdacp in 0 1 2; do # check pvremove truly wipes the label (pvscan wont find) (---metadatacopies $mdacp) - pvcreate --metadatacopies $mdacp $dev3 - pvremove $dev3 + pvcreate --metadatacopies $mdacp "$dev3" + pvremove "$dev3" # try to remove agail - should fail cleanly - not pvremove $dev3 - pvscan | not grep $dev3 + not pvremove "$dev3" + pvscan | not grep "$dev3" # bz179473 refuse to wipe non-PV device without -f - not pvremove $dev3 - pvremove -f $dev3 + not pvremove "$dev3" + pvremove -f "$dev3" # reset setup vgremove -ff $vg - pvcreate --metadatacopies $mdacp $dev1 - pvcreate $dev2 - vgcreate $vg $dev1 $dev2 + pvcreate --metadatacopies $mdacp "$dev1" + pvcreate "$dev2" + vgcreate $vg "$dev1" "$dev2" # pvremove -f fails when pv in a vg (---metadatacopies $mdacp) - not pvremove -f $dev1 - pvs $dev1 + not pvremove -f "$dev1" + pvs "$dev1" # pvremove -ff fails without confirmation when pv in a vg (---metadatacopies $mdacp) - echo n | not pvremove -ff $dev1 + echo n | not pvremove -ff "$dev1" # pvremove -ff succeds with confirmation when pv in a vg (---metadatacopies $mdacp) - pvremove -ffy $dev1 - not pvs $dev1 + pvremove -ffy "$dev1" + not pvs "$dev1" vgreduce --removemissing $vg - pvcreate --metadatacopies $mdacp $dev1 - vgextend $vg $dev1 + pvcreate --metadatacopies $mdacp "$dev1" + vgextend $vg "$dev1" # pvremove -ff -y is sufficient when pv in a vg (---metadatacopies $mdacp)" ' - pvremove -ff -y $dev1 + pvremove -ff -y "$dev1" vgreduce --removemissing $vg - pvcreate --metadatacopies $mdacp $dev1 - vgextend $vg $dev1 + pvcreate --metadatacopies $mdacp "$dev1" + vgextend $vg "$dev1" done --- LVM2/test/shell/read-ahead.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/read-ahead.sh 2012/03/16 13:00:06 1.2 @@ -17,36 +17,23 @@ . lib/test - -get_lvs_() { - lvs --units s --nosuffix --noheadings -o $1 "$vg"/"$lv" -} - -check_lvs_() { - case $(get_lvs_ $1) in - *$2) true ;; - *) false ;; - esac -} - aux prepare_vg 5 #COMM "test various read ahead settings (bz450922)" -lvcreate -n "$lv" -l 100%FREE -i5 -I256 "$vg" -ra="$(get_lvs_ lv_kernel_read_ahead)" -test "$(( ( $ra / 5 ) * 5 ))" -eq $ra -lvdisplay "$vg"/"$lv" -not lvchange -r auto "$vg"/"$lv" 2>&1 | grep auto -check_lvs_ lv_read_ahead auto -check_lvs_ lv_kernel_read_ahead 5120 -lvchange -r 640 "$vg/$lv" -check_lvs_ lv_read_ahead 640 -lvremove -ff "$vg" +lvcreate -l 100%FREE -i5 -I256 -n $lv $vg +ra=$(get lv_field $vg/$lv lv_kernel_read_ahead --units s --nosuffix) +test $(( ( $ra / 5 ) * 5 )) -eq $ra +not lvchange -r auto $vg/$lv 2>&1 | grep auto +check lv_field $vg/$lv lv_read_ahead auto +check lv_field $vg/$lv lv_kernel_read_ahead 5120 --units s --nosuffix +lvchange -r 640 $vg/$lv +check lv_field $vg/$lv lv_read_ahead 640 --units s --nosuffix +lvremove -ff $vg #COMM "read ahead is properly inherited from underlying PV" -blockdev --setra 768 $dev1 +blockdev --setra 768 "$dev1" vgscan -lvcreate -n $lv -L4m $vg $dev1 +lvcreate -n $lv -L4m $vg "$dev1" test $(blockdev --getra $DM_DEV_DIR/$vg/$lv) -eq 768 lvremove -ff $vg --- LVM2/test/shell/snapshot-autoumount-dmeventd.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/snapshot-autoumount-dmeventd.sh 2012/03/16 13:00:06 1.2 @@ -13,27 +13,30 @@ . lib/test -which mkfs.ext2 || exit 200 +which mkfs.ext2 || skip aux lvmconf "activation/snapshot_autoextend_percent = 0" \ "activation/snapshot_autoextend_threshold = 100" -aux prepare_vg 2 aux prepare_dmeventd +aux prepare_vg 2 +mntdir="${PREFIX}mnt" lvcreate -l 8 -n base $vg -mkfs.ext2 $DM_DEV_DIR/$vg/base +mkfs.ext2 "$DM_DEV_DIR/$vg/base" lvcreate -s -l 4 -n snap $vg/base lvchange --monitor y $vg/snap -mkdir mnt -mount $DM_DEV_DIR/mapper/$vg-snap mnt +mkdir "$mntdir" +mount "$DM_DEV_DIR/mapper/$vg-snap" "$mntdir" mount -cat /proc/mounts | grep $vg-snap +cat /proc/mounts | grep "$mntdir" -dd if=/dev/zero of=mnt/file$1 bs=1M count=17 +dd if=/dev/zero of="$mntdir/file$1" bs=1M count=17 sync sleep 10 # dmeventd only checks every 10 seconds :( -cat /proc/mounts | not grep $vg-snap +cat /proc/mounts | not grep "$mntdir" + +vgremove -f $vg --- LVM2/test/shell/snapshot-merge.sh 2012/02/15 13:51:17 1.2 +++ LVM2/test/shell/snapshot-merge.sh 2012/03/16 13:00:06 1.3 @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 2010 Red Hat, Inc. All rights reserved. +# Copyright (C) 2010-2012 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions @@ -8,14 +8,12 @@ # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -set -xv - -which mkfs.ext3 || exit 200 . lib/test -lvdev_() -{ +which mkfs.ext3 || skip + +lvdev_() { echo "$DM_DEV_DIR/$1/$2" } @@ -23,16 +21,15 @@ echo ${1}_snap } -setup_merge() { +setup_merge_() { local VG_NAME=$1 local LV_NAME=$2 - local NUM_EXTRA_SNAPS="$3" - test -z "$NUM_EXTRA_SNAPS" && NUM_EXTRA_SNAPS=0 + local NUM_EXTRA_SNAPS=${3:-0} local BASE_SNAP_LV_NAME=$(snap_lv_name_ $LV_NAME) lvcreate -n $LV_NAME -l 50%FREE $VG_NAME lvcreate -s -n $BASE_SNAP_LV_NAME -l 20%FREE ${VG_NAME}/${LV_NAME} - mkfs.ext3 $(lvdev_ $VG_NAME $LV_NAME) + mkfs.ext3 "$(lvdev_ $VG_NAME $LV_NAME)" if [ $NUM_EXTRA_SNAPS -gt 0 ]; then for i in `seq 1 $NUM_EXTRA_SNAPS`; do @@ -42,13 +39,13 @@ } aux prepare_vg 1 100 - +mkdir test_mnt # test full merge of a single LV -setup_merge $vg $lv1 +setup_merge_ $vg $lv1 # now that snapshot LV is created: test if snapshot-merge target is available -$(dmsetup targets | grep snapshot-merge >/dev/null) || exit 200 -lvs -a +aux target_at_least snapshot-merge 1 0 0 || skip + # make sure lvconvert --merge requires explicit LV listing not lvconvert --merge 2>err lvconvert --merge $vg/$(snap_lv_name_ $lv1) @@ -56,30 +53,27 @@ # test that an actively merging snapshot may not be removed -setup_merge $vg $lv1 +setup_merge_ $vg $lv1 lvconvert -i+100 --merge --background $vg/$(snap_lv_name_ $lv1) not lvremove -f $vg/$(snap_lv_name_ $lv1) lvremove -f $vg/$lv1 # "onactivate merge" test -setup_merge $vg $lv1 -lvs -a -mkdir test_mnt -mount $(lvdev_ $vg $lv1) test_mnt +setup_merge_ $vg $lv1 +mount "$(lvdev_ $vg $lv1)" test_mnt lvconvert --merge $vg/$(snap_lv_name_ $lv1) # -- refresh LV while FS is still mounted (merge must not start), # verify 'snapshot-origin' target is still being used lvchange --refresh $vg/$lv1 umount test_mnt -rm -r test_mnt -dmsetup table ${vg}-${lv1} | grep " snapshot-origin " +dmsetup table $vg-$lv1 | grep " snapshot-origin " # -- refresh LV to start merge (now that FS is unmounted), # an active merge uses the 'snapshot-merge' target lvchange --refresh $vg/$lv1 # check whether it's still merging - or maybe got already merged (slow test) -dmsetup table ${vg}-${lv1} | grep " snapshot-merge " || dmsetup table ${vg}-${lv1} | grep " linear " +dmsetup table $vg-$lv1 | grep " snapshot-merge " || dmsetup table $vg-$lv1 | grep " linear " # -- don't care if merge is still active; lvremove at this point # may test stopping an active merge lvremove -f $vg/$lv1 @@ -88,38 +82,33 @@ # "onactivate merge" test # -- deactivate/remove after disallowed merge attempt, tests # to make sure preload of origin's metadata is _not_ performed -setup_merge $vg $lv1 -lvs -a -mkdir test_mnt -mount $(lvdev_ $vg $lv1) test_mnt +setup_merge_ $vg $lv1 +mount "$(lvdev_ $vg $lv1)" test_mnt lvconvert --merge $vg/$(snap_lv_name_ $lv1) # -- refresh LV while FS is still mounted (merge must not start), # verify 'snapshot-origin' target is still being used lvchange --refresh $vg/$lv1 umount test_mnt -rm -r test_mnt -dmsetup table ${vg}-${lv1} | grep " snapshot-origin " >/dev/null +dmsetup table $vg-$lv1 | grep " snapshot-origin " >/dev/null lvremove -f $vg/$lv1 # test multiple snapshot merge; tests copy out that is driven by merge -setup_merge $vg $lv1 1 -lvs -a +setup_merge_ $vg $lv1 1 lvconvert --merge $vg/$(snap_lv_name_ $lv1) lvremove -f $vg/$lv1 # test merging multiple snapshots that share the same tag -setup_merge $vg $lv1 -setup_merge $vg $lv2 -lvs -a +setup_merge_ $vg $lv1 +setup_merge_ $vg $lv2 lvchange --addtag this_is_a_test $vg/$(snap_lv_name_ $lv1) lvchange --addtag this_is_a_test $vg/$(snap_lv_name_ $lv2) lvconvert --merge @this_is_a_test -lvs | not grep $(snap_lv_name_ $lv1) -lvs | not grep $(snap_lv_name_ $lv2) -lvremove -f $vg/$lv1 -lvremove -f $vg/$lv2 +lvs $vg >out +not grep $(snap_lv_name_ $lv1) out +not grep $(snap_lv_name_ $lv2) out +lvremove -f $vg/$lv1 $vg/$lv2 # FIXME following tests would need to poll merge progress, via periodic lvs? # Background processes don't lend themselves to lvm testsuite... @@ -130,5 +119,4 @@ # test: multiple onactivate merge - -vgremove -f "$vg" +vgremove -f $vg --- LVM2/test/shell/snapshots-of-mirrors.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/snapshots-of-mirrors.sh 2012/03/16 13:00:06 1.2 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2010 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -40,5 +41,5 @@ # Log conversion (core -> disk) lvconvert --mirrorlog disk $vg/lv -# Clean-up -lvremove -ff $vg +## Clean-up +vgremove -f $vg --- LVM2/test/shell/tags.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/tags.sh 2012/03/16 13:00:06 1.2 @@ -1,4 +1,5 @@ -# Copyright (C) 2008 Red Hat, Inc. All rights reserved. +#!/bin/sh +# Copyright (C) 2008-2012 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions @@ -10,19 +11,18 @@ . lib/test -aux prepare_pvs 5 +aux prepare_pvs 4 # vgcreate with --addtag -vgcreate -c n --addtag firstvg $vg1 $dev1 $dev2 -vgcreate -c n --addtag secondvg $vg2 $dev3 $dev4 -check vg_field $vg1 tags firstvg -check vg_field $vg2 tags secondvg -vgremove -ff $vg1 -vgremove -ff $vg2 +vgcreate -c n --addtag firstvg $vg1 "$dev1" "$dev2" +vgcreate -c n --addtag secondvg $vg2 "$dev3" "$dev4" +check vg_field $vg1 tags "firstvg" +check vg_field $vg2 tags "secondvg" +vgremove -f $vg1 $vg2 # vgchange with --addtag and --deltag -vgcreate -c n $vg1 $dev1 $dev2 -vgcreate -c n $vg2 $dev3 $dev4 +vgcreate -c n $vg1 "$dev1" "$dev2" +vgcreate -c n $vg2 "$dev3" "$dev4" vgchange --addtag firstvgtag1 $vg1 # adding a tag multiple times is not an error vgchange --addtag firstvgtag2 $vg1 @@ -38,21 +38,20 @@ # deleting a tag multiple times is not an error vgchange --deltag firstvgtag2 $vg1 vgchange --deltag firstvgtag1 $vg2 -vgremove -ff $vg1 -vgremove -ff $vg2 +vgremove -f $vg1 $vg2 # lvcreate with --addtag -vgcreate -c n $vg1 $dev1 $dev2 +vgcreate -c n $vg1 "$dev1" "$dev2" lvcreate --addtag firstlvtag1 -l 4 -n $lv1 $vg1 lvcreate --addtag secondlvtag1 -l 4 -n $lv2 $vg1 check lv_field @firstlvtag1 tags "firstlvtag1" not check lv_field @secondlvtag1 tags "firstlvtag1" check lv_field $vg1/$lv2 tags "secondlvtag1" not check lv_field $vg1/$lv1 tags "secondlvtag1" -vgremove -ff $vg1 +vgremove -f $vg1 # lvchange with --addtag and --deltag -vgcreate -c n $vg1 $dev1 $dev2 +vgcreate -c n $vg1 "$dev1" "$dev2" lvcreate -l 4 -n $lv1 $vg1 lvcreate -l 4 -n $lv2 $vg1 lvchange --addtag firstlvtag1 $vg1/$lv1 @@ -64,9 +63,9 @@ lvchange --addtag secondlvtag2 $vg1/$lv2 lvchange --addtag secondlvtag3 $vg1/$lv2 check lv_field $vg1/$lv1 tags "firstlvtag1,firstlvtag2,firstlvtag3" -not $(check lv_field $vg1/$lv1 tags "secondlvtag1") +not check lv_field $vg1/$lv1 tags "secondlvtag1" check lv_field $vg1/$lv2 tags "secondlvtag1,secondlvtag2,secondlvtag3" -not $(check lv_field $vg1/$lv1 tags "secondlvtag1") +not check lv_field $vg1/$lv1 tags "secondlvtag1" # deleting a tag multiple times is not an error lvchange --deltag firstlvtag2 $vg1/$lv1 lvchange --deltag firstlvtag2 $vg1/$lv1 --- LVM2/test/shell/test-partition.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/test-partition.sh 2012/03/16 13:00:06 1.2 @@ -14,17 +14,18 @@ # excercises partition table scanning code path # -which sfdisk || exit 200 LVM_TEST_CONFIG_DEVICES="types = [\"device-mapper\", 142]" . lib/test +which sfdisk || skip + aux prepare_pvs 1 30 -pvs +pvs "$dev1" # create small partition table -echo "1 2" | sfdisk $dev1 +echo "1 2" | sfdisk "$dev1" -pvs +pvs "$dev1" --- LVM2/test/shell/topology-support.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/topology-support.sh 2012/03/16 13:00:06 1.2 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2010 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -8,39 +9,36 @@ # along with this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -which mkfs.ext3 || exit 200 - . lib/test -check_logical_block_size() -{ +which mkfs.ext3 || skip + +check_logical_block_size() { local DEV_=$(cat SCSI_DEBUG_DEV) # Verify logical_block_size - requires Linux >= 2.6.31 - SYSFS_LOGICAL_BLOCK_SIZE=`echo /sys/block/$(basename $DEV_)/queue/logical_block_size` + SYSFS_LOGICAL_BLOCK_SIZE=$(echo /sys/block/$(basename $DEV_)/queue/logical_block_size) if [ -f "$SYSFS_LOGICAL_BLOCK_SIZE" ] ; then - ACTUAL_LOGICAL_BLOCK_SIZE=`cat $SYSFS_LOGICAL_BLOCK_SIZE` + ACTUAL_LOGICAL_BLOCK_SIZE=$(cat $SYSFS_LOGICAL_BLOCK_SIZE) test $ACTUAL_LOGICAL_BLOCK_SIZE = $1 fi } -lvdev_() -{ +lvdev_() { echo "$DM_DEV_DIR/$1/$2" } -test_snapshot_mount() -{ - lvcreate -L 16M -n $lv1 $vg $dev1 +test_snapshot_mount() { + lvcreate -L 16M -n $lv1 $vg "$dev1" mkfs.ext3 $(lvdev_ $vg $lv1) mkdir test_mnt - mount $(lvdev_ $vg $lv1) test_mnt + mount "$(lvdev_ $vg $lv1)" test_mnt lvcreate -L 16M -n $lv2 -s $vg/$lv1 umount test_mnt # mount the origin - mount $(lvdev_ $vg $lv1) test_mnt + mount "$(lvdev_ $vg $lv1)" test_mnt umount test_mnt # mount the snapshot - mount $(lvdev_ $vg $lv2) test_mnt + mount "$(lvdev_ $vg $lv2)" test_mnt umount test_mnt rm -r test_mnt vgchange -an $vg @@ -58,7 +56,7 @@ aux prepare_scsi_debug_dev $DEV_SIZE if [ ! -e /sys/block/$(basename $(cat SCSI_DEBUG_DEV))/alignment_offset ] ; then aux cleanup_scsi_debug_dev - exit 200 + skip fi aux cleanup_scsi_debug_dev --- LVM2/test/shell/unlost-pv.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/unlost-pv.sh 2012/03/16 13:00:06 1.2 @@ -11,28 +11,28 @@ . lib/test +check_() { + vgscan 2>&1 | tee vgscan.out + grep "Inconsistent metadata found for VG $vg" vgscan.out + vgscan 2>&1 | tee vgscan.out + not grep "Inconsistent metadata found for VG $vg" vgscan.out +} + aux prepare_vg 3 lvcreate -m 1 -l 1 -n mirror $vg lvchange -a n $vg/mirror -check() { -vgscan 2>&1 | tee vgscan.out -grep "Inconsistent metadata found for VG $vg" vgscan.out -vgscan 2>&1 | tee vgscan.out -not grep "Inconsistent metadata found for VG $vg" vgscan.out -} - # try orphaning a missing PV (bz45867) -aux disable_dev $dev1 +aux disable_dev "$dev1" vgreduce --removemissing --force $vg -aux enable_dev $dev1 -check +aux enable_dev "$dev1" +check_ # try to just change metadata; we expect the new version (with MISSING_PV set # on the reappeared volume) to be written out to the previously missing PV -vgextend $vg $dev1 -aux disable_dev $dev1 +vgextend $vg "$dev1" +aux disable_dev "$dev1" lvremove $vg/mirror -aux enable_dev $dev1 -check +aux enable_dev "$dev1" +check_ --- LVM2/test/shell/vgcfgbackup-usage.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/vgcfgbackup-usage.sh 2012/03/16 13:00:06 1.2 @@ -16,29 +16,28 @@ # vgcfgbackup handles similar VG names (bz458941) vg1=${PREFIX}vg00 vg2=${PREFIX}vg01 -vgcreate $vg1 $dev1 -vgcreate $vg2 $dev2 +vgcreate $vg1 "$dev1" +vgcreate $vg2 "$dev2" vgcfgbackup -f $TESTDIR/bak-%s >out grep "Volume group \"$vg1\" successfully backed up." out grep "Volume group \"$vg2\" successfully backed up." out -vgremove -ff $vg1 -vgremove -ff $vg2 +vgremove -ff $vg1 $vg2 # vgcfgbackup correctly stores metadata with missing PVs # and vgcfgrestore able to restore them when device reappears -pv1_uuid=$(pvs --noheadings -o pv_uuid $dev1) -pv2_uuid=$(pvs --noheadings -o pv_uuid $dev2) +pv1_uuid=$(get pv_field "$dev1" pv_uuid) +pv2_uuid=$(get pv_field "$dev2" pv_uuid) vgcreate $vg $(cat DEVICES) -lvcreate -l1 -n $lv1 $vg $dev1 -lvcreate -l1 -n $lv2 $vg $dev2 -lvcreate -l1 -n $lv3 $vg $dev3 +lvcreate -l1 -n $lv1 $vg "$dev1" +lvcreate -l1 -n $lv2 $vg "$dev2" +lvcreate -l1 -n $lv3 $vg "$dev3" vgchange -a n $vg -pvcreate -ff -y $dev1 -pvcreate -ff -y $dev2 +pvcreate -ff -y "$dev1" +pvcreate -ff -y "$dev2" vgcfgbackup -f "$(pwd)/backup.$$" $vg sed 's/flags = \[\"MISSING\"\]/flags = \[\]/' "$(pwd)/backup.$$" > "$(pwd)/backup.$$1" -pvcreate -ff -y --norestorefile -u $pv1_uuid $dev1 -pvcreate -ff -y --norestorefile -u $pv2_uuid $dev2 +pvcreate -ff -y --norestorefile -u $pv1_uuid "$dev1" +pvcreate -ff -y --norestorefile -u $pv2_uuid "$dev2" vgcfgrestore -f "$(pwd)/backup.$$1" $vg vgremove -ff $vg @@ -48,7 +47,7 @@ vgscan pvcreate -M1 $(cat DEVICES) vgcreate -M1 -c n $vg $(cat DEVICES) -lvcreate -l1 -n $lv1 $vg $dev1 -pvremove -ff -y $dev2 -not lvcreate -l1 -n $lv1 $vg $dev3 +lvcreate -l1 -n $lv1 $vg "$dev1" +pvremove -ff -y "$dev2" +not lvcreate -l1 -n $lv1 $vg "$dev3" vgcfgbackup -f "$(pwd)/backup.$$" $vg --- LVM2/test/shell/vgchange-maxlv.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/vgchange-maxlv.sh 2012/03/16 13:00:06 1.2 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright (C) 2010 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -14,14 +14,13 @@ aux prepare_dmeventd aux prepare_pvs 3 -vgcreate -c n -l 2 $vg $dev1 $dev2 $dev3 +vgcreate -c n -l 2 $vg $(cat DEVICES) lvcreate -n one -l 1 $vg lvcreate -n two -l 1 $vg not lvcreate -n three -l 1 $vg -vgchange -an $vg vgremove -ff $vg -vgcreate -c n -l 3 $vg $dev1 $dev2 $dev3 +vgcreate -c n -l 3 $vg $(cat DEVICES) lvcreate -n one -l 1 $vg lvcreate -n snap -s -l 1 $vg/one lvcreate -n two -l 1 $vg --- LVM2/test/shell/vgchange-sysinit.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/vgchange-sysinit.sh 2012/03/16 13:00:06 1.2 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright (C) 2011 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -11,32 +11,32 @@ . lib/test -which mkfs.ext3 || exit 200 +which mkfs.ext3 || skip aux prepare_pvs 2 8 -test -e LOCAL_CLVMD && exit 200 +test -e LOCAL_CLVMD && skip var_lock="$DM_DEV_DIR/$vg1/$lv1" # keep in sync with aux configured lockingdir -mount_dir="$TESTDIR/var/lock/lvm" +mount_dir="var/lock/lvm" cleanup_mounted_and_teardown() { - umount $mount_dir || true + umount "$mount_dir" || true aux teardown } -vgcreate -c n $vg1 $dev1 -vgcreate -c n $vg2 $dev2 +vgcreate -c n $vg1 "$dev1" +vgcreate -c n $vg2 "$dev2" lvcreate -l 1 -n $lv2 $vg2 vgchange -an $vg2 lvcreate -n $lv1 -l 100%FREE $vg1 -mkfs.ext3 -b4096 -j $var_lock +mkfs.ext3 -b4096 -j "$var_lock" trap 'cleanup_mounted_and_teardown' EXIT -mount -n -r $var_lock $mount_dir +mount -n -r "$var_lock" "$mount_dir" # locking must fail on read-only filesystem not vgchange -ay $vg2 --- LVM2/test/shell/vgchange-usage.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/vgchange-usage.sh 2012/03/16 13:00:06 1.2 @@ -14,7 +14,7 @@ . lib/test aux prepare_pvs 3 -pvcreate --metadatacopies 0 $dev1 +pvcreate --metadatacopies 0 "$dev1" vgcreate $vg $(cat DEVICES) vgdisplay $vg @@ -34,8 +34,8 @@ vgchange -l 128 $vg aux check vg_field $vg max_lv 128 -lvcreate -l4 -n$lv1 $vg -lvcreate -l4 -n$lv2 $vg +lvcreate -l4 -n $lv1 $vg +lvcreate -l4 -n $lv2 $vg lv_count=$(get vg_field $vg lv_count) not vgchange -l 1 $vg 2>err --- LVM2/test/shell/vgcreate-usage.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/vgcreate-usage.sh 2012/03/16 13:00:06 1.2 @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 2008 Red Hat, Inc. All rights reserved. +# Copyright (C) 2008-2012 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions @@ -14,13 +14,13 @@ . lib/test aux prepare_devs 3 -pvcreate $dev1 $dev2 -pvcreate --metadatacopies 0 $dev3 +pvcreate "$dev1" "$dev2" +pvcreate --metadatacopies 0 "$dev3" vg=${PREFIX}vg #COMM 'vgcreate accepts 8.00m physicalextentsize for VG' -vgcreate -c n $vg --physicalextentsize 8.00m $dev1 $dev2 +vgcreate -c n $vg --physicalextentsize 8.00m "$dev1" "$dev2" check vg_field $vg vg_extent_size 8.00m vgremove $vg # try vgck and to remove it again - should fail (but not segfault) @@ -28,62 +28,62 @@ not vgck $vg #COMM 'vgcreate accepts smaller (128) maxlogicalvolumes for VG' -vgcreate -c n $vg --maxlogicalvolumes 128 $dev1 $dev2 +vgcreate -c n $vg --maxlogicalvolumes 128 "$dev1" "$dev2" check vg_field $vg max_lv 128 vgremove $vg #COMM 'vgcreate accepts smaller (128) maxphysicalvolumes for VG' -vgcreate -c n $vg --maxphysicalvolumes 128 $dev1 $dev2 +vgcreate -c n $vg --maxphysicalvolumes 128 "$dev1" "$dev2" check vg_field $vg max_pv 128 vgremove $vg #COMM 'vgcreate rejects a zero physical extent size' -not vgcreate -c n --physicalextentsize 0 $vg $dev1 $dev2 2>err -grep "^ Physical extent size may not be zero\$" err +not vgcreate -c n --physicalextentsize 0 $vg "$dev1" "$dev2" 2>err +grep "Physical extent size may not be zero" err #COMM 'vgcreate rejects "inherit" allocation policy' -not vgcreate -c n --alloc inherit $vg $dev1 $dev2 2>err -grep "^ Volume Group allocation policy cannot inherit from anything\$" err +not vgcreate -c n --alloc inherit $vg "$dev1" "$dev2" 2>err +grep "Volume Group allocation policy cannot inherit from anything" err #COMM 'vgcreate rejects vgname "."' vginvalid=.; -not vgcreate -c n $vginvalid $dev1 $dev2 2>err -grep "New volume group name \"$vginvalid\" is invalid\$" err +not vgcreate -c n $vginvalid "$dev1" "$dev2" 2>err +grep "New volume group name \"$vginvalid\" is invalid" err #COMM 'vgcreate rejects vgname greater than 128 characters' vginvalid=thisnameisridiculouslylongtotestvalidationcodecheckingmaximumsizethisiswhathappenswhenprogrammersgetboredandorarenotcreativedonttrythisathome -not vgcreate -c n $vginvalid $dev1 $dev2 2>err -grep "New volume group name \"$vginvalid\" is invalid\$" err +not vgcreate -c n $vginvalid "$dev1" "$dev2" 2>err +grep "New volume group name \"$vginvalid\" is invalid" err #COMM 'vgcreate rejects already existing vgname "/tmp/$vg"' #touch /tmp/$vg -#not vgcreate $vg $dev1 $dev2 2>err +#not vgcreate $vg "$dev1" "$dev2" 2>err #grep "New volume group name \"$vg\" is invalid\$" err #COMM "vgcreate rejects repeated invocation (run 2 times) (bz178216)" -vgcreate -c n $vg $dev1 $dev2 -not vgcreate -c n $vg $dev1 $dev2 +vgcreate -c n $vg "$dev1" "$dev2" +not vgcreate -c n $vg "$dev1" "$dev2" vgremove -ff $vg #COMM 'vgcreate rejects MaxLogicalVolumes > 255' -not vgcreate -c n --metadatatype 1 --maxlogicalvolumes 1024 $vg $dev1 $dev2 2>err -grep "^ Number of volumes may not exceed 255\$" err +not vgcreate -c n --metadatatype 1 --maxlogicalvolumes 1024 $vg "$dev1" "$dev2" 2>err +grep "Number of volumes may not exceed 255" err #COMM "vgcreate fails when the only pv has --metadatacopies 0" -not vgcreate -c n $vg $dev3 +not vgcreate -c n $vg "$dev3" # Test default (4MB) vg_extent_size as well as limits of extent_size -not vgcreate -c n --physicalextentsize 0k $vg $dev1 $dev2 -vgcreate -c n --physicalextentsize 1k $vg $dev1 $dev2 +not vgcreate -c n --physicalextentsize 0k $vg "$dev1" "$dev2" +vgcreate -c n --physicalextentsize 1k $vg "$dev1" "$dev2" check vg_field $vg vg_extent_size 1.00k vgremove -ff $vg -not vgcreate -c n --physicalextentsize 3K $vg $dev1 $dev2 -not vgcreate -c n --physicalextentsize 1024t $vg $dev1 $dev2 -#not vgcreate --physicalextentsize 1T $vg $dev1 $dev2 +not vgcreate -c n --physicalextentsize 3K $vg "$dev1" "$dev2" +not vgcreate -c n --physicalextentsize 1024t $vg "$dev1" "$dev2" +#not vgcreate --physicalextentsize 1T $vg "$dev1" "$dev2" # FIXME: vgcreate allows physicalextentsize larger than pv size! # Test default max_lv, max_pv, extent_size, alloc_policy, clustered -vgcreate -c n $vg $dev1 $dev2 +vgcreate -c n $vg "$dev1" "$dev2" check vg_field $vg vg_extent_size 4.00m check vg_field $vg max_lv 0 check vg_field $vg max_pv 0 @@ -93,71 +93,71 @@ # Implicit pvcreate tests, test pvcreate options on vgcreate # --force, --yes, --metadata{size|copies|type}, --zero # --dataalignment[offset] -pvremove $dev1 $dev2 -vgcreate -c n --force --yes --zero y $vg $dev1 $dev2 +pvremove "$dev1" "$dev2" +vgcreate -c n --force --yes --zero y $vg "$dev1" "$dev2" vgremove -f $vg -pvremove -f $dev1 +pvremove -f "$dev1" for i in 0 1 2 3 do # vgcreate (lvm2) succeeds writing LVM label at sector $i - vgcreate -c n --labelsector $i $vg $dev1 - dd if=$dev1 bs=512 skip=$i count=1 2>/dev/null | strings | grep LABELONE >/dev/null + vgcreate -c n --labelsector $i $vg "$dev1" + dd if="$dev1" bs=512 skip=$i count=1 2>/dev/null | strings | grep LABELONE >/dev/null vgremove -f $vg - pvremove -f $dev1 + pvremove -f "$dev1" done # pvmetadatacopies for i in 1 2 do - vgcreate -c n --pvmetadatacopies $i $vg $dev1 - check pv_field $dev1 pv_mda_count $i + vgcreate -c n --pvmetadatacopies $i $vg "$dev1" + check pv_field "$dev1" pv_mda_count $i vgremove -f $vg - pvremove -f $dev1 + pvremove -f "$dev1" done -not vgcreate -c n --pvmetadatacopies 0 $vg $dev1 -pvcreate --metadatacopies 1 $dev2 -vgcreate -c n --pvmetadatacopies 0 $vg $dev1 $dev2 -check pv_field $dev1 pv_mda_count 0 -check pv_field $dev2 pv_mda_count 1 +not vgcreate -c n --pvmetadatacopies 0 $vg "$dev1" +pvcreate --metadatacopies 1 "$dev2" +vgcreate -c n --pvmetadatacopies 0 $vg "$dev1" "$dev2" +check pv_field "$dev1" pv_mda_count 0 +check pv_field "$dev2" pv_mda_count 1 vgremove -f $vg -pvremove -f $dev1 +pvremove -f "$dev1" # metadatasize, dataalignment, dataalignmentoffset #COMM 'pvcreate sets data offset next to mda area' -vgcreate -c n --metadatasize 100k --dataalignment 100k $vg $dev1 -check pv_field $dev1 pe_start 200.00k +vgcreate -c n --metadatasize 100k --dataalignment 100k $vg "$dev1" +check pv_field "$dev1" pe_start 200.00k vgremove -f $vg -pvremove -f $dev1 +pvremove -f "$dev1" # data area is aligned to 1M by default, # data area start is shifted by the specified alignment_offset -pv_align="1052160B" # 1048576 + (7*512) -vgcreate -c n --metadatasize 128k --dataalignmentoffset 7s $vg $dev1 -check pv_field $dev1 pe_start $pv_align "--units b" +pv_align=1052160 # 1048576 + (7*512) +vgcreate -c n --metadatasize 128k --dataalignmentoffset 7s $vg "$dev1" +check pv_field "$dev1" pe_start ${pv_align}B --units b vgremove -f $vg -pvremove -f $dev1 +pvremove -f "$dev1" # metadatatype for i in 1 2 do - vgcreate -c n -M $i $vg $dev1 + vgcreate -c n -M $i $vg "$dev1" check vg_field $vg vg_fmt lvm$i vgremove -f $vg - pvremove -f $dev1 + pvremove -f "$dev1" done # vgcreate fails if pv belongs to existing vg -vgcreate -c n $vg1 $dev1 $dev2 -not vgcreate $vg2 $dev2 +vgcreate -c n $vg1 "$dev1" "$dev2" +not vgcreate $vg2 "$dev2" vgremove -f $vg1 -pvremove -f $dev1 $dev2 +pvremove -f "$dev1" "$dev2" # all PVs exist in the VG after created -pvcreate $dev1 -vgcreate -c n $vg1 $dev1 $dev2 $dev3 -check pv_field $dev1 vg_name $vg1 -check pv_field $dev2 vg_name $vg1 -check pv_field $dev3 vg_name $vg1 +pvcreate "$dev1" +vgcreate -c n $vg1 "$dev1" "$dev2" "$dev3" +check pv_field "$dev1" vg_name $vg1 +check pv_field "$dev2" vg_name $vg1 +check pv_field "$dev3" vg_name $vg1 vgremove -f $vg1 -pvremove -f $dev1 $dev2 $dev3 +pvremove -f "$dev1" "$dev2" "$dev3" --- LVM2/test/shell/vgextend-restoremissing.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/vgextend-restoremissing.sh 2012/03/16 13:00:06 1.2 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright (C) 2010 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -11,20 +11,20 @@ . lib/test - aux prepare_vg 3 + lvcreate -m 1 -l 1 -n mirror $vg lvchange -a n $vg/mirror -lvcreate -l 1 -n lv1 $vg $dev1 +lvcreate -l 1 -n lv1 $vg "$dev1" # try to just change metadata; we expect the new version (with MISSING_PV set # on the reappeared volume) to be written out to the previously missing PV -aux disable_dev $dev1 +aux disable_dev "$dev1" lvremove $vg/mirror -aux enable_dev $dev1 +aux enable_dev "$dev1" not vgck $vg 2>&1 | tee log grep "missing 1 physical volume" log not lvcreate -m 1 -l 1 -n mirror $vg # write operations fail -vgextend --restore $vg $dev1 # restore the missing device +vgextend --restore $vg "$dev1" # restore the missing device vgck $vg lvcreate -m 1 -l 1 -n mirror $vg --- LVM2/test/shell/vgextend-usage.sh 2011/11/21 00:15:46 1.1 +++ LVM2/test/shell/vgextend-usage.sh 2012/03/16 13:00:06 1.2 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -20,100 +21,100 @@ do # Explicit pvcreate -pvcreate -M$mdatype $dev1 $dev2 $dev3 $dev4 $dev5 -vgcreate -M$mdatype $vg1 $dev1 $dev2 -vgextend $vg1 $dev3 $dev4 $dev5 +pvcreate -M$mdatype "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" +vgcreate -M$mdatype $vg1 "$dev1" "$dev2" +vgextend $vg1 "$dev3" "$dev4" "$dev5" vgremove -ff $vg1 # Implicit pvcreate -pvremove $dev1 $dev2 $dev3 $dev4 $dev5 -vgcreate -M$mdatype $vg1 $dev1 $dev2 -vgextend -M$mdatype $vg1 $dev3 $dev4 $dev5 +pvremove "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" +vgcreate -M$mdatype $vg1 "$dev1" "$dev2" +vgextend -M$mdatype $vg1 "$dev3" "$dev4" "$dev5" vgremove -ff $vg1 -pvremove $dev1 $dev2 $dev3 $dev4 $dev5 +pvremove "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" done # Implicit pvcreate tests, test pvcreate options on vgcreate # --force, --yes, --metadata{size|copies|type}, --zero # --dataalignment[offset] -vgcreate $vg $dev2 -vgextend --force --yes --zero y $vg $dev1 -vgreduce $vg $dev1 -pvremove -f $dev1 +vgcreate $vg "$dev2" +vgextend --force --yes --zero y $vg "$dev1" +vgreduce $vg "$dev1" +pvremove -f "$dev1" for i in 0 1 2 3 do # vgcreate (lvm2) succeeds writing LVM label at sector $i - vgextend --labelsector $i $vg $dev1 - dd if=$dev1 bs=512 skip=$i count=1 2>/dev/null | strings | grep LABELONE >/dev/null - vgreduce $vg $dev1 - pvremove -f $dev1 + vgextend --labelsector $i $vg "$dev1" + dd if="$dev1" bs=512 skip=$i count=1 2>/dev/null | strings | grep LABELONE >/dev/null + vgreduce $vg "$dev1" + pvremove -f "$dev1" done # pvmetadatacopies for i in 0 1 2 do - vgextend --pvmetadatacopies $i $vg $dev1 - check pv_field $dev1 pv_mda_count $i - vgreduce $vg $dev1 - pvremove -f $dev1 + vgextend --pvmetadatacopies $i $vg "$dev1" + check pv_field "$dev1" pv_mda_count $i + vgreduce $vg "$dev1" + pvremove -f "$dev1" done # metadatasize, dataalignment, dataalignmentoffset #COMM 'pvcreate sets data offset next to mda area' -vgextend --metadatasize 100k --dataalignment 100k $vg $dev1 -check pv_field $dev1 pe_start 200.00k -vgreduce $vg $dev1 -pvremove -f $dev1 +vgextend --metadatasize 100k --dataalignment 100k $vg "$dev1" +check pv_field "$dev1" pe_start 200.00k +vgreduce $vg "$dev1" +pvremove -f "$dev1" # data area is aligned to 1M by default, # data area start is shifted by the specified alignment_offset -pv_align="1052160B" # 1048576 + (7*512) -vgextend --metadatasize 128k --dataalignmentoffset 7s $vg $dev1 -check pv_field $dev1 pe_start $pv_align "--units b" +pv_align=1052160B # 1048576 + (7*512) +vgextend --metadatasize 128k --dataalignmentoffset 7s $vg "$dev1" +check pv_field "$dev1" pe_start $pv_align --units b vgremove -f $vg -pvremove -f $dev1 +pvremove -f "$dev1" # vgextend fails if pv belongs to existing vg -vgcreate $vg1 $dev1 $dev3 -vgcreate $vg2 $dev2 -not vgextend $vg2 $dev3 +vgcreate $vg1 "$dev1" "$dev3" +vgcreate $vg2 "$dev2" +not vgextend $vg2 "$dev3" vgremove -f $vg1 vgremove -f $vg2 -pvremove -f $dev1 $dev2 $dev3 +pvremove -f "$dev1" "$dev2" "$dev3" #vgextend fails if vg is not resizeable -vgcreate $vg1 $dev1 $dev2 +vgcreate $vg1 "$dev1" "$dev2" vgchange --resizeable n $vg1 -not vgextend $vg1 $dev3 +not vgextend $vg1 "$dev3" vgremove -f $vg1 -pvremove -f $dev1 $dev2 +pvremove -f "$dev1" "$dev2" # all PVs exist in the VG after extended -pvcreate $dev1 -vgcreate $vg1 $dev2 -vgextend $vg1 $dev1 $dev3 -check pv_field $dev1 vg_name $vg1 -check pv_field $dev2 vg_name $vg1 -check pv_field $dev3 vg_name $vg1 +pvcreate "$dev1" +vgcreate $vg1 "$dev2" +vgextend $vg1 "$dev1" "$dev3" +check pv_field "$dev1" vg_name $vg1 +check pv_field "$dev2" vg_name $vg1 +check pv_field "$dev3" vg_name $vg1 vgremove -f $vg1 -pvremove -f $dev1 $dev2 $dev3 +pvremove -f "$dev1" "$dev2" "$dev3" echo test vgextend --metadataignore for mdacp in 1 2; do for ignore in y n; do echo vgextend --metadataignore has proper mda_count and mda_used_count - vgcreate $vg $dev3 - vgextend --metadataignore $ignore --pvmetadatacopies $mdacp $vg $dev1 $dev2 - check pv_field $dev1 pv_mda_count $mdacp - check pv_field $dev2 pv_mda_count $mdacp + vgcreate $vg "$dev3" + vgextend --metadataignore $ignore --pvmetadatacopies $mdacp $vg "$dev1" "$dev2" + check pv_field "$dev1" pv_mda_count $mdacp + check pv_field "$dev2" pv_mda_count $mdacp if [ $ignore = y ]; then - check pv_field $dev1 pv_mda_used_count 0 - check pv_field $dev2 pv_mda_used_count 0 + check pv_field "$dev1" pv_mda_used_count 0 + check pv_field "$dev2" pv_mda_used_count 0 else - check pv_field $dev1 pv_mda_used_count $mdacp - check pv_field $dev2 pv_mda_used_count $mdacp + check pv_field "$dev1" pv_mda_used_count $mdacp + check pv_field "$dev2" pv_mda_used_count $mdacp fi echo vg has proper vg_mda_count and vg_mda_used_count check vg_field $vg vg_mda_count $(($mdacp * 2 + 1)) @@ -124,6 +125,6 @@ fi check vg_field $vg vg_mda_copies unmanaged vgremove $vg - pvremove -ff $dev1 $dev2 $dev3 + pvremove -ff "$dev1" "$dev2" "$dev3" done done --- LVM2/test/shell/vgimportclone.sh 2012/02/23 23:58:42 1.3 +++ LVM2/test/shell/vgimportclone.sh 2012/03/16 13:00:06 1.4 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2010-2011 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -12,26 +13,26 @@ aux prepare_devs 2 -vgcreate -c n --metadatasize 128k $vg1 $dev1 +vgcreate -c n --metadatasize 128k $vg1 "$dev1" lvcreate -l100%FREE -n $lv1 $vg1 # Clone the LUN -dd if=$dev1 of=$dev2 bs=256K count=1 -aux notify_lvmetad $dev2 +dd if="$dev1" of="$dev2" bs=256K count=1 +aux notify_lvmetad "$dev2" # Verify pvs works on each device to give us vgname -check pv_field $dev1 vg_name $vg1 -check pv_field $dev2 vg_name $vg1 +check pv_field "$dev1" vg_name $vg1 +check pv_field "$dev2" vg_name $vg1 # Import the cloned PV to a new VG -vgimportclone --basevgname $vg2 $dev2 +vgimportclone --basevgname $vg2 "$dev2" # We need to re-scan *both* $dev1 and $dev2 since a PV, as far as lvmetad is # concerned, can only live on a single device. With the last pvscan, we told it # that PV from $dev1 now lives on $dev2, but in fact this is not true anymore, # since we wrote a different PV over $dev2. -aux notify_lvmetad $dev2 -aux notify_lvmetad $dev1 +aux notify_lvmetad "$dev2" +aux notify_lvmetad "$dev1" # Verify we can activate / deactivate the LV from both VGs lvchange -ay $vg1/$lv1 $vg2/$lv1 --- LVM2/test/shell/vgmerge-operation.sh 2011/11/21 00:15:47 1.1 +++ LVM2/test/shell/vgmerge-operation.sh 2012/03/16 13:00:06 1.2 @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 2007-2008 Red Hat, Inc. All rights reserved. +# Copyright (C) 2007-2012 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions @@ -16,57 +16,57 @@ aux prepare_pvs 4 64 # 'vgmerge succeeds with single linear LV in source VG' -vgcreate -c n $vg1 $dev1 $dev2 -vgcreate -c n $vg2 $dev3 $dev4 -lvcreate -l 4 -n $lv1 $vg1 $dev1 -vgchange -an $vg1 -check pvlv_counts $vg1 2 1 0 -check pvlv_counts $vg2 2 0 0 -vgmerge $vg2 $vg1 -check pvlv_counts $vg2 4 1 0 +vgcreate -c n $vg1 "$dev1" "$dev2" +vgcreate -c n $vg2 "$dev3" "$dev4" +lvcreate -l 4 -n $lv1 $vg1 "$dev1" +vgchange -an $vg1 +check pvlv_counts $vg1 2 1 0 +check pvlv_counts $vg2 2 0 0 +vgmerge $vg2 $vg1 +check pvlv_counts $vg2 4 1 0 vgremove -f $vg2 # 'vgmerge succeeds with single linear LV in source and destination VG' -vgcreate -c n $vg1 $dev1 $dev2 -vgcreate -c n $vg2 $dev3 $dev4 -lvcreate -l 4 -n $lv1 $vg1 -lvcreate -l 4 -n $lv2 $vg2 -vgchange -an $vg1 -vgchange -an $vg2 -check pvlv_counts $vg1 2 1 0 -check pvlv_counts $vg2 2 1 0 -vgmerge $vg2 $vg1 -check pvlv_counts $vg2 4 2 0 +vgcreate -c n $vg1 "$dev1" "$dev2" +vgcreate -c n $vg2 "$dev3" "$dev4" +lvcreate -l 4 -n $lv1 $vg1 +lvcreate -l 4 -n $lv2 $vg2 +vgchange -an $vg1 +vgchange -an $vg2 +check pvlv_counts $vg1 2 1 0 +check pvlv_counts $vg2 2 1 0 +vgmerge $vg2 $vg1 +check pvlv_counts $vg2 4 2 0 vgremove -f $vg2 # 'vgmerge succeeds with linear LV + snapshots in source VG' -vgcreate -c n $vg1 $dev1 $dev2 -vgcreate -c n $vg2 $dev3 $dev4 -lvcreate -l 16 -n $lv1 $vg1 -lvcreate -l 4 -s -n $lv2 $vg1/$lv1 -vgchange -an $vg1 -check pvlv_counts $vg1 2 2 1 -check pvlv_counts $vg2 2 0 0 -vgmerge $vg2 $vg1 -check pvlv_counts $vg2 4 2 1 -lvremove -f $vg2/$lv2 +vgcreate -c n $vg1 "$dev1" "$dev2" +vgcreate -c n $vg2 "$dev3" "$dev4" +lvcreate -l 16 -n $lv1 $vg1 +lvcreate -l 4 -s -n $lv2 $vg1/$lv1 +vgchange -an $vg1 +check pvlv_counts $vg1 2 2 1 +check pvlv_counts $vg2 2 0 0 +vgmerge $vg2 $vg1 +check pvlv_counts $vg2 4 2 1 +lvremove -f $vg2/$lv2 vgremove -f $vg2 # 'vgmerge succeeds with mirrored LV in source VG' -vgcreate -c n $vg1 $dev1 $dev2 $dev3 -vgcreate -c n $vg2 $dev4 -lvcreate -l 4 -n $lv1 -m1 $vg1 -vgchange -an $vg1 -check pvlv_counts $vg1 3 1 0 -check pvlv_counts $vg2 1 0 0 -vgmerge $vg2 $vg1 -check pvlv_counts $vg2 4 1 0 -lvremove -f $vg2/$lv1 +vgcreate -c n $vg1 "$dev1" "$dev2" "$dev3" +vgcreate -c n $vg2 "$dev4" +lvcreate -l 4 -n $lv1 -m1 $vg1 +vgchange -an $vg1 +check pvlv_counts $vg1 3 1 0 +check pvlv_counts $vg2 1 0 0 +vgmerge $vg2 $vg1 +check pvlv_counts $vg2 4 1 0 +lvremove -f $vg2/$lv1 vgremove -f $vg2 # 'vgmerge rejects LV name collision' -vgcreate -c n $vg1 $dev1 $dev2 -vgcreate -c n $vg2 $dev3 $dev4 +vgcreate -c n $vg1 "$dev1" "$dev2" +vgcreate -c n $vg2 "$dev3" "$dev4" lvcreate -l 4 -n $lv1 $vg1 lvcreate -l 4 -n $lv1 $vg2 vgchange -an $vg1 @@ -76,6 +76,4 @@ grep "Duplicate logical volume name \"$lv1\" in \"$vg2\" and \"$vg1" err check pvlv_counts $vg1 2 1 0 check pvlv_counts $vg2 2 1 0 -vgremove -f $vg1 -vgremove -f $vg2 - +vgremove -f $vg1 $vg2 --- LVM2/test/shell/vgmerge-usage.sh 2011/11/21 00:15:47 1.1 +++ LVM2/test/shell/vgmerge-usage.sh 2012/03/16 13:00:06 1.2 @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 2008 Red Hat, Inc. All rights reserved. +# Copyright (C) 2008-2011 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions @@ -17,51 +17,51 @@ # 'vgmerge normal operation' # ensure ordering does not matter -vgcreate $vg1 $dev1 $dev2 -vgcreate $vg2 $dev3 $dev4 -vgmerge $vg1 $vg2 +vgcreate $vg1 "$dev1" "$dev2" +vgcreate $vg2 "$dev3" "$dev4" +vgmerge $vg1 $vg2 vgremove $vg1 -vgcreate -c n $vg2 $dev1 $dev2 -vgcreate -c n $vg1 $dev3 $dev4 +vgcreate -c n $vg2 "$dev1" "$dev2" +vgcreate -c n $vg1 "$dev3" "$dev4" vgmerge $vg2 $vg1 vgremove $vg2 # 'vgmerge rejects duplicate vg name' -vgcreate $vg1 $dev1 $dev2 -vgcreate $vg2 $dev3 $dev4 +vgcreate $vg1 "$dev1" "$dev2" +vgcreate $vg2 "$dev3" "$dev4" not vgmerge $vg1 $vg1 2>err -grep "^ Duplicate volume group name \"$vg1\"\$" err +grep "Duplicate volume group name \"$vg1\"\$" err vgremove $vg1 $vg2 # 'vgmerge rejects vgs with incompatible extent_size' -vgcreate --physicalextentsize 4M $vg1 $dev1 $dev2 -vgcreate --physicalextentsize 8M $vg2 $dev3 $dev4 +vgcreate --physicalextentsize 4M $vg1 "$dev1" "$dev2" +vgcreate --physicalextentsize 8M $vg2 "$dev3" "$dev4" not vgmerge $vg1 $vg2 2>err -grep "^ Extent sizes differ" err +grep "Extent sizes differ" err vgremove $vg1 $vg2 # 'vgmerge rejects vgmerge because max_pv is exceeded' -vgcreate --maxphysicalvolumes 2 $vg1 $dev1 $dev2 -vgcreate --maxphysicalvolumes 2 $vg2 $dev3 $dev4 +vgcreate --maxphysicalvolumes 2 $vg1 "$dev1" "$dev2" +vgcreate --maxphysicalvolumes 2 $vg2 "$dev3" "$dev4" not vgmerge $vg1 $vg2 2>err -grep "^ Maximum number of physical volumes (2) exceeded" err +grep "Maximum number of physical volumes (2) exceeded" err vgremove $vg1 $vg2 # 'vgmerge rejects vg with active lv' -vgcreate $vg1 $dev1 $dev2 -vgcreate $vg2 $dev3 $dev4 -lvcreate -l 4 -n lv1 $vg2 +vgcreate $vg1 "$dev1" "$dev2" +vgcreate $vg2 "$dev3" "$dev4" +lvcreate -l 4 -n lv1 $vg2 not vgmerge $vg1 $vg2 2>err -grep "^ Logical volumes in \"$vg2\" must be inactive\$" err +grep "Logical volumes in \"$vg2\" must be inactive" err vgremove -f $vg1 $vg2 -# 'vgmerge rejects vgmerge because max_lv is exceeded' -vgcreate --maxlogicalvolumes 2 $vg1 $dev1 $dev2 -vgcreate --maxlogicalvolumes 2 $vg2 $dev3 $dev4 -lvcreate -l 4 -n lv1 $vg1 -lvcreate -l 4 -n lv2 $vg1 -lvcreate -l 4 -n lv3 $vg2 +# 'vgmerge rejects vgmerge because max_lv is exceeded' +vgcreate --maxlogicalvolumes 2 $vg1 "$dev1" "$dev2" +vgcreate --maxlogicalvolumes 2 $vg2 "$dev3" "$dev4" +lvcreate -l 4 -n lv1 $vg1 +lvcreate -l 4 -n lv2 $vg1 +lvcreate -l 4 -n lv3 $vg2 vgchange -an $vg1 $vg2 not vgmerge $vg1 $vg2 2>err -grep "^ Maximum number of logical volumes (2) exceeded" err +grep "Maximum number of logical volumes (2) exceeded" err vgremove -f $vg1 $vg2 --- LVM2/test/shell/vgreduce-removemissing-snapshot.sh 2011/11/21 00:15:47 1.1 +++ LVM2/test/shell/vgreduce-removemissing-snapshot.sh 2012/03/16 13:00:06 1.2 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2011 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -11,16 +12,16 @@ . lib/test aux prepare_vg 5 -lvcreate -m 3 --ig -L 2M -n 4way $vg $dev1 $dev2 $dev3 $dev4 $dev5:0 + +lvcreate -m 3 --ig -L 2M -n 4way $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5":0 lvcreate -s $vg/4way -L 2M -n snap -lvcreate -i 2 -L 2M $vg $dev1 $dev2 -n stripe +lvcreate -i 2 -L 2M $vg "$dev1" "$dev2" -n stripe -aux disable_dev $dev2 $dev4 +aux disable_dev "$dev2" "$dev4" echo n | lvconvert --repair $vg/4way -aux enable_dev $dev2 $dev4 +aux enable_dev "$dev2" "$dev4" #not vgreduce --removemissing $vg -vgreduce -v --removemissing --force $vg # $dev2 $dev4 -lvs -a -o +devices | not grep unknown -lvs -a -o +devices -check mirror $vg 4way $dev5 - +vgreduce -v --removemissing --force $vg # "$dev2" "$dev4" +lvs -a -o +devices $vg | not grep unknown +lvs -a -o +devices $vg +check mirror $vg 4way "$dev5" --- LVM2/test/shell/vgreduce-usage.sh 2011/11/21 00:15:47 1.1 +++ LVM2/test/shell/vgreduce-usage.sh 2012/03/16 13:00:06 1.2 @@ -16,72 +16,74 @@ for mdatype in 1 2 do # setup PVs - pvcreate -M$mdatype $dev1 $dev2 + pvcreate -M$mdatype "$dev1" "$dev2" # (lvm$mdatype) vgreduce removes only the specified pv from vg (bz427382)" ' - vgcreate -c n -M$mdatype $vg1 $dev1 $dev2 - vgreduce $vg1 $dev1 - check pv_field $dev2 vg_name $vg1 + vgcreate -c n -M$mdatype $vg1 "$dev1" "$dev2" + vgreduce $vg1 "$dev1" + check pv_field "$dev2" vg_name $vg1 vgremove -f $vg1 # (lvm$mdatype) vgreduce rejects removing the last pv (--all) - vgcreate -c n -M$mdatype $vg1 $dev1 $dev2 + vgcreate -c n -M$mdatype $vg1 "$dev1" "$dev2" not vgreduce --all $vg1 vgremove -f $vg1 # (lvm$mdatype) vgreduce rejects removing the last pv - vgcreate -c n -M$mdatype $vg1 $dev1 $dev2 - not vgreduce $vg1 $dev1 $dev2 + vgcreate -c n -M$mdatype $vg1 "$dev1" "$dev2" + not vgreduce $vg1 "$dev1" "$dev2" vgremove -f $vg1 - pvremove -ff $dev1 $dev2 + pvremove -ff "$dev1" "$dev2" done mdatype=2 # we only expect the following to work for lvm2 metadata # (lvm$mdatype) setup PVs (--metadatacopies 0) -pvcreate -M$mdatype $dev1 $dev2 -pvcreate --metadatacopies 0 -M$mdatype $dev3 $dev4 +pvcreate -M$mdatype "$dev1" "$dev2" +pvcreate --metadatacopies 0 -M$mdatype "$dev3" "$dev4" # (lvm$mdatype) vgreduce rejects removing pv with the last mda copy (bz247448) -vgcreate -c n -M$mdatype $vg1 $dev1 $dev3 -not vgreduce $vg1 $dev1 +vgcreate -c n -M$mdatype $vg1 "$dev1" "$dev3" +not vgreduce $vg1 "$dev1" vgremove -f $vg1 #COMM "(lvm$mdatype) vgreduce --removemissing --force repares to linear (bz221921)" # (lvm$mdatype) setup: create mirror & damage one pv -vgcreate -c n -M$mdatype $vg1 $dev1 $dev2 $dev3 +vgcreate -c n -M$mdatype $vg1 "$dev1" "$dev2" "$dev3" lvcreate -n $lv1 -m1 -l 4 $vg1 -lvcreate -n $lv2 -l 4 $vg1 $dev2 -lvcreate -n $lv3 -l 4 $vg1 $dev3 +lvcreate -n $lv2 -l 4 $vg1 "$dev2" +lvcreate -n $lv3 -l 4 $vg1 "$dev3" vgchange -an $vg1 -aux disable_dev $dev1 +aux disable_dev "$dev1" # (lvm$mdatype) vgreduce --removemissing --force repares to linear vgreduce --removemissing --force $vg1 check lv_field $vg1/$lv1 segtype linear check pvlv_counts $vg1 2 3 0 # cleanup -aux enable_dev $dev1 +aux enable_dev "$dev1" pvscan -vgremove -ff $vg1 +vgremove -f $vg1 not vgs $vg1 # just double-check it's really gone #COMM "vgreduce rejects --removemissing --mirrorsonly --force when nonmirror lv lost too" # (lvm$mdatype) setup: create mirror + linear lvs vgcreate -c n -M$mdatype $vg1 $(cat DEVICES) lvcreate -n $lv2 -l 4 $vg1 -lvcreate -m1 -n $lv1 -l 4 $vg1 $dev1 $dev2 $dev3 -lvcreate -n $lv3 -l 4 $vg1 $dev3 -pvs --segments -o +lv_name # for record only +lvcreate -m1 -n $lv1 -l 4 $vg1 "$dev1" "$dev2" "$dev3" +lvcreate -n $lv3 -l 4 $vg1 "$dev3" +pvs --segments -o +lv_name $(cat DEVICES) # for record only # (lvm$mdatype) setup: damage one pv -vgchange -an $vg1 -aux disable_dev $dev1 -#pvcreate -ff -y $dev1 +vgchange -an $vg1 +aux disable_dev "$dev1" +#pvcreate -ff -y "$dev1" # vgreduce rejects --removemissing --mirrorsonly --force when nonmirror lv lost too -not vgreduce -c n --removemissing --mirrorsonly --force $vg1 - -aux enable_dev $dev1 - -pvs -P # for record -lvs -P # for record -vgs -P # for record +#not vgreduce -c n --removemissing --mirrorsonly --force $vg1 +# CHECKME - command above was rejected becuase of '-c n' +vgreduce --removemissing --mirrorsonly --force $vg1 + +aux enable_dev "$dev1" + +pvs -P $(cat DEVICES) # for record +lvs -P $vg1 # for record +vgs -P $vg1 # for record --- LVM2/test/shell/vgrename-usage.sh 2011/11/21 00:15:47 1.1 +++ LVM2/test/shell/vgrename-usage.sh 2012/03/16 13:00:06 1.2 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -11,13 +12,13 @@ . lib/test aux prepare_devs 4 -pvcreate $dev1 $dev2 -pvcreate --metadatacopies 0 $dev3 $dev4 +pvcreate "$dev1" "$dev2" +pvcreate --metadatacopies 0 "$dev3" "$dev4" # vgrename normal operation - rename vg1 to vg2 # vgrename normal operation - rename vg2 to vg1 # ensure name ordering does not matter -vgcreate $vg1 $dev1 $dev2 +vgcreate $vg1 "$dev1" "$dev2" vgrename $vg1 $vg2 check vg_field $vg2 vg_name $vg2 vgrename $vg2 $vg1 @@ -25,7 +26,7 @@ vgremove $vg1 # vgrename by uuid (bz231187) -vgcreate $vg1 $dev1 $dev3 +vgcreate $vg1 "$dev1" "$dev3" UUID=$(vgs --noheading -o vg_uuid $vg1) check vg_field $vg1 vg_uuid $UUID vgrename $UUID $vg2 @@ -33,9 +34,7 @@ vgremove $vg2 # vgrename fails - new vg already exists -vgcreate $vg1 $dev1 -vgcreate $vg2 $dev2 +vgcreate $vg1 "$dev1" +vgcreate $vg2 "$dev2" not vgrename $vg1 $vg2 -vgremove $vg1 -vgremove $vg2 - +vgremove $vg1 $vg2 --- LVM2/test/shell/vgsplit-operation.sh 2012/03/04 16:02:19 1.2 +++ LVM2/test/shell/vgsplit-operation.sh 2012/03/16 13:00:06 1.3 @@ -13,7 +13,7 @@ . lib/test -COMM() { +COMM() { LAST_TEST="$@" } @@ -37,74 +37,74 @@ for j in PV LV do COMM "vgsplit correctly splits single linear LV into $i VG ($j args)" - create_vg_ $vg1 $dev1 $dev2 - test $i = existing && create_vg_ $vg2 $dev3 $dev4 + create_vg_ $vg1 "$dev1" "$dev2" + test $i = existing && create_vg_ $vg2 "$dev3" "$dev4" - lvcreate -l 4 -n $lv1 $vg1 $dev1 - vgchange -an $vg1 + lvcreate -l 4 -n $lv1 $vg1 "$dev1" + vgchange -an $vg1 if [ $j = PV ]; then - vgsplit $vg1 $vg2 $dev1 + vgsplit $vg1 $vg2 "$dev1" else vgsplit -n $lv1 $vg1 $vg2 - fi - check pvlv_counts $vg1 1 0 0 + fi + check pvlv_counts $vg1 1 0 0 if [ $i = existing ]; then check pvlv_counts $vg2 3 1 0 else check pvlv_counts $vg2 1 1 0 - fi - lvremove -f $vg2/$lv1 + fi + lvremove -f $vg2/$lv1 vgremove -f $vg2 $vg1 COMM "vgsplit correctly splits single striped LV into $i VG ($j args)" - create_vg_ $vg1 $dev1 $dev2 - test $i = existing && create_vg_ $vg2 $dev3 $dev4 + create_vg_ $vg1 "$dev1" "$dev2" + test $i = existing && create_vg_ $vg2 "$dev3" "$dev4" - lvcreate -l 4 -i 2 -n $lv1 $vg1 $dev1 $dev2 - vgchange -an $vg1 + lvcreate -l 4 -i 2 -n $lv1 $vg1 "$dev1" "$dev2" + vgchange -an $vg1 if [ $j = PV ]; then - vgsplit $vg1 $vg2 $dev1 $dev2 + vgsplit $vg1 $vg2 "$dev1" "$dev2" else vgsplit -n $lv1 $vg1 $vg2 - fi + fi if [ $i = existing ]; then check pvlv_counts $vg2 4 1 0 else check pvlv_counts $vg2 2 1 0 - fi - lvremove -f $vg2/$lv1 + fi + lvremove -f $vg2/$lv1 vgremove -f $vg2 -COMM "vgsplit correctly splits mirror LV into $i VG ($j args)" - create_vg_ $vg1 $dev1 $dev2 $dev3 - test $i = existing && create_vg_ $vg2 $dev4 +COMM "vgsplit correctly splits mirror LV into $i VG ($j args)" + create_vg_ $vg1 "$dev1" "$dev2" "$dev3" + test $i = existing && create_vg_ $vg2 "$dev4" - lvcreate -l 64 -m1 -n $lv1 $vg1 $dev1 $dev2 $dev3 - vgchange -an $vg1 + lvcreate -l 64 -m1 -n $lv1 $vg1 "$dev1" "$dev2" "$dev3" + vgchange -an $vg1 if [ $j = PV ]; then - vgsplit $vg1 $vg2 $dev1 $dev2 $dev3 + vgsplit $vg1 $vg2 "$dev1" "$dev2" "$dev3" else vgsplit -n $lv1 $vg1 $vg2 - fi + fi if [ $i = existing ]; then check pvlv_counts $vg2 4 1 0 else check pvlv_counts $vg2 3 1 0 - fi - lvremove -f $vg2/$lv1 + fi + lvremove -f $vg2/$lv1 vgremove -f $vg2 # FIXME: ensure split /doesn't/ work when not all devs of mirror specified COMM "vgsplit correctly splits mirror LV with mirrored log into $i VG ($j args)" - create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4 - test $i = existing && create_vg_ $vg2 $dev5 + create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4" + test $i = existing && create_vg_ $vg2 "$dev5" lvcreate -l 64 --mirrorlog mirrored -m1 -n $lv1 $vg1 \ - $dev1 $dev2 $dev3 $dev4 + "$dev1" "$dev2" "$dev3" "$dev4" vgchange -an $vg1 if [ $j = PV ]; then - vgsplit $vg1 $vg2 $dev1 $dev2 $dev3 $dev4 + vgsplit $vg1 $vg2 "$dev1" "$dev2" "$dev3" "$dev4" else vgsplit -n $lv1 $vg1 $vg2 fi @@ -117,73 +117,72 @@ vgremove -f $vg2 # FIXME: ensure split /doesn't/ work when not all devs of mirror specified -COMM "vgsplit correctly splits origin and snapshot LV into $i VG ($j args)" - create_vg_ $vg1 $dev1 $dev2 - test $i = existing && create_vg_ $vg2 $dev3 $dev4 - - lvcreate -l 64 -i 2 -n $lv1 $vg1 $dev1 $dev2 - lvcreate -l 4 -i 2 -s -n $lv2 $vg1/$lv1 - vgchange -an $vg1 +COMM "vgsplit correctly splits origin and snapshot LV into $i VG ($j args)" + create_vg_ $vg1 "$dev1" "$dev2" + test $i = existing && create_vg_ $vg2 "$dev3" "$dev4" + + lvcreate -l 64 -i 2 -n $lv1 $vg1 "$dev1" "$dev2" + lvcreate -l 4 -i 2 -s -n $lv2 $vg1/$lv1 + vgchange -an $vg1 if [ $j = PV ]; then - vgsplit $vg1 $vg2 $dev1 $dev2 + vgsplit $vg1 $vg2 "$dev1" "$dev2" else vgsplit -n $lv1 $vg1 $vg2 - fi + fi if [ $i = existing ]; then check pvlv_counts $vg2 4 2 1 else check pvlv_counts $vg2 2 2 1 - fi + fi lvremove -f $vg2/$lv2 lvremove -f $vg2/$lv1 vgremove -f $vg2 -COMM "vgsplit correctly splits linear LV but not snap+origin LV into $i VG ($j args)" - create_vg_ $vg1 $dev1 $dev2 - test $i = existing && create_vg_ $vg2 $dev3 - - lvcreate -l 64 -i 2 -n $lv1 $vg1 - lvcreate -l 4 -i 2 -s -n $lv2 $vg1/$lv1 - vgextend $vg1 $dev4 - lvcreate -l 64 -n $lv3 $vg1 $dev4 - vgchange -an $vg1 +COMM "vgsplit correctly splits linear LV but not snap+origin LV into $i VG ($j args)" + create_vg_ $vg1 "$dev1" "$dev2" + test $i = existing && create_vg_ $vg2 "$dev3" + + lvcreate -l 64 -i 2 -n $lv1 $vg1 + lvcreate -l 4 -i 2 -s -n $lv2 $vg1/$lv1 + vgextend $vg1 "$dev4" + lvcreate -l 64 -n $lv3 $vg1 "$dev4" + vgchange -an $vg1 if [ $j = PV ]; then - vgsplit $vg1 $vg2 $dev4 + vgsplit $vg1 $vg2 "$dev4" else vgsplit -n $lv3 $vg1 $vg2 - fi + fi if [ $i = existing ]; then check pvlv_counts $vg2 2 1 0 check pvlv_counts $vg1 2 2 1 else check pvlv_counts $vg2 1 1 0 check pvlv_counts $vg1 2 2 1 - fi + fi lvremove -f $vg1/$lv2 lvremove -f $vg1/$lv1 $vg2/$lv3 vgremove -f $vg1 $vg2 -COMM "vgsplit correctly splits linear LV but not mirror LV into $i VG ($j args)" - create_vg_ $vg1 $dev1 $dev2 $dev3 - test $i = existing && create_vg_ $vg2 $dev5 - - lvcreate -l 64 -m1 -n $lv1 $vg1 $dev1 $dev2 $dev3 - vgextend $vg1 $dev4 - lvcreate -l 64 -n $lv2 $vg1 $dev4 - vgchange -an $vg1 +COMM "vgsplit correctly splits linear LV but not mirror LV into $i VG ($j args)" + create_vg_ $vg1 "$dev1" "$dev2" "$dev3" + test $i = existing && create_vg_ $vg2 "$dev5" + + lvcreate -l 64 -m1 -n $lv1 $vg1 "$dev1" "$dev2" "$dev3" + vgextend $vg1 "$dev4" + lvcreate -l 64 -n $lv2 $vg1 "$dev4" + vgchange -an $vg1 if [ $j = PV ]; then - vgsplit $vg1 $vg2 $dev4 + vgsplit $vg1 $vg2 "$dev4" else vgsplit -n $lv2 $vg1 $vg2 - fi + fi if [ $i = existing ]; then check pvlv_counts $vg1 3 1 0 check pvlv_counts $vg2 2 1 0 else check pvlv_counts $vg1 3 1 0 check pvlv_counts $vg2 1 1 0 - fi - lvremove -f $vg1/$lv1 $vg2/$lv2 + fi vgremove -f $vg1 $vg2 done @@ -192,104 +191,104 @@ # # Test more complex setups where the code has to find associated PVs and # LVs to split the VG correctly -# -COMM "vgsplit fails splitting 3 striped LVs into VG when only 1 LV specified" -create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4 -lvcreate -l 4 -n $lv1 -i 2 $vg1 $dev1 $dev2 -lvcreate -l 4 -n $lv2 -i 2 $vg1 $dev2 $dev3 -lvcreate -l 4 -n $lv3 -i 2 $vg1 $dev3 $dev4 -vgchange -an $vg1 +# +COMM "vgsplit fails splitting 3 striped LVs into VG when only 1 LV specified" +create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4" +lvcreate -l 4 -n $lv1 -i 2 $vg1 "$dev1" "$dev2" +lvcreate -l 4 -n $lv2 -i 2 $vg1 "$dev2" "$dev3" +lvcreate -l 4 -n $lv3 -i 2 $vg1 "$dev3" "$dev4" +vgchange -an $vg1 not vgsplit -n $lv1 $vg1 $vg2 -vgremove -ff $vg1 +vgremove -f $vg1 -COMM "vgsplit fails splitting one LV with 2 snapshots, only origin LV specified" -create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4 -lvcreate -l 16 -n $lv1 $vg1 $dev1 $dev2 -lvcreate -l 4 -n $lv2 -s $vg1/$lv1 $dev3 -lvcreate -l 4 -n $lv3 -s $vg1/$lv1 $dev4 -check pvlv_counts $vg1 4 3 2 -vgchange -an $vg1 +COMM "vgsplit fails splitting one LV with 2 snapshots, only origin LV specified" +create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4" +lvcreate -l 16 -n $lv1 $vg1 "$dev1" "$dev2" +lvcreate -l 4 -n $lv2 -s $vg1/$lv1 "$dev3" +lvcreate -l 4 -n $lv3 -s $vg1/$lv1 "$dev4" +check pvlv_counts $vg1 4 3 2 +vgchange -an $vg1 not vgsplit -n $lv1 $vg1 $vg2; lvremove -f $vg1/$lv2 $vg1/$lv3 lvremove -f $vg1/$lv1 -vgremove -ff $vg1 +vgremove -f $vg1 -COMM "vgsplit fails splitting one LV with 2 snapshots, only snapshot LV specified" -create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4 -lvcreate -l 16 -n $lv1 $vg1 $dev1 $dev2 -lvcreate -l 4 -n $lv2 -s $vg1/$lv1 $dev3 -lvcreate -l 4 -n $lv3 -s $vg1/$lv1 $dev4 -check pvlv_counts $vg1 4 3 2 -vgchange -an $vg1 +COMM "vgsplit fails splitting one LV with 2 snapshots, only snapshot LV specified" +create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4" +lvcreate -l 16 -n $lv1 $vg1 "$dev1" "$dev2" +lvcreate -l 4 -n $lv2 -s $vg1/$lv1 "$dev3" +lvcreate -l 4 -n $lv3 -s $vg1/$lv1 "$dev4" +check pvlv_counts $vg1 4 3 2 +vgchange -an $vg1 not vgsplit -n $lv2 $vg1 $vg2 lvremove -f $vg1/$lv2 $vg1/$lv3 lvremove -f $vg1/$lv1 -vgremove -ff $vg1 +vgremove -f $vg1 -COMM "vgsplit fails splitting one mirror LV, only one PV specified" -create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4 -lvcreate -l 16 -n $lv1 -m1 $vg1 $dev1 $dev2 $dev3 -check pvlv_counts $vg1 4 1 0 -vgchange -an $vg1 -not vgsplit $vg1 $vg2 $dev2 +COMM "vgsplit fails splitting one mirror LV, only one PV specified" +create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4" +lvcreate -l 16 -n $lv1 -m1 $vg1 "$dev1" "$dev2" "$dev3" +check pvlv_counts $vg1 4 1 0 +vgchange -an $vg1 +not vgsplit $vg1 $vg2 "$dev2" vgremove -ff $vg1 -COMM "vgsplit fails splitting 1 mirror + 1 striped LV, only striped LV specified" -create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4 -lvcreate -l 16 -n $lv1 -m1 $vg1 $dev1 $dev2 $dev3 -lvcreate -l 16 -n $lv2 -i 2 $vg1 $dev3 $dev4 -check pvlv_counts $vg1 4 2 0 -vgchange -an $vg1 +COMM "vgsplit fails splitting 1 mirror + 1 striped LV, only striped LV specified" +create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4" +lvcreate -l 16 -n $lv1 -m1 $vg1 "$dev1" "$dev2" "$dev3" +lvcreate -l 16 -n $lv2 -i 2 $vg1 "$dev3" "$dev4" +check pvlv_counts $vg1 4 2 0 +vgchange -an $vg1 not vgsplit -n $lv2 $vg1 $vg2 2>err -vgremove -ff $vg1 +vgremove -f $vg1 # # Verify vgsplit rejects active LVs only when active LVs involved in split # -COMM "vgsplit fails, active mirror involved in split" -create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4 -lvcreate -l 16 -n $lv1 -m1 $vg1 $dev1 $dev2 $dev3 -lvcreate -l 16 -n $lv2 $vg1 $dev4 -lvchange -an $vg1/$lv2 -check pvlv_counts $vg1 4 2 0 +COMM "vgsplit fails, active mirror involved in split" +create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4" +lvcreate -l 16 -n $lv1 -m1 $vg1 "$dev1" "$dev2" "$dev3" +lvcreate -l 16 -n $lv2 $vg1 "$dev4" +lvchange -an $vg1/$lv2 +check pvlv_counts $vg1 4 2 0 not vgsplit -n $lv1 $vg1 $vg2; -check pvlv_counts $vg1 4 2 0 -vgremove -ff $vg1 +check pvlv_counts $vg1 4 2 0 +vgremove -f $vg1 -COMM "vgsplit succeeds, active mirror not involved in split" -create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4 -lvcreate -l 16 -n $lv1 -m1 $vg1 $dev1 $dev2 $dev3 -lvcreate -l 16 -n $lv2 $vg1 $dev4 -lvchange -an $vg1/$lv2 -check pvlv_counts $vg1 4 2 0 -vgsplit -n $lv2 $vg1 $vg2 -check pvlv_counts $vg1 3 1 0 -check pvlv_counts $vg2 1 1 0 -vgremove -ff $vg1 $vg2 - -COMM "vgsplit fails, active snapshot involved in split" -create_vg_ $vg1 $dev1 $dev2 $dev3 $dev4 -lvcreate -l 64 -i 2 -n $lv1 $vg1 $dev1 $dev2 -lvcreate -l 4 -i 2 -s -n $lv2 $vg1/$lv1 -lvcreate -l 64 -i 2 -n $lv3 $vg1 $dev3 $dev4 -lvchange -an $vg1/$lv3 -check pvlv_counts $vg1 4 3 1 +COMM "vgsplit succeeds, active mirror not involved in split" +create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4" +lvcreate -l 16 -n $lv1 -m1 $vg1 "$dev1" "$dev2" "$dev3" +lvcreate -l 16 -n $lv2 $vg1 "$dev4" +lvchange -an $vg1/$lv2 +check pvlv_counts $vg1 4 2 0 +vgsplit -n $lv2 $vg1 $vg2 +check pvlv_counts $vg1 3 1 0 +check pvlv_counts $vg2 1 1 0 +vgremove -f $vg1 $vg2 + +COMM "vgsplit fails, active snapshot involved in split" +create_vg_ $vg1 "$dev1" "$dev2" "$dev3" "$dev4" +lvcreate -l 64 -i 2 -n $lv1 $vg1 "$dev1" "$dev2" +lvcreate -l 4 -i 2 -s -n $lv2 $vg1/$lv1 +lvcreate -l 64 -i 2 -n $lv3 $vg1 "$dev3" "$dev4" +lvchange -an $vg1/$lv3 +check pvlv_counts $vg1 4 3 1 not vgsplit -n $lv2 $vg1 $vg2; -check pvlv_counts $vg1 4 3 1 -lvremove -f $vg1/$lv2 -vgremove -ff $vg1 - -COMM "vgsplit succeeds, active snapshot not involved in split" -create_vg_ $vg1 $dev1 $dev2 $dev3 -lvcreate -l 64 -i 2 -n $lv1 $vg1 $dev1 $dev2 -lvcreate -l 4 -s -n $lv2 $vg1/$lv1 -vgextend $vg1 $dev4 -lvcreate -l 64 -n $lv3 $vg1 $dev4 -lvchange -an $vg1/$lv3 -check pvlv_counts $vg1 4 3 1 -vgsplit -n $lv3 $vg1 $vg2 -check pvlv_counts $vg1 3 2 1 -check pvlv_counts $vg2 1 1 0 -vgchange -an $vg1 -lvremove -f $vg1/$lv2 -vgremove -ff $vg1 $vg2 +check pvlv_counts $vg1 4 3 1 +lvremove -f $vg1/$lv2 +vgremove -f $vg1 + +COMM "vgsplit succeeds, active snapshot not involved in split" +create_vg_ $vg1 "$dev1" "$dev2" "$dev3" +lvcreate -l 64 -i 2 -n $lv1 $vg1 "$dev1" "$dev2" +lvcreate -l 4 -s -n $lv2 $vg1/$lv1 +vgextend $vg1 "$dev4" +lvcreate -l 64 -n $lv3 $vg1 "$dev4" +lvchange -an $vg1/$lv3 +check pvlv_counts $vg1 4 3 1 +vgsplit -n $lv3 $vg1 $vg2 +check pvlv_counts $vg1 3 2 1 +check pvlv_counts $vg2 1 1 0 +vgchange -an $vg1 +lvremove -f $vg1/$lv2 +vgremove -f $vg1 $vg2 --- LVM2/test/shell/vgsplit-stacked.sh 2011/11/21 00:15:47 1.1 +++ LVM2/test/shell/vgsplit-stacked.sh 2012/03/16 13:00:06 1.2 @@ -1,3 +1,4 @@ +#!/bin/sh # Copyright (C) 2010 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -11,19 +12,16 @@ . lib/test aux lvmconf 'devices/filter = [ "a/dev\/mirror/", "a/dev\/mapper\/.*$/", "a/dev\/LVMTEST/", "r/.*/" ]' -cat $TESTDIR/etc/lvm.conf -aux prepare_devs 3 +aux prepare_pvs 3 -pvcreate $(cat DEVICES) -vgcreate $vg1 $dev1 $dev2 +vgcreate $vg1 "$dev1" "$dev2" lvcreate -n $lv1 -l 100%FREE $vg1 #top VG pvcreate $DM_DEV_DIR/$vg1/$lv1 -vgcreate $vg $DM_DEV_DIR/$vg1/$lv1 $dev3 +vgcreate $vg $DM_DEV_DIR/$vg1/$lv1 "$dev3" -vgchange -a n $vg -vgchange -a n $vg1 +vgchange -a n $vg $vg1 # this should fail but not segfault, RHBZ 481793. -not vgsplit $vg $vg1 $dev3 +not vgsplit $vg $vg1 "$dev3" --- LVM2/test/shell/vgsplit-usage.sh 2011/11/21 00:15:47 1.1 +++ LVM2/test/shell/vgsplit-usage.sh 2012/03/16 13:00:06 1.2 @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 2007-2008 Red Hat, Inc. All rights reserved. +# Copyright (C) 2007-2011 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions @@ -23,146 +23,146 @@ # ensure name order does not matter # NOTE: if we're using lvm1, we must use -M on vgsplit vgcreate -M$mdatype $vg1 $(cat DEVICES) -vgsplit -M$mdatype $vg1 $vg2 $dev1 +vgsplit -M$mdatype $vg1 $vg2 "$dev1" vgremove $vg1 $vg2 vgcreate -M$mdatype $vg2 $(cat DEVICES) -vgsplit -M$mdatype $vg2 $vg1 $dev1 +vgsplit -M$mdatype $vg2 $vg1 "$dev1" vgremove $vg1 $vg2 # vgsplit accepts new vg as destination of split # lvm1 -- bz244792 vgcreate -M$mdatype $vg1 $(cat DEVICES) -vgsplit $vg1 $vg2 $dev1 1>err -grep "New volume group \"$vg2\" successfully split from \"$vg1\"" err +vgsplit $vg1 $vg2 "$dev1" 1>err +grep "New volume group \"$vg2\" successfully split from \"$vg1\"" err vgremove $vg1 $vg2 # vgsplit accepts existing vg as destination of split -vgcreate -M$mdatype $vg1 $dev1 $dev2 -vgcreate -M$mdatype $vg2 $dev3 $dev4 -vgsplit $vg1 $vg2 $dev1 1>err -grep "Existing volume group \"$vg2\" successfully split from \"$vg1\"" err +vgcreate -M$mdatype $vg1 "$dev1" "$dev2" +vgcreate -M$mdatype $vg2 "$dev3" "$dev4" +vgsplit $vg1 $vg2 "$dev1" 1>err +grep "Existing volume group \"$vg2\" successfully split from \"$vg1\"" err vgremove $vg1 $vg2 # vgsplit accepts --maxphysicalvolumes 128 on new VG -vgcreate -M$mdatype $vg1 $dev1 $dev2 -vgsplit --maxphysicalvolumes 128 $vg1 $vg2 $dev1 -check vg_field $vg2 max_pv 128 +vgcreate -M$mdatype $vg1 "$dev1" "$dev2" +vgsplit --maxphysicalvolumes 128 $vg1 $vg2 "$dev1" +check vg_field $vg2 max_pv 128 vgremove $vg1 $vg2 # vgsplit accepts --maxlogicalvolumes 128 on new VG -vgcreate -M$mdatype $vg1 $dev1 $dev2 -vgsplit --maxlogicalvolumes 128 $vg1 $vg2 $dev1 -check vg_field $vg2 max_lv 128 +vgcreate -M$mdatype $vg1 "$dev1" "$dev2" +vgsplit --maxlogicalvolumes 128 $vg1 $vg2 "$dev1" +check vg_field $vg2 max_lv 128 vgremove $vg1 $vg2 # vgsplit rejects split because max_pv of destination would be exceeded -vgcreate -M$mdatype --maxphysicalvolumes 2 $vg1 $dev1 $dev2 -vgcreate -M$mdatype --maxphysicalvolumes 2 $vg2 $dev3 $dev4 -not vgsplit $vg1 $vg2 $dev1 2>err; -grep "^ Maximum number of physical volumes (2) exceeded" err +vgcreate -M$mdatype --maxphysicalvolumes 2 $vg1 "$dev1" "$dev2" +vgcreate -M$mdatype --maxphysicalvolumes 2 $vg2 "$dev3" "$dev4" +not vgsplit $vg1 $vg2 "$dev1" 2>err; +grep "Maximum number of physical volumes (2) exceeded" err vgremove $vg1 $vg2 # vgsplit rejects split because maxphysicalvolumes given with existing vg -vgcreate -M$mdatype --maxphysicalvolumes 2 $vg1 $dev1 $dev2 -vgcreate -M$mdatype --maxphysicalvolumes 2 $vg2 $dev3 $dev4 -not vgsplit --maxphysicalvolumes 2 $vg1 $vg2 $dev1 2>err; -grep "^ Volume group \"$vg2\" exists, but new VG option specified" err +vgcreate -M$mdatype --maxphysicalvolumes 2 $vg1 "$dev1" "$dev2" +vgcreate -M$mdatype --maxphysicalvolumes 2 $vg2 "$dev3" "$dev4" +not vgsplit --maxphysicalvolumes 2 $vg1 $vg2 "$dev1" 2>err; +grep "Volume group \"$vg2\" exists, but new VG option specified" err vgremove $vg1 $vg2 # vgsplit rejects split because maxlogicalvolumes given with existing vg -vgcreate -M$mdatype --maxlogicalvolumes 2 $vg1 $dev1 $dev2 -vgcreate -M$mdatype --maxlogicalvolumes 2 $vg2 $dev3 $dev4 -not vgsplit --maxlogicalvolumes 2 $vg1 $vg2 $dev1 2>err -grep "^ Volume group \"$vg2\" exists, but new VG option specified" err +vgcreate -M$mdatype --maxlogicalvolumes 2 $vg1 "$dev1" "$dev2" +vgcreate -M$mdatype --maxlogicalvolumes 2 $vg2 "$dev3" "$dev4" +not vgsplit --maxlogicalvolumes 2 $vg1 $vg2 "$dev1" 2>err +grep "Volume group \"$vg2\" exists, but new VG option specified" err vgremove $vg1 $vg2 # vgsplit rejects split because alloc given with existing vg -vgcreate -M$mdatype --alloc cling $vg1 $dev1 $dev2 -vgcreate -M$mdatype --alloc cling $vg2 $dev3 $dev4 -not vgsplit --alloc cling $vg1 $vg2 $dev1 2>err; -grep "^ Volume group \"$vg2\" exists, but new VG option specified" err +vgcreate -M$mdatype --alloc cling $vg1 "$dev1" "$dev2" +vgcreate -M$mdatype --alloc cling $vg2 "$dev3" "$dev4" +not vgsplit --alloc cling $vg1 $vg2 "$dev1" 2>err; +grep "Volume group \"$vg2\" exists, but new VG option specified" err vgremove $vg1 $vg2 # vgsplit rejects split because clustered given with existing vg -vgcreate -M$mdatype --clustered n $vg1 $dev1 $dev2 -vgcreate -M$mdatype --clustered n $vg2 $dev3 $dev4 -not vgsplit --clustered n $vg1 $vg2 $dev1 2>err -grep "^ Volume group \"$vg2\" exists, but new VG option specified" err +vgcreate -M$mdatype --clustered n $vg1 "$dev1" "$dev2" +vgcreate -M$mdatype --clustered n $vg2 "$dev3" "$dev4" +not vgsplit --clustered n $vg1 $vg2 "$dev1" 2>err +grep "Volume group \"$vg2\" exists, but new VG option specified" err vgremove $vg1 $vg2 # vgsplit rejects vg with active lv -pvcreate -M$mdatype -ff $dev3 $dev4 -vgcreate -M$mdatype $vg1 $dev1 $dev2 -vgcreate -M$mdatype $vg2 $dev3 $dev4 -lvcreate -l 4 -n $lv1 $vg1 -not vgsplit $vg1 $vg2 $dev1 2>err; -grep "^ Logical volumes in \"$vg1\" must be inactive\$" err +pvcreate -M$mdatype -ff "$dev3" "$dev4" +vgcreate -M$mdatype $vg1 "$dev1" "$dev2" +vgcreate -M$mdatype $vg2 "$dev3" "$dev4" +lvcreate -l 4 -n $lv1 $vg1 +not vgsplit $vg1 $vg2 "$dev1" 2>err; +grep "Logical volumes in \"$vg1\" must be inactive\$" err vgremove -f $vg1 $vg2 # vgsplit rejects split because max_lv is exceeded -vgcreate -M$mdatype --maxlogicalvolumes 2 $vg1 $dev1 $dev2 -vgcreate -M$mdatype --maxlogicalvolumes 2 $vg2 $dev3 $dev4 -lvcreate -l 4 -n $lv1 $vg1 -lvcreate -l 4 -n $lv2 $vg1 -lvcreate -l 4 -n $lv3 $vg2 +vgcreate -M$mdatype --maxlogicalvolumes 2 $vg1 "$dev1" "$dev2" +vgcreate -M$mdatype --maxlogicalvolumes 2 $vg2 "$dev3" "$dev4" +lvcreate -l 4 -n $lv1 $vg1 +lvcreate -l 4 -n $lv2 $vg1 +lvcreate -l 4 -n $lv3 $vg2 vgchange -an $vg1 $vg2 -not vgsplit $vg1 $vg2 $dev1 2>err; -grep "^ Maximum number of logical volumes (2) exceeded" err +not vgsplit $vg1 $vg2 "$dev1" 2>err; +grep "Maximum number of logical volumes (2) exceeded" err vgremove -f $vg1 $vg2 # vgsplit verify default - max_lv attribute from new VG is same as source VG" \ -vgcreate -M$mdatype $vg1 $dev1 $dev2 -lvcreate -l 4 -n $lv1 $vg1 -vgchange -an $vg1 -vgsplit $vg1 $vg2 $dev1 -check compare_vg_field $vg1 $vg2 max_lv +vgcreate -M$mdatype $vg1 "$dev1" "$dev2" +lvcreate -l 4 -n $lv1 $vg1 +vgchange -an $vg1 +vgsplit $vg1 $vg2 "$dev1" +check compare_vg_field $vg1 $vg2 max_lv vgremove -f $vg1 $vg2 # vgsplit verify default - max_pv attribute from new VG is same as source VG" \ -vgcreate -M$mdatype $vg1 $dev1 $dev2 -lvcreate -l 4 -n $lv1 $vg1 -vgchange -an $vg1 -vgsplit $vg1 $vg2 $dev1 -check compare_vg_field $vg1 $vg2 max_pv +vgcreate -M$mdatype $vg1 "$dev1" "$dev2" +lvcreate -l 4 -n $lv1 $vg1 +vgchange -an $vg1 +vgsplit $vg1 $vg2 "$dev1" +check compare_vg_field $vg1 $vg2 max_pv vgremove -f $vg1 $vg2 # vgsplit verify default - vg_fmt attribute from new VG is same as source VG" \ -vgcreate -M$mdatype $vg1 $dev1 $dev2 -lvcreate -l 4 -n $lv1 $vg1 -vgchange -an $vg1 -vgsplit $vg1 $vg2 $dev1 -check compare_vg_field $vg1 $vg2 vg_fmt +vgcreate -M$mdatype $vg1 "$dev1" "$dev2" +lvcreate -l 4 -n $lv1 $vg1 +vgchange -an $vg1 +vgsplit $vg1 $vg2 "$dev1" +check compare_vg_field $vg1 $vg2 vg_fmt vgremove -f $vg2 $vg1 # vgsplit rejects split because PV not in VG -vgcreate -M$mdatype $vg1 $dev1 $dev2 -vgcreate -M$mdatype $vg2 $dev3 $dev4 -lvcreate -l 4 -n $lv1 $vg1 -lvcreate -l 4 -n $lv2 $vg1 -vgchange -an $vg1 -not vgsplit $vg1 $vg2 $dev3 2>err; +vgcreate -M$mdatype $vg1 "$dev1" "$dev2" +vgcreate -M$mdatype $vg2 "$dev3" "$dev4" +lvcreate -l 4 -n $lv1 $vg1 +lvcreate -l 4 -n $lv2 $vg1 +vgchange -an $vg1 +not vgsplit $vg1 $vg2 "$dev3" 2>err; vgremove -f $vg2 $vg1 done # ONLY LVM2 metadata # setup PVs" ' -pvcreate --metadatacopies 0 $dev5 +pvcreate --metadatacopies 0 "$dev5" # vgsplit rejects to give away pv with the last mda copy -vgcreate $vg1 $dev5 $dev2 -lvcreate -l 10 -n $lv1 $vg1 -lvchange -an $vg1/$lv1 -check pvlv_counts $vg1 2 1 0 -not vgsplit $vg1 $vg2 $dev5; -check pvlv_counts $vg1 2 1 0 -vgremove -ff $vg1 +vgcreate $vg1 "$dev5" "$dev2" +lvcreate -l 10 -n $lv1 $vg1 +lvchange -an $vg1/$lv1 +check pvlv_counts $vg1 2 1 0 +not vgsplit $vg1 $vg2 "$dev5"; +check pvlv_counts $vg1 2 1 0 +vgremove -f $vg1 # vgsplit rejects split because metadata types differ -pvcreate -ff -M1 $dev3 $dev4 -pvcreate -ff $dev1 $dev2 -vgcreate -M1 $vg1 $dev3 $dev4 -vgcreate $vg2 $dev1 $dev2 -not vgsplit $vg1 $vg2 $dev3 2>err; -grep "^ Metadata types differ" err -vgremove $vg1 $vg2 +pvcreate -ff -M1 "$dev3" "$dev4" +pvcreate -ff "$dev1" "$dev2" +vgcreate -M1 $vg1 "$dev3" "$dev4" +vgcreate $vg2 "$dev1" "$dev2" +not vgsplit $vg1 $vg2 "$dev3" 2>err; +grep "Metadata types differ" err +vgremove -f $vg1 $vg2