Properly hadnle swap partition size calculation with regart to zram option.
This commit is contained in:
+30
-20
@@ -156,11 +156,17 @@ impl PartitionStage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_swap_size(&self) -> KiraSize {
|
fn get_swap_size(&self) -> KiraSize {
|
||||||
|
if let Some(s_mode) = self.swap_mode
|
||||||
|
&& s_mode == SwapMode::SwapCustom
|
||||||
|
{
|
||||||
|
return KiraSize::new_mb(self.custom_swap_size_mb as u64);
|
||||||
|
}
|
||||||
|
|
||||||
let total_ram = self.system_ram_size + self.vram_of_all_gpus_size;
|
let total_ram = self.system_ram_size + self.vram_of_all_gpus_size;
|
||||||
log::debug!("total_ram {}", total_ram);
|
|
||||||
let sys_ram_gb = self.system_ram_size.gb();
|
let sys_ram_gb = self.system_ram_size.gb();
|
||||||
log::debug!("sys_ram_gb {}", sys_ram_gb);
|
log::debug!("sys_ram_gb {}", sys_ram_gb);
|
||||||
let disk_swap_gb = if sys_ram_gb >= 32 {
|
let mut disk_swap_gb = if sys_ram_gb >= 32 {
|
||||||
1u64
|
1u64
|
||||||
} else if sys_ram_gb >= 24 {
|
} else if sys_ram_gb >= 24 {
|
||||||
2u64
|
2u64
|
||||||
@@ -172,9 +178,11 @@ impl PartitionStage {
|
|||||||
sys_ram_gb * 2
|
sys_ram_gb * 2
|
||||||
};
|
};
|
||||||
|
|
||||||
log::debug!("disk_swap_gb {}", disk_swap_gb);
|
if self.use_zram {
|
||||||
|
disk_swap_gb = disk_swap_gb.saturating_sub(sys_ram_gb).max(2);
|
||||||
|
}
|
||||||
let disk_swap = KiraSize::new_gb(disk_swap_gb);
|
let disk_swap = KiraSize::new_gb(disk_swap_gb);
|
||||||
log::debug!("disk_swap {}", disk_swap);
|
|
||||||
match self.swap_mode {
|
match self.swap_mode {
|
||||||
Some(SwapMode::NoSwap) => KiraSize::new_b(0),
|
Some(SwapMode::NoSwap) => KiraSize::new_b(0),
|
||||||
Some(SwapMode::SwapHibernate) => disk_swap + total_ram,
|
Some(SwapMode::SwapHibernate) => disk_swap + total_ram,
|
||||||
@@ -183,6 +191,19 @@ impl PartitionStage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn gen_layout(&mut self) {
|
||||||
|
if let Some(dev) = self.device.clone() {
|
||||||
|
let swap_size: KiraSize = self.get_swap_size();
|
||||||
|
self.generated_disk_parts = Some(
|
||||||
|
PartLayout::gen_classic_layout(dev.clone(), KiraSize::new_mb(512), swap_size)
|
||||||
|
.part_list
|
||||||
|
.iter()
|
||||||
|
.map(|part_info| part_to_ct_params(part_info, dev.size))
|
||||||
|
.collect(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn gen_result(&self) -> StageResult {
|
fn gen_result(&self) -> StageResult {
|
||||||
StageResult::new("partition")
|
StageResult::new("partition")
|
||||||
.add_val_string(
|
.add_val_string(
|
||||||
@@ -236,22 +257,7 @@ impl PartitionStage {
|
|||||||
|
|
||||||
Message::SelectSwapMode(sm) => {
|
Message::SelectSwapMode(sm) => {
|
||||||
self.swap_mode = Some(sm);
|
self.swap_mode = Some(sm);
|
||||||
|
self.gen_layout();
|
||||||
if let Some(dev) = self.device.clone() {
|
|
||||||
let swap_size: KiraSize = self.get_swap_size();
|
|
||||||
self.generated_disk_parts = Some(
|
|
||||||
PartLayout::gen_classic_layout(
|
|
||||||
dev.clone(),
|
|
||||||
KiraSize::new_mb(512),
|
|
||||||
swap_size,
|
|
||||||
)
|
|
||||||
.part_list
|
|
||||||
.iter()
|
|
||||||
.map(|part_info| part_to_ct_params(part_info, dev.size))
|
|
||||||
.collect(),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
StageAction::None
|
StageAction::None
|
||||||
}
|
}
|
||||||
Message::ToggleSecureBoot(t) => {
|
Message::ToggleSecureBoot(t) => {
|
||||||
@@ -260,6 +266,7 @@ impl PartitionStage {
|
|||||||
}
|
}
|
||||||
Message::ToggleZram(t) => {
|
Message::ToggleZram(t) => {
|
||||||
self.use_zram = t;
|
self.use_zram = t;
|
||||||
|
self.gen_layout();
|
||||||
StageAction::None
|
StageAction::None
|
||||||
}
|
}
|
||||||
Message::SwapSizeIncrement => {
|
Message::SwapSizeIncrement => {
|
||||||
@@ -267,6 +274,7 @@ impl PartitionStage {
|
|||||||
.strict_mul(1024u32)
|
.strict_mul(1024u32)
|
||||||
.saturating_add(1024u32);
|
.saturating_add(1024u32);
|
||||||
self.custom_swap_size_str = format!("{}MB", self.custom_swap_size_mb);
|
self.custom_swap_size_str = format!("{}MB", self.custom_swap_size_mb);
|
||||||
|
self.gen_layout();
|
||||||
StageAction::None
|
StageAction::None
|
||||||
}
|
}
|
||||||
Message::SwapSizeDecrement => {
|
Message::SwapSizeDecrement => {
|
||||||
@@ -274,6 +282,7 @@ impl PartitionStage {
|
|||||||
.strict_mul(1024u32)
|
.strict_mul(1024u32)
|
||||||
.saturating_sub(1024u32);
|
.saturating_sub(1024u32);
|
||||||
self.custom_swap_size_str = format!("{}MB", self.custom_swap_size_mb);
|
self.custom_swap_size_str = format!("{}MB", self.custom_swap_size_mb);
|
||||||
|
self.gen_layout();
|
||||||
StageAction::None
|
StageAction::None
|
||||||
}
|
}
|
||||||
Message::SwapSizeFieldChange(f_v) => {
|
Message::SwapSizeFieldChange(f_v) => {
|
||||||
@@ -281,6 +290,7 @@ impl PartitionStage {
|
|||||||
only_num.retain(char::is_numeric);
|
only_num.retain(char::is_numeric);
|
||||||
self.custom_swap_size_mb = u32::from_str_radix(&only_num, 10).unwrap_or(1024);
|
self.custom_swap_size_mb = u32::from_str_radix(&only_num, 10).unwrap_or(1024);
|
||||||
self.custom_swap_size_str = format!("{}MB", self.custom_swap_size_mb);
|
self.custom_swap_size_str = format!("{}MB", self.custom_swap_size_mb);
|
||||||
|
self.gen_layout();
|
||||||
StageAction::None
|
StageAction::None
|
||||||
}
|
}
|
||||||
Message::Back => StageAction::Back,
|
Message::Back => StageAction::Back,
|
||||||
|
|||||||
Reference in New Issue
Block a user