ksud: Don't umount stock bind mount, just bind it again after overlay.

This commit is contained in:
tiann 2023-03-27 18:43:37 +08:00
parent c4c597da9e
commit 726f44bc60
No known key found for this signature in database
GPG Key ID: 6D3F65FFD9559C06
2 changed files with 2 additions and 27 deletions

View File

@ -20,16 +20,10 @@ fn mount_partition(partition: &str, lowerdir: &mut Vec<String>) -> Result<()> {
}
// handle stock mounts under /partition, we should restore the mount point after overlay
// because the overlayfs mount will "overlay" the bind mount such as /vendor/bt_firmware, /vendor/dsp
// which will cause the system bootloop or bluetooth/dsp not working
let stock_mount = mount::StockMount::new(&format!("/{partition}/"))
.with_context(|| format!("get stock mount of partition: {partition} failed"))?;
let result = stock_mount.umount();
if result.is_err() {
let remount_result = stock_mount.remount();
if let Err(e) = remount_result {
log::error!("remount stock failed: {:?}", e);
}
bail!("umount stock mount of failed: {:?}", result);
}
// add /partition as the lowerest dir
let lowest_dir = format!("/{partition}");

View File

@ -284,21 +284,6 @@ impl StockMount {
mounts
}
pub fn umount(&self) -> Result<()> {
let mounts = self.get_target_mounts();
log::info!("umount stock for {} : {:?}", self.mnt, mounts);
for m in mounts {
let dst = m
.dest
.to_str()
.ok_or(anyhow::anyhow!("Failed to get dst"))?;
umount_dir(dst)?;
log::info!("umount: {:?}", m);
}
log::info!("umount stock succeed!");
Ok(())
}
pub fn remount(&self) -> Result<()> {
let mut mounts = self.get_target_mounts();
mounts.reverse(); // remount it in order
@ -342,10 +327,6 @@ impl StockMount {
})
}
pub fn umount(&self) -> Result<()> {
unimplemented!()
}
pub fn remount(&self) -> Result<()> {
unimplemented!()
}