ksud_overlayfs: bring back journaling for sparse image (futile for hiding so reverting until a possible better way is discovered)

This commit is contained in:
rifsxd
2025-02-16 20:36:03 +06:00
parent b6c8203a97
commit fdd307fe8b

View File

@@ -284,15 +284,17 @@ pub fn prune_modules() -> Result<()> {
Ok(())
}
fn create_module_image(image: &str, image_size: u64) -> Result<()> {
fn create_module_image(image: &str, image_size: u64, journal_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 without journal
// format the img to ext4 filesystem
let result = Command::new("mkfs.ext4")
.args(["-O", "^has_journal", image])
.arg("-J")
.arg(format!("size={journal_size}"))
.arg(image)
.stdout(Stdio::piped())
.output()?;
ensure!(
@@ -363,11 +365,12 @@ 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)?;
create_module_image(tmp_module_img, sparse_image_size, journal_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");
@@ -389,7 +392,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)?;
create_module_image(tmp_module_img, sparse_image_size, journal_size)?;
let _dontdrop =
mount::AutoMountExt4::try_new(tmp_module_img, module_update_tmp_dir, true)
.with_context(|| format!("Failed to mount {tmp_module_img}"))?;