c27a28a0c8
Absorb P1-P4 bootloader patches into P5 carrier. Move absorbed patches to local/patches/bootloader/absorbed/ for reference.
54 lines
2.0 KiB
Diff
54 lines
2.0 KiB
Diff
--- a/src/main.rs
|
|
+++ b/src/main.rs
|
|
@@ -556,9 +556,21 @@
|
|
let live_opt = if live {
|
|
let size = fs.header.size();
|
|
|
|
- print!("live: 0/{} MiB", size / MIBI as u64);
|
|
-
|
|
- let live_size = match usize::try_from(size) {
|
|
+ let max_preload: u64 = 1024 * 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);
|
|
+
|
|
+ let live_size = match usize::try_from(preload_size) {
|
|
Ok(live_size) => live_size,
|
|
Err(_) => {
|
|
println!("\rlive: disabled (image too large for bootloader address space)");
|
|
@@ -590,14 +602,23 @@
|
|
if let Some(live) = live {
|
|
let mut i = 0;
|
|
for chunk in live.chunks_mut(MIBI) {
|
|
- print!("\rlive: {}/{} MiB", i / MIBI as u64, size / MIBI as u64);
|
|
+ print!("\rlive: {}/{} MiB", i / MIBI as u64, preload_size / MIBI as u64);
|
|
i += unsafe {
|
|
fs.disk
|
|
.read_at(fs.block + i / redoxfs::BLOCK_SIZE, chunk)
|
|
.expect("Failed to read live disk") as u64
|
|
};
|
|
}
|
|
- 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
|
|
+ );
|
|
+ }
|
|
|
|
println!("Switching to live disk");
|
|
unsafe {
|