@@ -114,6 +114,7 @@ pub(crate) fn labels_of_config(
114114fn boot_entry_from_deployment (
115115 sysroot : & Storage ,
116116 deployment : & ostree:: Deployment ,
117+ booted_kernel_checksum : Option < & str > ,
117118) -> Result < BootEntry > {
118119 let (
119120 store,
@@ -144,10 +145,14 @@ fn boot_entry_from_deployment(
144145 ( None , CachedImageStatus :: default ( ) , false )
145146 } ;
146147
148+ let bootcsum = deployment. bootcsum ( ) ;
149+ let soft_reboot_capable = booted_kernel_checksum == Some ( bootcsum. as_ref ( ) ) ;
150+
147151 let r = BootEntry {
148152 image,
149153 cached_update,
150154 incompatible,
155+ soft_reboot_capable,
151156 store,
152157 pinned : deployment. is_pinned ( ) ,
153158 ostree : Some ( crate :: spec:: BootEntryOstree {
@@ -228,27 +233,29 @@ pub(crate) fn get_status(
228233 other,
229234 } ;
230235
236+ let booted_kernel_checksum = booted_deployment. as_ref ( ) . map ( |d| d. bootcsum ( ) ) ;
237+ let booted_kernel_checksum = booted_kernel_checksum. as_deref ( ) ;
238+ let booted = booted_deployment
239+ . as_ref ( )
240+ . map ( |d| boot_entry_from_deployment ( sysroot, d, None ) )
241+ . transpose ( )
242+ . context ( "Booted deployment" ) ?;
231243 let staged = deployments
232244 . staged
233245 . as_ref ( )
234- . map ( |d| boot_entry_from_deployment ( sysroot, d) )
246+ . map ( |d| boot_entry_from_deployment ( sysroot, d, booted_kernel_checksum ) )
235247 . transpose ( )
236248 . context ( "Staged deployment" ) ?;
237- let booted = booted_deployment
238- . as_ref ( )
239- . map ( |d| boot_entry_from_deployment ( sysroot, d) )
240- . transpose ( )
241- . context ( "Booted deployment" ) ?;
242249 let rollback = deployments
243250 . rollback
244251 . as_ref ( )
245- . map ( |d| boot_entry_from_deployment ( sysroot, d) )
252+ . map ( |d| boot_entry_from_deployment ( sysroot, d, booted_kernel_checksum ) )
246253 . transpose ( )
247254 . context ( "Rollback deployment" ) ?;
248255 let other_deployments = deployments
249256 . other
250257 . iter ( )
251- . map ( |d| boot_entry_from_deployment ( sysroot, d) )
258+ . map ( |d| boot_entry_from_deployment ( sysroot, d, booted_kernel_checksum ) )
252259 . collect :: < Result < Vec < _ > > > ( )
253260 . context ( "Other deployments" ) ?;
254261 let spec = staged
0 commit comments