summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/fsedit.pm8
-rw-r--r--perl-install/lvm.pm10
2 files changed, 11 insertions, 7 deletions
diff --git a/perl-install/fsedit.pm b/perl-install/fsedit.pm
index dcc87b6db..f17d5c151 100644
--- a/perl-install/fsedit.pm
+++ b/perl-install/fsedit.pm
@@ -386,12 +386,12 @@ sub check_mntpoint {
No bootloader is able to handle this without a /boot partition.
Please be sure to add a /boot partition") if $mntpoint eq "/" && isRAID($part) && !fs::get::has_mntpoint("/boot", $all_hds);
- #- NB: if the LV doesn't exist, lv_nb_segments returns undef
- die N("You can not use a LVM Logical Volume for mount point %s", $mntpoint)
- if $mntpoint eq '/boot' && isLVM($part) && lvm::lv_nb_segments($part) > 1;
+ #- NB: if the LV doesn't exist, lv_nb_pvs returns 0
+ die N("You can not use a LVM Logical Volume for mount point %s since it spans physical volumes", $mntpoint)
+ if $mntpoint eq '/boot' && isLVM($part) && lvm::lv_nb_pvs($part) > 1;
cdie N("You've selected a LVM Logical Volume as root (/).
The bootloader is not able to handle this when the volume spans physical volumes.
-You should create a /boot partition first") if $mntpoint eq "/" && isLVM($part) && lvm::lv_nb_segments($part) != 1 && !fs::get::has_mntpoint("/boot", $all_hds);
+You should create a /boot partition first") if $mntpoint eq "/" && isLVM($part) && lvm::lv_nb_pvs($part) != 1 && !fs::get::has_mntpoint("/boot", $all_hds);
cdie N("This directory should remain within the root filesystem")
if member($mntpoint, qw(/root));
diff --git a/perl-install/lvm.pm b/perl-install/lvm.pm
index 5fb17e791..327fe8177 100644
--- a/perl-install/lvm.pm
+++ b/perl-install/lvm.pm
@@ -80,9 +80,13 @@ sub get_lv_size {
to_int(run_program::get_stdout('lvm2', 'lvs', '--noheadings', '--nosuffix', '--units', 's', '-o', 'lv_size', "/dev/$lvm_device"));
}
-sub lv_nb_segments {
+sub lv_to_pvs {
my ($lv) = @_;
- to_int(run_program::get_stdout('lvm2', 'lvs', '--noheadings', '--nosuffix', '-o', 'seg_count', "/dev/$lv->{device}"));
+ map { m!(\S+)\(! } run_program::get_stdout('lvm2', 'lvs', '--noheadings', '-o', 'devices', "/dev/$lv->{device}");
+}
+sub lv_nb_pvs {
+ my ($lv) = @_;
+ listlength(lv_to_pvs($lv));
}
sub get_lvs {
@@ -155,7 +159,7 @@ sub lv_create {
$lv->{device} = "$lvm->{VG_name}/$lv->{lv_name}";
lvm_cmd_or_die('lvcreate', '--size', int($lv->{size} / 2) . 'k', '-n', $lv->{lv_name}, $lvm->{VG_name});
- if ($lv->{mntpoint} eq '/boot' && lv_nb_segments($lv) > 1) {
+ if ($lv->{mntpoint} eq '/boot' && lv_nb_pvs($lv) > 1) {
lvm_cmd_or_die('lvremove', '-f', "/dev/$lv->{device}");
die N("The bootloader can't handle /boot on multiple physicals volumes");
}