Skip to content

Commit 0230065

Browse files
committed
efi: update run_update() to support on all esps
1 parent da80a87 commit 0230065

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

src/efi.rs

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -377,12 +377,25 @@ impl Component for Efi {
377377
.context("opening update dir")?;
378378
let updatef = filetree::FileTree::new_from_dir(&updated).context("reading update dir")?;
379379
let diff = currentf.diff(&updatef)?;
380-
self.ensure_mounted_esp(Path::new("/"))?;
381-
let destdir = self.open_esp().context("opening EFI dir")?;
382-
validate_esp_fstype(&destdir)?;
383-
log::trace!("applying diff: {}", &diff);
384-
filetree::apply_diff(&updated, &destdir, &diff, None)
385-
.context("applying filesystem changes")?;
380+
let esp_devices = self
381+
.get_all_esp_devices()
382+
.context("get esp devices when running update")?;
383+
let sysroot = sysroot.recover_path()?;
384+
385+
for esp in esp_devices {
386+
let dest_path = if let Some(dest_path) = self.get_mounted_esp(&sysroot)? {
387+
dest_path.join("EFI")
388+
} else {
389+
self.ensure_mounted_esp(&sysroot, &esp)?.join("EFI")
390+
};
391+
392+
let destdir = openat::Dir::open(&dest_path).context("opening EFI dir")?;
393+
validate_esp_fstype(&destdir)?;
394+
log::trace!("applying diff: {}", &diff);
395+
filetree::apply_diff(&updated, &destdir, &diff, None)
396+
.context("applying filesystem changes")?;
397+
self.unmount().context("unmount after update")?;
398+
}
386399
let adopted_from = None;
387400
Ok(InstalledContent {
388401
meta: updatemeta,

0 commit comments

Comments
 (0)