@@ -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