summary refs log tree commit diff
path: root/devices/src/virtio/balloon.rs
diff options
context:
space:
mode:
Diffstat (limited to 'devices/src/virtio/balloon.rs')
-rw-r--r--devices/src/virtio/balloon.rs24
1 files changed, 18 insertions, 6 deletions
diff --git a/devices/src/virtio/balloon.rs b/devices/src/virtio/balloon.rs
index d67c532..1dfb72c 100644
--- a/devices/src/virtio/balloon.rs
+++ b/devices/src/virtio/balloon.rs
@@ -4,6 +4,7 @@
 
 use std;
 use std::cmp;
+use std::fmt::{self, Display};
 use std::io::Write;
 use std::mem;
 use std::os::unix::io::{AsRawFd, RawFd};
@@ -29,6 +30,17 @@ pub enum BalloonError {
 }
 pub type Result<T> = std::result::Result<T, BalloonError>;
 
+impl Display for BalloonError {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        use self::BalloonError::*;
+
+        match self {
+            NotEnoughPages => write!(f, "not enough pages"),
+            WritingConfigEvent(e) => write!(f, "failed to write config event: {}", e),
+        }
+    }
+}
+
 // Balloon has three virt IO queues: Inflate, Deflate, and Stats.
 // Stats is currently not used.
 const QUEUE_SIZE: u16 = 128;
@@ -92,7 +104,7 @@ impl Worker {
                         .remove_range(guest_address, 1 << VIRTIO_BALLOON_PFN_SHIFT)
                         .is_err()
                     {
-                        warn!("Marking pages unused failed {:?}", guest_address);
+                        warn!("Marking pages unused failed; addr={}", guest_address);
                         continue;
                     }
                 }
@@ -148,7 +160,7 @@ impl Worker {
         {
             Ok(pc) => pc,
             Err(e) => {
-                error!("failed creating PollContext: {:?}", e);
+                error!("failed creating PollContext: {}", e);
                 return;
             }
         };
@@ -157,7 +169,7 @@ impl Worker {
             let events = match poll_ctx.wait() {
                 Ok(v) => v,
                 Err(e) => {
-                    error!("failed polling for events: {:?}", e);
+                    error!("failed polling for events: {}", e);
                     break;
                 }
             };
@@ -167,14 +179,14 @@ impl Worker {
                 match event.token() {
                     Token::Inflate => {
                         if let Err(e) = inflate_queue_evt.read() {
-                            error!("failed reading inflate queue EventFd: {:?}", e);
+                            error!("failed reading inflate queue EventFd: {}", e);
                             break 'poll;
                         }
                         needs_interrupt |= self.process_inflate_deflate(true);
                     }
                     Token::Deflate => {
                         if let Err(e) = deflate_queue_evt.read() {
-                            error!("failed reading deflate queue EventFd: {:?}", e);
+                            error!("failed reading deflate queue EventFd: {}", e);
                             break 'poll;
                         }
                         needs_interrupt |= self.process_inflate_deflate(false);
@@ -321,7 +333,7 @@ impl VirtioDevice for Balloon {
         let (self_kill_evt, kill_evt) = match EventFd::new().and_then(|e| Ok((e.try_clone()?, e))) {
             Ok(v) => v,
             Err(e) => {
-                error!("failed to create kill EventFd pair: {:?}", e);
+                error!("failed to create kill EventFd pair: {}", e);
                 return;
             }
         };