@@ -136,7 +136,10 @@ use vstate::kvm::Kvm;
136
136
use vstate:: vcpu:: { self , StartThreadedError , VcpuSendEventError } ;
137
137
138
138
use 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 ;
140
143
use crate :: devices:: virtio:: block:: device:: Block ;
141
144
use crate :: devices:: virtio:: net:: Net ;
142
145
use crate :: logger:: { METRICS , MetricsError , error, info, warn} ;
@@ -248,6 +251,10 @@ pub enum VmmError {
248
251
VMGenID ( #[ from] VmGenIdError ) ,
249
252
/// Failed perform action on device: {0}
250
253
FindDeviceError ( #[ from] device_manager:: FindDeviceError ) ,
254
+ /// Block: {0}
255
+ Block ( #[ from] BlockError ) ,
256
+ /// Balloon: {0}
257
+ Balloon ( #[ from] BalloonError ) ,
251
258
}
252
259
253
260
/// Shorthand type for KVM dirty page bitmap.
@@ -522,7 +529,8 @@ impl Vmm {
522
529
. try_with_virtio_device_with_id ( drive_id, |block : & mut Block | {
523
530
block. update_disk_image ( path_on_host)
524
531
} )
525
- . map_err ( VmmError :: FindDeviceError )
532
+ . map_err ( VmmError :: FindDeviceError ) ??;
533
+ Ok ( ( ) )
526
534
}
527
535
528
536
/// Updates the rate limiter parameters for block device with `drive_id` id.
@@ -536,14 +544,16 @@ impl Vmm {
536
544
. try_with_virtio_device_with_id ( drive_id, |block : & mut Block | {
537
545
block. update_rate_limiter ( rl_bytes, rl_ops)
538
546
} )
539
- . map_err ( VmmError :: FindDeviceError )
547
+ . map_err ( VmmError :: FindDeviceError ) ??;
548
+ Ok ( ( ) )
540
549
}
541
550
542
551
/// Updates the rate limiter parameters for block device with `drive_id` id.
543
552
pub fn update_vhost_user_block_config ( & mut self , drive_id : & str ) -> Result < ( ) , VmmError > {
544
553
self . device_manager
545
554
. 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 ( ( ) )
547
557
}
548
558
549
559
/// Updates the rate limiter parameters for net device with `net_id` id.
@@ -571,9 +581,11 @@ impl Vmm {
571
581
572
582
/// Returns the latest balloon statistics if they are enabled.
573
583
pub fn latest_balloon_stats ( & self ) -> Result < BalloonStats , VmmError > {
574
- self . device_manager
584
+ let stats = self
585
+ . device_manager
575
586
. 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)
577
589
}
578
590
579
591
/// Updates configuration for the balloon device target size.
@@ -582,7 +594,8 @@ impl Vmm {
582
594
. try_with_virtio_device_with_id ( BALLOON_DEV_ID , |dev : & mut Balloon | {
583
595
dev. update_size ( amount_mib)
584
596
} )
585
- . map_err ( VmmError :: FindDeviceError )
597
+ . map_err ( VmmError :: FindDeviceError ) ??;
598
+ Ok ( ( ) )
586
599
}
587
600
588
601
/// Updates configuration for the balloon device as described in `balloon_stats_update`.
@@ -594,7 +607,8 @@ impl Vmm {
594
607
. try_with_virtio_device_with_id ( BALLOON_DEV_ID , |dev : & mut Balloon | {
595
608
dev. update_stats_polling_interval ( stats_polling_interval_s)
596
609
} )
597
- . map_err ( VmmError :: FindDeviceError )
610
+ . map_err ( VmmError :: FindDeviceError ) ??;
611
+ Ok ( ( ) )
598
612
}
599
613
600
614
/// Signals Vmm to stop and exit.
0 commit comments