diff options
Diffstat (limited to 'perl-install/diskdrake/interactive.pm')
-rw-r--r-- | perl-install/diskdrake/interactive.pm | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/perl-install/diskdrake/interactive.pm b/perl-install/diskdrake/interactive.pm index 898f1de58..511a2660b 100644 --- a/perl-install/diskdrake/interactive.pm +++ b/perl-install/diskdrake/interactive.pm @@ -779,7 +779,7 @@ sub _set_min_size_from_avail_space { sub Resize { my ($in, $hd, $part) = @_; - my (%nice_resize); + my (%nice_resize, $online_resize); my $low_part = $part; if (isLUKS($part)) { @@ -830,10 +830,15 @@ sub Resize { $min = $part->{size}; #- ensure the user can only increase $nice_resize{xfs} = 1; } elsif ($part->{fs_type} eq 'btrfs') { + $online_resize = $part->{fs_type}; + } + + if ($online_resize) { write_partitions($in, $hd) or return; - $nice_resize{btrfs} = 1; + $nice_resize{$online_resize} = 1; _set_min_size_from_avail_space($part, \$min); } + #- make sure that even after normalizing the size to cylinder boundaries, the minimun will be saved, #- this save at least a cylinder (less than 8Mb). $min += partition_table::raw::cylinder_size($hd); @@ -910,10 +915,14 @@ filesystem checks will be run on your next boot into Microsoft Windows®")); } elsif ($nice_resize{xfs}) { #- happens only with mounted LVM, see above run_program::run_or_die("xfs_growfs", $part->{mntpoint}); - } elsif ($nice_resize{btrfs}) { + } elsif ($online_resize) { my $dir = _get_dir_for_online_resize($part); - if (!run_program::run(qw(btrfs filesystem resize), $part->{size}*512, $dir)) { - $nice_resize{btrfs} = undef; + my @cmd; + if ($nice_resize{btrfs}) { + @cmd = (qw(btrfs filesystem resize), $part->{size}*512, $dir); + } + if (!run_program::run(@cmd)) { + $nice_resize{$part->{fs_type}} = undef; # we just mounted it in order to do online resize but online resize failed: if (!$part->{isMounted}) { fs::mount::umount($dir); |