summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/NEWS2
-rw-r--r--perl-install/diskdrake/interactive.pm9
-rw-r--r--perl-install/fs/format.pm6
3 files changed, 13 insertions, 4 deletions
diff --git a/perl-install/NEWS b/perl-install/NEWS
index c5844efe3..08a19a761 100644
--- a/perl-install/NEWS
+++ b/perl-install/NEWS
@@ -3,6 +3,8 @@
- diskdrake:
o don't crash when creating a partition in LVM with the partition type
buttons (#38078)
+ o write partition table if needed before setting label
+ o fix setting label on not yet formatted partition
- drakbug:
o add error to summary when crashing in order to help sort duplicates
diff --git a/perl-install/diskdrake/interactive.pm b/perl-install/diskdrake/interactive.pm
index b899a2038..990920ab7 100644
--- a/perl-install/diskdrake/interactive.pm
+++ b/perl-install/diskdrake/interactive.pm
@@ -615,8 +615,13 @@ sub Label {
my ($in, $_hd, $part) = @_;
my $new_label = $part->{device_LABEL} || "";
- $in->ask_from(N("Set volume label"), N("Beware, this will be written to disk as soon as you validate!"),
- [
+ write_partitions($in, $_hd) or return;
+
+ $in->ask_from(N("Set volume label"),
+ maybeFormatted($part) ?
+ N("Beware, this will be written to disk as soon as you validate!")
+ : N("Beware, this will be written to disk only after formatting!"),
+ [
{ label => N("Which volume label?"), title => 1 },
{ label => N("Label:"), val => \$new_label } ]) or return;
diff --git a/perl-install/fs/format.pm b/perl-install/fs/format.pm
index 6a7a0856b..509134b17 100644
--- a/perl-install/fs/format.pm
+++ b/perl-install/fs/format.pm
@@ -109,7 +109,7 @@ sub write_label {
my ($part) = @_;
$part->{device_LABEL_changed} or return;
- $part->{isNotFormatted} and return;
+ maybeFormatted($part) or return;
if ($part->{encrypt_key}) {
fs::mount::set_loop($part);
@@ -123,7 +123,7 @@ sub write_label {
} else {
@args = ($cmd, devices::make($dev), $part->{device_LABEL});
}
- run_program::raw({ timeout => 'never' }, @args) or die N("setting label on %s failed", $dev);
+ run_program::raw({ timeout => 'never' }, @args) or die N("setting label on %s failed, is it formatted?", $dev);
delete $part->{device_LABEL_changed};
}
@@ -174,6 +174,8 @@ sub part_raw {
run_program::raw({ timeout => 'never' }, @args) or die N("%s formatting of %s failed", $fs_type, $dev);
}
+ delete $part->{device_LABEL_changed};
+
# Preserve UUID on fs where we couldn't enforce it while formatting
if ($fs_type eq 'jfs') {
run_program::raw('jfs_tune', '-U', devices::make($dev));