From 8536a2536e95a3a0762c03d426ff8eaaec7f1acf Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Thu, 26 Mar 2026 14:14:37 -0700 Subject: [PATCH] virtio-devices: vhost_user: Adapt state() to return Result This is a refactoring step in preparation for fetching backend device state via SET_DEVICE_STATE_FD which can fail. Signed-off-by: Rob Bradford --- virtio-devices/src/vhost_user/blk.rs | 4 ++-- virtio-devices/src/vhost_user/fs.rs | 4 ++-- virtio-devices/src/vhost_user/generic_vhost_user.rs | 4 ++-- virtio-devices/src/vhost_user/mod.rs | 12 +++++++++--- virtio-devices/src/vhost_user/net.rs | 4 ++-- 5 files changed, 17 insertions(+), 11 deletions(-) diff --git a/virtio-devices/src/vhost_user/blk.rs b/virtio-devices/src/vhost_user/blk.rs index 7b574a583..8d6003216 100644 --- a/virtio-devices/src/vhost_user/blk.rs +++ b/virtio-devices/src/vhost_user/blk.rs @@ -191,7 +191,7 @@ impl Blk { }) } - fn state(&self) -> State { + fn state(&self) -> std::result::Result { self.vu_common.state(&self.common, self.config) } } @@ -367,7 +367,7 @@ impl Snapshottable for Blk { } fn snapshot(&mut self) -> std::result::Result { - self.vu_common.snapshot(&self.state()) + self.vu_common.snapshot(&self.state()?) } } impl Transportable for Blk {} diff --git a/virtio-devices/src/vhost_user/fs.rs b/virtio-devices/src/vhost_user/fs.rs index 3ae526264..b5bf495ba 100644 --- a/virtio-devices/src/vhost_user/fs.rs +++ b/virtio-devices/src/vhost_user/fs.rs @@ -200,7 +200,7 @@ impl Fs { }) } - fn state(&self) -> State { + fn state(&self) -> std::result::Result { self.vu_common.state(&self.common, self.config) } } @@ -377,7 +377,7 @@ impl Snapshottable for Fs { } fn snapshot(&mut self) -> std::result::Result { - self.vu_common.snapshot(&self.state()) + self.vu_common.snapshot(&self.state()?) } } impl Transportable for Fs {} diff --git a/virtio-devices/src/vhost_user/generic_vhost_user.rs b/virtio-devices/src/vhost_user/generic_vhost_user.rs index 368f46982..9b4c8e499 100644 --- a/virtio-devices/src/vhost_user/generic_vhost_user.rs +++ b/virtio-devices/src/vhost_user/generic_vhost_user.rs @@ -156,7 +156,7 @@ since the backend only supports {backend_num_queues}\n", }) } - fn state(&self) -> State { + fn state(&self) -> std::result::Result { self.vu_common.state(&self.common, ()) } @@ -396,7 +396,7 @@ impl Snapshottable for GenericVhostUser { } fn snapshot(&mut self) -> std::result::Result { - self.vu_common.snapshot(&self.state()) + self.vu_common.snapshot(&self.state()?) } } impl Transportable for GenericVhostUser {} diff --git a/virtio-devices/src/vhost_user/mod.rs b/virtio-devices/src/vhost_user/mod.rs index 811ff92e1..07df6f013 100644 --- a/virtio-devices/src/vhost_user/mod.rs +++ b/virtio-devices/src/vhost_user/mod.rs @@ -457,15 +457,21 @@ impl VhostUserCommon { Ok(()) } - pub fn state(&self, common: &crate::VirtioCommon, config: C) -> VhostUserState { - VhostUserState { + pub fn state( + &self, + common: &crate::VirtioCommon, + config: C, + ) -> std::result::Result, MigratableError> { + let state = VhostUserState { avail_features: common.avail_features, acked_features: common.acked_features, config, acked_protocol_features: self.acked_protocol_features, vu_num_queues: self.vu_num_queues, ..Default::default() - } + }; + + Ok(state) } pub fn snapshot(&mut self, state: &T) -> std::result::Result diff --git a/virtio-devices/src/vhost_user/net.rs b/virtio-devices/src/vhost_user/net.rs index 2145691a0..ac3719d9d 100644 --- a/virtio-devices/src/vhost_user/net.rs +++ b/virtio-devices/src/vhost_user/net.rs @@ -220,7 +220,7 @@ impl Net { }) } - fn state(&self) -> State { + fn state(&self) -> std::result::Result { self.vu_common.state(&self.common, self.config) } } @@ -425,7 +425,7 @@ impl Snapshottable for Net { } fn snapshot(&mut self) -> std::result::Result { - self.vu_common.snapshot(&self.state()) + self.vu_common.snapshot(&self.state()?) } } impl Transportable for Net {}