@@ -422,17 +422,29 @@ impl Component for Efi {
422422 . filetree
423423 . as_ref ( )
424424 . ok_or_else ( || anyhow:: anyhow!( "No filetree for installed EFI found!" ) ) ?;
425- self . ensure_mounted_esp ( Path :: new ( "/" ) ) ?;
426- let efidir = self . open_esp ( ) ?;
427- let diff = currentf. relative_diff_to ( & efidir) ?;
425+
428426 let mut errs = Vec :: new ( ) ;
429- for f in diff. changes . iter ( ) {
430- errs. push ( format ! ( "Changed: {}" , f) ) ;
431- }
432- for f in diff. removals . iter ( ) {
433- errs. push ( format ! ( "Removed: {}" , f) ) ;
427+ let esps = esp_devices. ok_or_else ( || anyhow:: anyhow!( "No esp device found!" ) ) ?;
428+ let dest_root = Path :: new ( "/" ) ;
429+ for esp_dev in esps. iter ( ) {
430+ let dest_path = if let Some ( dest_path) = self . get_mounted_esp ( dest_root) ? {
431+ dest_path. join ( "EFI" )
432+ } else {
433+ self . ensure_mounted_esp ( dest_root, & esp_dev) ?. join ( "EFI" )
434+ } ;
435+
436+ let efidir = openat:: Dir :: open ( dest_path. as_path ( ) ) ?;
437+ let diff = currentf. relative_diff_to ( & efidir) ?;
438+
439+ for f in diff. changes . iter ( ) {
440+ errs. push ( format ! ( "Changed: {}" , f) ) ;
441+ }
442+ for f in diff. removals . iter ( ) {
443+ errs. push ( format ! ( "Removed: {}" , f) ) ;
444+ }
445+ assert_eq ! ( diff. additions. len( ) , 0 ) ;
446+ self . unmount ( ) . context ( "unmount after validate" ) ?;
434447 }
435- assert_eq ! ( diff. additions. len( ) , 0 ) ;
436448 if !errs. is_empty ( ) {
437449 Ok ( ValidationResult :: Errors ( errs) )
438450 } else {
0 commit comments