diff --git a/virtio-devices/src/balloon.rs b/virtio-devices/src/balloon.rs index 924475f0e..070158cfd 100644 --- a/virtio-devices/src/balloon.rs +++ b/virtio-devices/src/balloon.rs @@ -65,27 +65,27 @@ const VIRTIO_BALLOON_F_REPORTING: u64 = 5; #[derive(Error, Debug)] pub enum Error { #[error("Guest gave us bad memory addresses.: {0}")] - GuestMemory(GuestMemoryError), + GuestMemory(#[source] GuestMemoryError), #[error("Guest gave us a write only descriptor that protocol says to read from")] UnexpectedWriteOnlyDescriptor, #[error("Guest sent us invalid request")] InvalidRequest, #[error("Fallocate fail.: {0}")] - FallocateFail(std::io::Error), + FallocateFail(#[source] std::io::Error), #[error("Madvise fail.: {0}")] - MadviseFail(std::io::Error), + MadviseFail(#[source] std::io::Error), #[error("Failed to EventFd write.: {0}")] - EventFdWriteFail(std::io::Error), + EventFdWriteFail(#[source] std::io::Error), #[error("Invalid queue index: {0}")] InvalidQueueIndex(usize), #[error("Fail tp signal: {0}")] - FailedSignal(io::Error), + FailedSignal(#[source] io::Error), #[error("Descriptor chain is too short")] DescriptorChainTooShort, #[error("Failed adding used index: {0}")] - QueueAddUsed(virtio_queue::Error), + QueueAddUsed(#[source] virtio_queue::Error), #[error("Failed creating an iterator over the queue: {0}")] - QueueIterator(virtio_queue::Error), + QueueIterator(#[source] virtio_queue::Error), } // Got from include/uapi/linux/virtio_balloon.h diff --git a/virtio-devices/src/console.rs b/virtio-devices/src/console.rs index 64dbca21f..da96a336d 100644 --- a/virtio-devices/src/console.rs +++ b/virtio-devices/src/console.rs @@ -52,15 +52,15 @@ enum Error { #[error("Descriptor chain too short")] DescriptorChainTooShort, #[error("Failed to read from guest memory: {0}")] - GuestMemoryRead(vm_memory::guest_memory::Error), + GuestMemoryRead(#[source] vm_memory::guest_memory::Error), #[error("Failed to write to guest memory: {0}")] - GuestMemoryWrite(vm_memory::guest_memory::Error), + GuestMemoryWrite(#[source] vm_memory::guest_memory::Error), #[error("Failed to write_all output: {0}")] - OutputWriteAll(io::Error), + OutputWriteAll(#[source] io::Error), #[error("Failed to flush output: {0}")] - OutputFlush(io::Error), + OutputFlush(#[source] io::Error), #[error("Failed to add used index: {0}")] - QueueAddUsed(virtio_queue::Error), + QueueAddUsed(#[source] virtio_queue::Error), } #[derive(Copy, Clone, Debug, Serialize, Deserialize)] diff --git a/virtio-devices/src/epoll_helper.rs b/virtio-devices/src/epoll_helper.rs index 3f78768f7..8ef080e64 100644 --- a/virtio-devices/src/epoll_helper.rs +++ b/virtio-devices/src/epoll_helper.rs @@ -25,19 +25,19 @@ pub struct EpollHelper { #[derive(Error, Debug)] pub enum EpollHelperError { #[error("Failed to create Fd: {0}")] - CreateFd(std::io::Error), + CreateFd(#[source] std::io::Error), #[error("Failed to epoll_ctl: {0}")] - Ctl(std::io::Error), + Ctl(#[source] std::io::Error), #[error("IO error: {0}")] - IoError(std::io::Error), + IoError(#[source] std::io::Error), #[error("Failed to epoll_wait: {0}")] - Wait(std::io::Error), + Wait(#[source] std::io::Error), #[error("Failed to get virtio-queue index: {0}")] - QueueRingIndex(virtio_queue::Error), + QueueRingIndex(#[source] virtio_queue::Error), #[error("Failed to handle virtio device events: {0}")] - HandleEvent(anyhow::Error), + HandleEvent(#[source] anyhow::Error), #[error("Failed to handle timeout: {0}")] - HandleTimeout(anyhow::Error), + HandleTimeout(#[source] anyhow::Error), } pub const EPOLL_HELPER_EVENT_PAUSE: u16 = 0; diff --git a/virtio-devices/src/pmem.rs b/virtio-devices/src/pmem.rs index d46cdd6f2..7df772955 100644 --- a/virtio-devices/src/pmem.rs +++ b/virtio-devices/src/pmem.rs @@ -76,7 +76,7 @@ unsafe impl ByteValued for VirtioPmemResp {} #[derive(Error, Debug)] enum Error { #[error("Bad guest memory addresses: {0}")] - GuestMemory(GuestMemoryError), + GuestMemory(#[source] GuestMemoryError), #[error("Unexpected write-only descriptor")] UnexpectedWriteOnlyDescriptor, #[error("Unexpected read-only descriptor")] @@ -88,7 +88,7 @@ enum Error { #[error("Invalid request")] InvalidRequest, #[error("Failed adding used index: {0}")] - QueueAddUsed(virtio_queue::Error), + QueueAddUsed(#[source] virtio_queue::Error), } #[derive(Debug, PartialEq, Eq)] diff --git a/virtio-devices/src/rng.rs b/virtio-devices/src/rng.rs index 918285ac7..f89e18068 100644 --- a/virtio-devices/src/rng.rs +++ b/virtio-devices/src/rng.rs @@ -42,9 +42,9 @@ enum Error { #[error("Invalid descriptor")] InvalidDescriptor, #[error("Failed to write to guest memory: {0}")] - GuestMemoryWrite(vm_memory::guest_memory::Error), + GuestMemoryWrite(#[source] vm_memory::guest_memory::Error), #[error("Failed adding used index: {0}")] - QueueAddUsed(virtio_queue::Error), + QueueAddUsed(#[source] virtio_queue::Error), } struct RngEpollHandler {