From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 6ECB7B70C for ; Wed, 9 Aug 2023 15:45:43 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 51BDA15DC1 for ; Wed, 9 Aug 2023 15:45:13 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Wed, 9 Aug 2023 15:45:12 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id EEBC943C7A for ; Wed, 9 Aug 2023 15:45:11 +0200 (CEST) From: Christoph Heiss To: pve-devel@lists.proxmox.com Date: Wed, 9 Aug 2023 15:44:25 +0200 Message-ID: <20230809134426.1009504-7-c.heiss@proxmox.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230809134426.1009504-1-c.heiss@proxmox.com> References: <20230809134426.1009504-1-c.heiss@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.044 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH installer 6/6] tui: setup: handle missing disk block size gracefully X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Aug 2023 13:45:43 -0000 As that value can indeed be undefined, handle that (edge-)case gracefully. There is only one place where it is checked, in the ZFS RAID setup dialog. Aligns it with how the low-level installer handles that case too. Signed-off-by: Christoph Heiss --- proxmox-tui-installer/src/options.rs | 2 +- proxmox-tui-installer/src/setup.rs | 3 ++- proxmox-tui-installer/src/views/bootdisk.rs | 16 ++++++++++++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/proxmox-tui-installer/src/options.rs b/proxmox-tui-installer/src/options.rs index dab1730..f18c813 100644 --- a/proxmox-tui-installer/src/options.rs +++ b/proxmox-tui-installer/src/options.rs @@ -222,7 +222,7 @@ pub struct Disk { pub path: String, pub model: Option, pub size: f64, - pub block_size: usize, + pub block_size: Option, } impl fmt::Display for Disk { diff --git a/proxmox-tui-installer/src/setup.rs b/proxmox-tui-installer/src/setup.rs index c071b80..dec91cb 100644 --- a/proxmox-tui-installer/src/setup.rs +++ b/proxmox-tui-installer/src/setup.rs @@ -277,7 +277,8 @@ fn deserialize_disks_map<'de, D>(deserializer: D) -> Result, D::Error> where D: Deserializer<'de>, { - let disks = >::deserialize(deserializer)?; + let disks = + , String)>>::deserialize(deserializer)?; Ok(disks .into_iter() .map( diff --git a/proxmox-tui-installer/src/views/bootdisk.rs b/proxmox-tui-installer/src/views/bootdisk.rs index a018e71..d01495e 100644 --- a/proxmox-tui-installer/src/views/bootdisk.rs +++ b/proxmox-tui-installer/src/views/bootdisk.rs @@ -642,7 +642,9 @@ fn check_zfs_raid_config( // See also Proxmox/Install.pm:get_zfs_raid_setup() for disk in disks { - if runinfo.boot_type != BootType::Efi && disk.block_size == 4096 { + if runinfo.boot_type != BootType::Efi + && disk.block_size.map(|v| v == 4096).unwrap_or_default() + { return Err("Booting from 4Kn drive in legacy BIOS mode is not supported.".to_owned()); } } @@ -728,7 +730,7 @@ mod tests { path: format!("/dev/dummy{index}"), model: Some("Dummy disk".to_owned()), size: 1024. * 1024. * 1024. * 8., - block_size: 512, + block_size: Some(512), } } @@ -799,14 +801,20 @@ mod tests { #[test] fn zfs_raid_bios() { - let disks = dummy_disks(10); let runinfo = dummy_runinfo(BootType::Bios); + let mut disks = dummy_disks(10); + zfs_common_tests(&disks, &runinfo); + + for disk in &mut disks { + disk.block_size = None; + } + // Should behave the same as if an explicit block size of 512 was set zfs_common_tests(&disks, &runinfo); for i in 0..10 { let mut disks = dummy_disks(10); - disks[i].block_size = 4096; + disks[i].block_size = Some(4096); // Must fail if /any/ of the disks are 4Kn assert!(check_zfs_raid_config(&runinfo, ZfsRaidLevel::Raid0, &disks).is_err()); -- 2.41.0