public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Stoiko Ivanov <s.ivanov@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH installer 2/2] fix #3587: make hdsize configurable for btrfs setups
Date: Tue, 19 Apr 2022 14:02:31 +0200	[thread overview]
Message-ID: <20220419120231.2161474-3-s.ivanov@proxmox.com> (raw)
In-Reply-To: <20220419120231.2161474-1-s.ivanov@proxmox.com>

as described in the bug-entry it is still not possible to have a
swapfile on general btrfs setups (only on single disk (single data
profile - documented in [0,1], and my quick tests confirmed it).

Users who still need/want swap can now set a hdsize smaller than their
disk-size to keep a part unpartitioned for adding a swap-partition
after installation (like with ZFS).

I quickly considered sticking with a single 'advanced raid' tab and
adapting the visibility of the individual lines, but did not see an
elegant way (as far as this is possible with GUI code) of doing that.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
---
 proxinstall | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/proxinstall b/proxinstall
index 5360b08..93f2443 100755
--- a/proxinstall
+++ b/proxinstall
@@ -1341,7 +1341,7 @@ sub extract_data {
 		my $logical_bsize = @$hd[4];
 
 		my ($size, $osdev, $efidev) =
-		    partition_bootable_disk($devname, undef, '8300');
+		    partition_bootable_disk($devname, $config_options->{hdsize}, '8300');
 		$rootdev = $osdev if !defined($rootdev); # simply point to first disk
 		my $by_id = find_stable_path("/dev/disk/by-id", $devname);
 		push @$bootdevinfo, {
@@ -2983,7 +2983,7 @@ my $get_hdsize_spinbtn = sub {
 };
 
 my $create_raid_disk_grid = sub {
-    my ($hdsize_btn) = @_;
+    my ($hdsize_buttons) = @_;
     my $hd_count = scalar(@$hds);
     my $disk_labeled_widgets = [];
     for (my $i = 0; $i < $hd_count; $i++) {
@@ -3001,7 +3001,9 @@ my $create_raid_disk_grid = sub {
 		my $a = $w->get_active - 1;
 		$config_options->{"disksel${diskid}"} = ($a >= 0) ? $hds->[$a] : undef;
 		my $hdsize_adj = $get_hdsize_adjustment->();
-		$hdsize_btn->set_adjustment($hdsize_adj);
+		for my $btn (@$hdsize_buttons) {
+		    $btn->set_adjustment($hdsize_adj);
+		}
 	    });
 	}
 
@@ -3115,6 +3117,13 @@ my $create_raid_advanced_grid = sub {
     return $create_label_widget_grid->($labeled_widgets);;
 };
 
+my $create_btrfs_raid_advanced_grid = sub {
+    my ($hdsize_btn) = @_;
+    my $labeled_widgets = [];
+    push @$labeled_widgets, "hdsize", $hdsize_btn;
+    return $create_label_widget_grid->($labeled_widgets);;
+};
+
 sub create_hdoption_view {
 
     my $dialog = Gtk3::Dialog->new();
@@ -3223,13 +3232,16 @@ sub create_hdoption_view {
     }
 
     my $spinbutton_hdsize_zfs = $get_hdsize_spinbtn->($hdsize);
+    my $spinbutton_hdsize_btrfs = $get_hdsize_spinbtn->($hdsize);
+    my $hdsize_buttons = [ $spinbutton_hdsize_zfs, $spinbutton_hdsize_btrfs ];
     my $options_stack = Gtk3::Stack->new();
     $options_stack->set_visible(1);
     $options_stack->set_hexpand(1);
     $options_stack->set_vexpand(1);
-    $options_stack->add_titled(&$create_raid_disk_grid($spinbutton_hdsize_zfs), "raiddisk", "Disk Setup");
+    $options_stack->add_titled(&$create_raid_disk_grid($hdsize_buttons), "raiddisk", "Disk Setup");
     $options_stack->add_titled(&$create_label_widget_grid($hdsize_labeled_widgets), "hdsize", "Size Options");
     $options_stack->add_titled(&$create_raid_advanced_grid($spinbutton_hdsize_zfs), "raidzfsadvanced", "Advanced Options");
+    $options_stack->add_titled(&$create_btrfs_raid_advanced_grid($spinbutton_hdsize_btrfs), "raidbtrfsadvanced", "Advanced Options");
     $options_stack->set_visible_child_name("raiddisk");
     my $options_stack_switcher = Gtk3::StackSwitcher->new();
     $options_stack_switcher->set_halign('center');
@@ -3257,8 +3269,9 @@ sub create_hdoption_view {
 	    $hw_raid_note->set_markup($msg);
 	}
 	$hw_raid_note->set_visible($raid);
-	$options_stack_switcher->set_visible($is_zfs);
+	$options_stack_switcher->set_visible($raid);
 	$options_stack->get_child_by_name("raidzfsadvanced")->set_visible($is_zfs);
+	$options_stack->get_child_by_name("raidbtrfsadvanced")->set_visible(!$is_zfs);
 	if ($raid) {
 	    $target_hd_label->set_text("Target: $config_options->{filesys} ");
 	    $options_stack->set_visible_child_name("raiddisk");
@@ -3267,7 +3280,7 @@ sub create_hdoption_view {
 	}
 
 	if ($raid) {
-	    $spinbutton_hdsize = $spinbutton_hdsize_zfs;
+	    $spinbutton_hdsize = $is_zfs ? $spinbutton_hdsize_zfs : $spinbutton_hdsize_btrfs;
 	} else {
 	    $spinbutton_hdsize = $spinbutton_hdsize_nonraid;
 	}
-- 
2.30.2





  parent reply	other threads:[~2022-04-19 12:02 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-19 12:02 [pve-devel] [PATCH installer 0/2] fix 2 bugs related to hdsize selection Stoiko Ivanov
2022-04-19 12:02 ` [pve-devel] [PATCH installer 1/2] fix #3188: update hdsize spin-button on disk-selection change Stoiko Ivanov
2022-04-19 12:02 ` Stoiko Ivanov [this message]
2022-04-20 12:12 ` [pve-devel] applied-series: [PATCH installer 0/2] fix 2 bugs related to hdsize selection Thomas Lamprecht

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220419120231.2161474-3-s.ivanov@proxmox.com \
    --to=s.ivanov@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal