@@ -136,7 +136,10 @@ use vstate::kvm::Kvm;
136136use vstate:: vcpu:: { self , StartThreadedError , VcpuSendEventError } ;
137137
138138use crate :: cpu_config:: templates:: CpuConfiguration ;
139- use crate :: devices:: virtio:: balloon:: { BALLOON_DEV_ID , Balloon , BalloonConfig , BalloonStats } ;
139+ use crate :: devices:: virtio:: balloon:: {
140+ BALLOON_DEV_ID , Balloon , BalloonConfig , BalloonError , BalloonStats ,
141+ } ;
142+ use crate :: devices:: virtio:: block:: BlockError ;
140143use crate :: devices:: virtio:: block:: device:: Block ;
141144use crate :: devices:: virtio:: net:: Net ;
142145use crate :: logger:: { METRICS , MetricsError , error, info, warn} ;
@@ -248,6 +251,10 @@ pub enum VmmError {
248251 VMGenID ( #[ from] VmGenIdError ) ,
249252 /// Failed perform action on device: {0}
250253 FindDeviceError ( #[ from] device_manager:: FindDeviceError ) ,
254+ /// Block: {0}
255+ Block ( #[ from] BlockError ) ,
256+ /// Balloon: {0}
257+ Balloon ( #[ from] BalloonError ) ,
251258}
252259
253260/// Shorthand type for KVM dirty page bitmap.
@@ -522,7 +529,8 @@ impl Vmm {
522529 . try_with_virtio_device_with_id ( drive_id, |block : & mut Block | {
523530 block. update_disk_image ( path_on_host)
524531 } )
525- . map_err ( VmmError :: FindDeviceError )
532+ . map_err ( VmmError :: FindDeviceError ) ??;
533+ Ok ( ( ) )
526534 }
527535
528536 /// Updates the rate limiter parameters for block device with `drive_id` id.
@@ -536,14 +544,16 @@ impl Vmm {
536544 . try_with_virtio_device_with_id ( drive_id, |block : & mut Block | {
537545 block. update_rate_limiter ( rl_bytes, rl_ops)
538546 } )
539- . map_err ( VmmError :: FindDeviceError )
547+ . map_err ( VmmError :: FindDeviceError ) ??;
548+ Ok ( ( ) )
540549 }
541550
542551 /// Updates the rate limiter parameters for block device with `drive_id` id.
543552 pub fn update_vhost_user_block_config ( & mut self , drive_id : & str ) -> Result < ( ) , VmmError > {
544553 self . device_manager
545554 . try_with_virtio_device_with_id ( drive_id, |block : & mut Block | block. update_config ( ) )
546- . map_err ( VmmError :: FindDeviceError )
555+ . map_err ( VmmError :: FindDeviceError ) ??;
556+ Ok ( ( ) )
547557 }
548558
549559 /// Updates the rate limiter parameters for net device with `net_id` id.
@@ -571,9 +581,11 @@ impl Vmm {
571581
572582 /// Returns the latest balloon statistics if they are enabled.
573583 pub fn latest_balloon_stats ( & self ) -> Result < BalloonStats , VmmError > {
574- self . device_manager
584+ let stats = self
585+ . device_manager
575586 . try_with_virtio_device_with_id ( BALLOON_DEV_ID , |dev : & mut Balloon | dev. latest_stats ( ) )
576- . map_err ( VmmError :: FindDeviceError )
587+ . map_err ( VmmError :: FindDeviceError ) ??;
588+ Ok ( stats)
577589 }
578590
579591 /// Updates configuration for the balloon device target size.
@@ -582,7 +594,8 @@ impl Vmm {
582594 . try_with_virtio_device_with_id ( BALLOON_DEV_ID , |dev : & mut Balloon | {
583595 dev. update_size ( amount_mib)
584596 } )
585- . map_err ( VmmError :: FindDeviceError )
597+ . map_err ( VmmError :: FindDeviceError ) ??;
598+ Ok ( ( ) )
586599 }
587600
588601 /// Updates configuration for the balloon device as described in `balloon_stats_update`.
@@ -594,7 +607,8 @@ impl Vmm {
594607 . try_with_virtio_device_with_id ( BALLOON_DEV_ID , |dev : & mut Balloon | {
595608 dev. update_stats_polling_interval ( stats_polling_interval_s)
596609 } )
597- . map_err ( VmmError :: FindDeviceError )
610+ . map_err ( VmmError :: FindDeviceError ) ??;
611+ Ok ( ( ) )
598612 }
599613
600614 /// Signals Vmm to stop and exit.
0 commit comments