Files
RedBear-OS/local/patches/bootloader/P5-live-preload-cap-128mib.patch
T

49 lines
2.3 KiB
Diff

diff --git a/src/main.rs b/src/main.rs
index 78dabb0..a41086e 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -557,0 +558 @@ fn main(os: &impl Os) -> (usize, u64, KernelArgs) {
+ let disk_block = fs.block;
@@ -559 +560,13 @@ fn main(os: &impl Os) -> (usize, u64, KernelArgs) {
- print!("live: 0/{} MiB", size / MIBI as u64);
+ let max_preload: u64 = 128 * MIBI as u64;
+ let preload_size = if size > max_preload {
+ println!(
+ "live: filesystem is {} MiB, capping preload at {} MiB",
+ size / MIBI as u64,
+ max_preload / MIBI as u64
+ );
+ max_preload
+ } else {
+ size
+ };
+
+ print!("live: 0/{} MiB", preload_size / MIBI as u64);
@@ -561 +574 @@ fn main(os: &impl Os) -> (usize, u64, KernelArgs) {
- let live_size = match usize::try_from(size) {
+ let live_size = match usize::try_from(preload_size) {
@@ -593 +606 @@ fn main(os: &impl Os) -> (usize, u64, KernelArgs) {
- print!("\rlive: {}/{} MiB", i / MIBI as u64, size / MIBI as u64);
+ print!("\rlive: {}/{} MiB", i / MIBI as u64, preload_size / MIBI as u64);
@@ -600 +613,10 @@ fn main(os: &impl Os) -> (usize, u64, KernelArgs) {
- println!("\rlive: {}/{} MiB", i / MIBI as u64, size / MIBI as u64);
+ println!("\rlive: {}/{} MiB", i / MIBI as u64, preload_size / MIBI as u64);
+
+ if preload_size < size {
+ println!(
+ "live: preloaded {} MiB of {} MiB filesystem (remaining {} MiB from disk)",
+ preload_size / MIBI as u64,
+ size / MIBI as u64,
+ (size - preload_size) / MIBI as u64
+ );
+ }
@@ -613 +635 @@ fn main(os: &impl Os) -> (usize, u64, KernelArgs) {
- Some(live)
+ Some((disk_block, size, live))
@@ -672 +694 @@ fn main(os: &impl Os) -> (usize, u64, KernelArgs) {
- if let Some(live) = live_opt {
+ if let Some((disk_block, fs_size, live)) = live_opt {
@@ -674,0 +697,2 @@ fn main(os: &impl Os) -> (usize, u64, KernelArgs) {
+ writeln!(w, "DISK_PHYS_BLOCK={:016x}", disk_block).unwrap();
+ writeln!(w, "REDOXFS_FULL_SIZE={:016x}", fs_size).unwrap();