summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/diskdrake/interactive.pm10
-rw-r--r--perl-install/fsedit.pm1
2 files changed, 9 insertions, 2 deletions
diff --git a/perl-install/diskdrake/interactive.pm b/perl-install/diskdrake/interactive.pm
index 46989c40c..9020e999f 100644
--- a/perl-install/diskdrake/interactive.pm
+++ b/perl-install/diskdrake/interactive.pm
@@ -105,6 +105,7 @@ struct hd {
string info # name of the hd, eg: 'QUANTUM ATLAS IV 9 WLS'
bool readonly # is it allowed to modify the partition table
+ bool getting_rid_of_readonly_allowed # is it forbidden to write because the partition table is badly handled, or is it because we MUST not change the partition table
bool isDirty # does it need to be written to the disk
bool needKernelReread # must we tell the kernel to reread the partition table
bool hasBeenDirty # for undo
@@ -264,7 +265,11 @@ sub Done {
################################################################################
sub hd_possible_actions {
my ($in, $hd, $all_hds) = @_;
- __("Clear all"), if_($::isInstall && !$hd->{readonly}, __("Auto allocate")), __("More");
+ (
+ if_(!$hd->{readonly} || $hd->{getting_rid_of_readonly_allowed}, __("Clear all")),
+ if_(!$hd->{readonly} && $::isInstall, __("Auto allocate")),
+ __("More"),
+ );
}
sub hd_possible_actions_interactive {
my ($in, $hd, $all_hds) = @_;
@@ -282,7 +287,8 @@ sub Clear_all {
if (isLVM($hd)) {
lvm::lv_delete($hd, $_) foreach @parts
} else {
- $hd->{readonly} = 0; #- give a way out of readonly-ness. Dangerous!
+ $hd->{readonly} = 0; #- give a way out of readonly-ness. only allowed when getting_rid_of_readonly_allowed
+ $hd->{getting_rid_of_readonly_allowed} = 0;
partition_table::raw::zero_MBR_and_dirty($hd);
}
}
diff --git a/perl-install/fsedit.pm b/perl-install/fsedit.pm
index 4c2c43316..c262bcd59 100644
--- a/perl-install/fsedit.pm
+++ b/perl-install/fsedit.pm
@@ -792,6 +792,7 @@ sub use_proc_partitions {
log::l("using /proc/partitions since diskdrake failed :(");
partition_table::raw::zero_MBR($hd);
$hd->{readonly} = 1;
+ $hd->{getting_rid_of_readonly_allowed} = 1;
$hd->{primary} = { normal => [ grep { $_->{rootDevice} eq $hd->{device} } read_proc_partitions([$hd]) ] };
}