diff options
author | Pascal Rigaux <pixel@mandriva.com> | 2002-09-05 15:32:07 +0000 |
---|---|---|
committer | Pascal Rigaux <pixel@mandriva.com> | 2002-09-05 15:32:07 +0000 |
commit | 1692731ed6a36367063b2e244728dc725cf85589 (patch) | |
tree | 6925d56cafffb421e6b347e03ff20657be526dc3 | |
parent | 8e8ee798295c4147330a1fbd907d6214c7be5716 (diff) | |
download | drakx-1692731ed6a36367063b2e244728dc725cf85589.tar drakx-1692731ed6a36367063b2e244728dc725cf85589.tar.gz drakx-1692731ed6a36367063b2e244728dc725cf85589.tar.bz2 drakx-1692731ed6a36367063b2e244728dc725cf85589.tar.xz drakx-1692731ed6a36367063b2e244728dc725cf85589.zip |
fix using given size for created LVs whereas lvcreate allocates a little less
(thanks to Alan Hughes)
-rw-r--r-- | perl-install/lvm.pm | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/perl-install/lvm.pm b/perl-install/lvm.pm index 01e8e55a6..c5a336d22 100644 --- a/perl-install/lvm.pm +++ b/perl-install/lvm.pm @@ -68,6 +68,12 @@ sub update_size { $lvm->{totalsectors} = ($lvm->{PE_size} = $l[12]) * $l[13]; } +sub get_lv_size { + my ($lvm_device) = @_; + my $info = run_program::get_stdout('lvdisplay', '-D', '-c', "/dev/$lvm_device"); + (split(':', $info))[6]; +} + sub get_lvs { my ($lvm) = @_; my @l = run_program::get_stdout('vgdisplay', '-v', '-D', $lvm->{VG_name}); @@ -75,11 +81,10 @@ sub get_lvs { [ map { my $type = -e "/dev/$_" && fsedit::typeOfPart("/dev/$_"); - my $info = run_program::get_stdout('lvdisplay', '-D', '-c', "/dev/$_"); { device => $_, type => $type || 0x83, - size => (split(':', $info))[6] } + size => get_lv_size($_) } } map { if_(m|^LV Name\s+/dev/(\S+)|, $1) } @l ]; } @@ -120,6 +125,7 @@ sub lv_create { my $nb = 1 + max(map { basename($_->{device}) } @$list); $lv->{device} = "$lvm->{VG_name}/$nb"; run_or_die('lvcreate', '--size', int($lv->{size} / 2) . 'k', '-n', $nb, $lvm->{VG_name}); + $lv->{size} = get_lv_size($lv->{device}); #- the created size is smaller than asked size $lv->{notFormatted} = 1; $lv->{isFormatted} = 0; push @$list, $lv; @@ -129,6 +135,7 @@ sub lv_resize { my ($lv, $oldsize) = @_; run_or_die($oldsize > $lv->{size} ? ('lvreduce', '-f') : 'lvextend', '--size', int($lv->{size} / 2) . 'k', "/dev/$lv->{device}"); + $lv->{size} = get_lv_size($lv->{device}); #- the resized partition may not be the exact asked size } 1; |