1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-22 17:35:59 +03:00

Fix division by zero if PV with zero PE count is used during vgcfgrestore.

This commit is contained in:
Peter Rajnoha 2012-05-09 12:30:56 +00:00
parent 9f60083aff
commit 501a2c04a4
3 changed files with 10 additions and 1 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.96 - Version 2.02.96 -
================================ ================================
Fix division by zero if PV with zero PE count is used during vgcfgrestore.
Add initial support for thin pool lvconvert. Add initial support for thin pool lvconvert.
Fix lvrename for thin volumes (regression in for_each_sub_lv() 2.02.89). Fix lvrename for thin volumes (regression in for_each_sub_lv() 2.02.89).
Fix up-convert when mirror activation is controled by volume_list and tags. Fix up-convert when mirror activation is controled by volume_list and tags.

View File

@ -1713,7 +1713,7 @@ static int _text_pv_setup(const struct format_type *fmt,
pv->pe_start + size_reduction; pv->pe_start + size_reduction;
/* Recalculate number of extents that will fit */ /* Recalculate number of extents that will fit */
if (!pv->pe_count) { if (!pv->pe_count && vg->extent_size) {
pe_count = (pv->size - pv->pe_start - size_reduction) / pe_count = (pv->size - pv->pe_start - size_reduction) /
vg->extent_size; vg->extent_size;
if (pe_count > UINT32_MAX) { if (pe_count > UINT32_MAX) {

View File

@ -111,6 +111,14 @@ pvcreate --norestorefile --uuid $uuid1 "$dev1"
vgcfgbackup -f $backupfile vgcfgbackup -f $backupfile
not pvcreate --uuid $uuid2 --restorefile $backupfile "$dev2" not pvcreate --uuid $uuid2 --restorefile $backupfile "$dev2"
# vgcfgrestore of a VG containing a PV with zero PEs (bz #820116)
# (use case: one PV in a VG used solely to keep metadata)
size_mb=$(($(blockdev --getsz $dev1) / 2048))
pvcreate --metadatasize $size_mb $dev1
vgcreate $vg1 $dev1
vgcfgbackup -f $backupfile
vgcfgrestore -f $backupfile $vg1
# pvcreate wipes swap signature when forced # pvcreate wipes swap signature when forced
dd if=/dev/zero of="$dev1" bs=1024 count=64 dd if=/dev/zero of="$dev1" bs=1024 count=64
mkswap "$dev1" mkswap "$dev1"