mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
tests: more testing for online thin metadata resize
Some more tests for online resize, but it's still disabled by default, since kernel doesn't work yet for this feature.
This commit is contained in:
parent
22d9daff12
commit
efe36fcd43
72
test/shell/lvextend-thin-metadata-dmeventd.sh
Normal file
72
test/shell/lvextend-thin-metadata-dmeventd.sh
Normal file
@ -0,0 +1,72 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2014 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
|
||||
# of the GNU General Public License v.2.
|
||||
#
|
||||
# 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
|
||||
|
||||
# Test autoextension of thin metadata volume
|
||||
. lib/test
|
||||
|
||||
meta_percent_() {
|
||||
get lv_field $vg/pool metadata_percent | cut -d. -f1
|
||||
}
|
||||
|
||||
wait_for_change_() {
|
||||
# dmeventd only checks every 10 seconds :(
|
||||
for i in $(seq 1 15) ; do
|
||||
test "$(meta_percent_)" != "$1" && return
|
||||
sleep 1
|
||||
done
|
||||
|
||||
return 1 # timeout
|
||||
}
|
||||
|
||||
#
|
||||
# Temporary solution to create some occupied thin metadata
|
||||
# This heavily depends on thin metadata output format to stay as is.
|
||||
# Currently it expects 2MB thin metadata and 200MB data volume size
|
||||
# Argument specifies how many devices should be created.
|
||||
fake_metadata_() {
|
||||
echo '<superblock uuid="" time="1" transaction="0" data_block_size="128" nr_data_blocks="3200">'
|
||||
for i in $(seq 1 $1)
|
||||
do
|
||||
echo ' <device dev_id="'$i'" mapped_blocks="785" transaction="0" creation_time="0" snap_time="1">'
|
||||
echo ' <range_mapping origin_begin="0" data_begin="0" length="37" time="0"/>'
|
||||
echo ' </device>'
|
||||
done
|
||||
echo "</superblock>"
|
||||
}
|
||||
|
||||
aux have_thin 1 10 0 || skip
|
||||
|
||||
aux prepare_dmeventd
|
||||
|
||||
aux lvmconf "activation/thin_pool_autoextend_percent = 10" \
|
||||
"activation/thin_pool_autoextend_threshold = 70"
|
||||
|
||||
aux prepare_pvs 3 256
|
||||
|
||||
vgcreate -s 1M $vg $(cat DEVICES)
|
||||
|
||||
# Testing dmeventd autoresize
|
||||
lvcreate -L200M -V1G -n thin -T $vg/pool
|
||||
lvcreate -L2M -n $lv1 $vg
|
||||
|
||||
# Prepare some fake metadata prefilled to ~81% (>70%)
|
||||
fake_metadata_ 400 >data
|
||||
|
||||
thin_restore -i data -o "$DM_DEV_DIR/mapper/$vg-$lv1"
|
||||
vgchange -an $vg
|
||||
# Swap volume with restored fake metadata
|
||||
lvconvert -y --thinpool $vg/pool --poolmetadata $vg/$lv1
|
||||
|
||||
vgchange -ay $vg
|
||||
|
||||
# Check dmeventd resizes metadata
|
||||
pre=$(meta_percent_)
|
||||
wait_for_change_ $pre
|
@ -1,5 +1,5 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2013 Red Hat, Inc. All rights reserved.
|
||||
# Copyright (C) 2013-2014 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
|
||||
@ -11,31 +11,35 @@
|
||||
|
||||
. lib/test
|
||||
|
||||
aux have_thin 9 9 0 || skip
|
||||
aux have_thin 1 10 0 || skip
|
||||
|
||||
aux prepare_pvs 3 256
|
||||
aux prepare_pvs 3 1256
|
||||
|
||||
vgcreate -s 1M $vg $(cat DEVICES)
|
||||
|
||||
for deactivate in true false; do
|
||||
lvcreate -l1 -T $vg/pool
|
||||
|
||||
test $deactivate && lvchange -an $vg
|
||||
|
||||
# Create some thin volumes
|
||||
lvcreate -L20 -V30 -n $lv1 -T $vg/pool
|
||||
lvcreate -s $vg/$lv1
|
||||
# Confirm we have basic 2M metadata
|
||||
check lv_field $vg/pool_tmeta size "2.00m"
|
||||
|
||||
lvresize --poolmetadata +2 $vg/pool
|
||||
test $deactivate && lvchange -an $vg
|
||||
|
||||
lvresize --poolmetadata +2M $vg/pool
|
||||
# Test it's been resized to 4M
|
||||
check lv_field $vg/pool_tmeta size "4.00m"
|
||||
|
||||
# TODO: Add more tests when kernel is fixed
|
||||
lvresize --alloc anywhere --poolmetadata +256 $vg/pool
|
||||
lvresize --poolmetadata +256M $vg/pool
|
||||
check lv_field $vg/pool_tmeta size "260.00m"
|
||||
|
||||
lvresize --poolmetadata +3G $vg/pool
|
||||
check lv_field $vg/pool_tmeta size "3.25g"
|
||||
|
||||
vgchange -an $vg
|
||||
vgchange -ay $vg
|
||||
|
||||
# TODO: Make a full metadata device and test dmeventd support
|
||||
# TODO: Add more tests
|
||||
|
||||
lvremove -ff $vg
|
||||
done
|
||||
|
Loading…
Reference in New Issue
Block a user