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 <c.he...@proxmox.com> --- 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<String>, pub size: f64, - pub block_size: usize, + pub block_size: Option<usize>, } 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<Vec<Disk>, D::Error> where D: Deserializer<'de>, { - let disks = <Vec<(usize, String, f64, String, usize, String)>>::deserialize(deserializer)?; + let disks = + <Vec<(usize, String, f64, String, Option<usize>, 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 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel