From aa22fd880dc8f14ffafa2fd7a405c951e08d1a5d Mon Sep 17 00:00:00 2001 From: rifsxd Date: Sat, 15 Feb 2025 18:40:46 +0600 Subject: [PATCH] ksud_overlayfs: better hide modules.img (create a sparse image without journaling) and run e2fsck for eliminating possible data corruption after umount --- userspace/ksud_overlayfs/src/module.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/userspace/ksud_overlayfs/src/module.rs b/userspace/ksud_overlayfs/src/module.rs index c48d4b25..4fb7f34a 100644 --- a/userspace/ksud_overlayfs/src/module.rs +++ b/userspace/ksud_overlayfs/src/module.rs @@ -284,16 +284,16 @@ pub fn prune_modules() -> Result<()> { Ok(()) } -fn create_module_image(image: &str, image_size: u64, journal_size: u64) -> Result<()> { +fn create_module_image(image: &str, image_size: u64) -> Result<()> { File::create(image) .context("Failed to create ext4 image file")? .set_len(image_size) .context("Failed to truncate ext4 image")?; - // format the img to ext4 filesystem + // format the img to ext4 filesystem without journal let result = Command::new("mkfs.ext4") - .arg("-J") - .arg(format!("size={journal_size}")) + .arg("-O") + .arg("^has_journal") .arg(image) .stdout(Stdio::piped()) .output()?; @@ -365,12 +365,11 @@ fn _install_module(zip: &str) -> Result<()> { ); let sparse_image_size = 6 << 30; // 6GB - let journal_size = 8; // 8MB if !modules_img_exist && !modules_update_img_exist { // if no modules and modules_update, it is brand new installation, we should create a new img // create a tmp module img and mount it to modules_update info!("Creating brand new module image"); - create_module_image(tmp_module_img, sparse_image_size, journal_size)?; + create_module_image(tmp_module_img, sparse_image_size)?; } else if modules_update_img_exist { // modules_update.img exists, we should use it as tmp img info!("Using existing modules_update.img as tmp image"); @@ -392,7 +391,7 @@ fn _install_module(zip: &str) -> Result<()> { // legacy image, it's block size is 1024 with unlimited journal size if blksize == 1024 { println!("- Legacy image, migrating to new format, please be patient..."); - create_module_image(tmp_module_img, sparse_image_size, journal_size)?; + create_module_image(tmp_module_img, sparse_image_size)?; let _dontdrop = mount::AutoMountExt4::try_new(tmp_module_img, module_update_tmp_dir, true) .with_context(|| format!("Failed to mount {tmp_module_img}"))?;