Home | History | Annotate | Line # | Download | only in test
      1      1.1  haad #!/bin/sh
      2      1.1  haad # Copyright (C) 2008 Red Hat, Inc. All rights reserved.
      3      1.1  haad #
      4      1.1  haad # This copyrighted material is made available to anyone wishing to use,
      5      1.1  haad # modify, copy, or redistribute it subject to the terms and conditions
      6      1.1  haad # of the GNU General Public License v.2.
      7      1.1  haad #
      8      1.1  haad # You should have received a copy of the GNU General Public License
      9      1.1  haad # along with this program; if not, write to the Free Software Foundation,
     10      1.1  haad # Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
     11      1.1  haad 
     12      1.1  haad test_description='Test pvcreate option values'
     13  1.1.1.2  haad PAGESIZE=$(getconf PAGESIZE)
     14      1.1  haad 
     15      1.1  haad . ./test-utils.sh
     16      1.1  haad 
     17      1.1  haad aux prepare_devs 4
     18      1.1  haad 
     19      1.1  haad #COMM 'pvcreate rejects negative setphysicalvolumesize'
     20      1.1  haad not pvcreate --setphysicalvolumesize -1024 $dev1
     21      1.1  haad 
     22      1.1  haad #COMM 'pvcreate rejects negative metadatasize'
     23      1.1  haad not pvcreate --metadatasize -1024 $dev1
     24      1.1  haad 
     25      1.1  haad # x. metadatasize 0, defaults to 255
     26      1.1  haad # FIXME: unable to check default value, not in reporting cmds
     27      1.1  haad # should default to 255 according to code
     28      1.1  haad #   check_pv_field_ pv_mda_size 255 
     29      1.1  haad #COMM 'pvcreate accepts metadatasize 0'
     30      1.1  haad pvcreate --metadatasize 0 $dev1
     31      1.1  haad pvremove $dev1
     32      1.1  haad 
     33  1.1.1.2  haad #Verify vg_mda_size is smaller pv_mda_size
     34  1.1.1.2  haad pvcreate --metadatasize 512k $dev1
     35  1.1.1.2  haad pvcreate --metadatasize 96k $dev2
     36  1.1.1.2  haad vgcreate $vg $dev1 $dev2
     37  1.1.1.2  haad compare_two_fields_ vgs $vg vg_mda_size pvs $dev2 pv_mda_size
     38  1.1.1.2  haad vgremove -ff $vg
     39  1.1.1.2  haad 
     40      1.1  haad # x. metadatasize too large
     41      1.1  haad # For some reason we allow this, even though there's no room for data?
     42      1.1  haad ##COMM  'pvcreate rejects metadatasize too large' 
     43      1.1  haad #not pvcreate --metadatasize 100000000000000 $dev1
     44      1.1  haad 
     45      1.1  haad #COMM 'pvcreate rejects metadatacopies < 0'
     46      1.1  haad not pvcreate --metadatacopies -1 $dev1
     47      1.1  haad 
     48      1.1  haad #COMM 'pvcreate accepts metadatacopies = 0, 1, 2'
     49  1.1.1.2  haad for j in metadatacopies pvmetadatacopies
     50  1.1.1.2  haad do
     51  1.1.1.2  haad pvcreate --$j 0 $dev1
     52  1.1.1.2  haad pvcreate --$j 1 $dev2
     53  1.1.1.2  haad pvcreate --$j 2 $dev3
     54  1.1.1.2  haad check_pv_field_ $dev1 pv_mda_count 0
     55  1.1.1.2  haad check_pv_field_ $dev2 pv_mda_count 1
     56  1.1.1.2  haad check_pv_field_ $dev3 pv_mda_count 2
     57      1.1  haad pvremove $dev1 
     58      1.1  haad pvremove $dev2 
     59      1.1  haad pvremove $dev3
     60  1.1.1.2  haad done
     61      1.1  haad 
     62      1.1  haad #COMM 'pvcreate rejects metadatacopies > 2'
     63      1.1  haad not pvcreate --metadatacopies 3 $dev1
     64      1.1  haad 
     65      1.1  haad #COMM 'pvcreate rejects invalid device'
     66      1.1  haad not pvcreate $dev1bogus
     67      1.1  haad 
     68      1.1  haad #COMM 'pvcreate rejects labelsector < 0'
     69      1.1  haad not pvcreate --labelsector -1 $dev1
     70      1.1  haad 
     71      1.1  haad #COMM 'pvcreate rejects labelsector > 1000000000000'
     72      1.1  haad not pvcreate --labelsector 1000000000000 $dev1
     73      1.1  haad 
     74      1.1  haad # other possibilites based on code inspection (not sure how hard)
     75      1.1  haad # x. device too small (min of 512 * 1024 KB)
     76      1.1  haad # x. device filtered out
     77      1.1  haad # x. unable to open /dev/urandom RDONLY
     78      1.1  haad # x. device too large (pe_count > UINT32_MAX)
     79      1.1  haad # x. device read-only
     80      1.1  haad # x. unable to open device readonly
     81      1.1  haad # x. BLKGETSIZE64 fails
     82      1.1  haad # x. set size to value inconsistent with device / PE size
     83      1.1  haad 
     84  1.1.1.2  haad #COMM 'pvcreate basic dataalignment sanity checks'
     85  1.1.1.2  haad not pvcreate --dataalignment -1 $dev1
     86  1.1.1.2  haad not pvcreate -M 1 --dataalignment 1 $dev1
     87  1.1.1.2  haad not pvcreate --dataalignment 1e $dev1
     88  1.1.1.2  haad 
     89  1.1.1.2  haad #COMM 'pvcreate always rounded up to page size for start of device'
     90  1.1.1.2  haad #pvcreate --metadatacopies 0 --dataalignment 1 $dev1
     91  1.1.1.2  haad # amuse shell experts
     92  1.1.1.2  haad #check_pv_field_ $dev1 pe_start $(($(getconf PAGESIZE)/1024))".00k"
     93  1.1.1.2  haad 
     94  1.1.1.2  haad #COMM 'pvcreate sets data offset directly'
     95  1.1.1.2  haad pvcreate --dataalignment 512k $dev1
     96  1.1.1.2  haad check_pv_field_ $dev1 pe_start 512.00k
     97  1.1.1.2  haad 
     98  1.1.1.2  haad #COMM 'vgcreate/vgremove do not modify data offset of existing PV'
     99  1.1.1.2  haad vgcreate $vg $dev1  --config 'devices { data_alignment = 1024 }'
    100  1.1.1.2  haad check_pv_field_ $dev1 pe_start 512.00k
    101  1.1.1.2  haad vgremove $vg --config 'devices { data_alignment = 1024 }'
    102  1.1.1.2  haad check_pv_field_ $dev1 pe_start 512.00k
    103  1.1.1.2  haad 
    104  1.1.1.2  haad #COMM 'pvcreate sets data offset next to mda area'
    105  1.1.1.2  haad pvcreate --metadatasize 100k --dataalignment 100k $dev1
    106  1.1.1.2  haad check_pv_field_ $dev1 pe_start 200.00k
    107  1.1.1.2  haad 
    108  1.1.1.2  haad # metadata area start is aligned according to pagesize
    109  1.1.1.2  haad # pagesize should be 64k or 4k ...
    110  1.1.1.2  haad if [ $PAGESIZE -eq 65536 ] ; then
    111  1.1.1.2  haad 	pv_align="192.50k"
    112  1.1.1.2  haad else
    113  1.1.1.2  haad 	pv_align="133.00k"
    114  1.1.1.2  haad fi
    115  1.1.1.2  haad 
    116  1.1.1.2  haad pvcreate --metadatasize 128k --dataalignment 3.5k $dev1
    117  1.1.1.2  haad check_pv_field_ $dev1 pe_start $pv_align
    118  1.1.1.2  haad 
    119  1.1.1.2  haad pvcreate --metadatasize 128k --metadatacopies 2 --dataalignment 3.5k $dev1
    120  1.1.1.2  haad check_pv_field_ $dev1 pe_start $pv_align
    121  1.1.1.2  haad 
    122  1.1.1.2  haad # data area is aligned to 64k by default,
    123  1.1.1.2  haad # data area start is shifted by the specified alignment_offset
    124  1.1.1.2  haad pv_align="195.50k"
    125  1.1.1.2  haad pvcreate --metadatasize 128k --dataalignmentoffset 7s $dev1
    126  1.1.1.2  haad check_pv_field_ $dev1 pe_start $pv_align
    127  1.1.1.2  haad 
    128  1.1.1.2  haad # 2nd metadata area is created without problems when
    129  1.1.1.2  haad # data area start is shifted by the specified alignment_offset
    130  1.1.1.2  haad pvcreate --metadatasize 128k --metadatacopies 2 --dataalignmentoffset 7s $dev1
    131  1.1.1.2  haad check_pv_field_ $dev1 pv_mda_count 2
    132  1.1.1.2  haad # FIXME: compare start of 2nd mda with and without --dataalignmentoffset
    133  1.1.1.2  haad 
    134  1.1.1.2  haad #COMM 'pv with LVM1 compatible data alignment can be convereted'
    135  1.1.1.2  haad #compatible == LVM1_PE_ALIGN == 64k
    136  1.1.1.2  haad pvcreate --dataalignment 256k $dev1
    137  1.1.1.2  haad vgcreate -s 1m $vg $dev1
    138  1.1.1.2  haad vgconvert -M1 $vg
    139  1.1.1.2  haad vgconvert -M2 $vg
    140  1.1.1.2  haad check_pv_field_ $dev1 pe_start 256.00k
    141  1.1.1.2  haad vgremove $vg
    142  1.1.1.2  haad 
    143  1.1.1.2  haad #COMM 'pv with LVM1 incompatible data alignment cannot be convereted'
    144  1.1.1.2  haad pvcreate --dataalignment 10k $dev1
    145  1.1.1.2  haad vgcreate -s 1m $vg $dev1
    146  1.1.1.2  haad not vgconvert -M1 $vg
    147  1.1.1.2  haad vgremove $vg
    148  1.1.1.2  haad 
    149  1.1.1.2  haad #COMM 'vgcfgrestore allows pe_start=0'
    150  1.1.1.2  haad #basically it produces nonsense, but it tests vgcfgrestore,
    151  1.1.1.2  haad #not that final cfg is usable...
    152  1.1.1.2  haad pvcreate --metadatacopies 0 $dev1
    153  1.1.1.2  haad pvcreate $dev2
    154  1.1.1.2  haad vgcreate $vg $dev1 $dev2
    155  1.1.1.2  haad vgcfgbackup -f "$(pwd)/backup.$$" $vg
    156  1.1.1.2  haad sed 's/pe_start = [0-9]*/pe_start = 0/' "$(pwd)/backup.$$" > "$(pwd)/backup.$$1"
    157  1.1.1.2  haad vgcfgrestore -f "$(pwd)/backup.$$1" $vg
    158  1.1.1.2  haad check_pv_field_ $dev1 pe_start 0
    159  1.1.1.2  haad check_pv_field_ $dev2 pe_start 0
    160  1.1.1.2  haad vgremove $vg
    161