From bd56214d5453f03ca3d98323a8c41647c0e4c3a1 Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Thu, 26 Mar 2026 08:48:41 -0700 Subject: [PATCH] virtio-devices: vhost_user: Add VhostUserCommon::state() helper With a common state structure for all vhost-user devices the state() methods can also be refactored for reuse. This will make it easier to add new common fields in the future for snapshot/restore. Signed-off-by: Rob Bradford --- virtio-devices/src/vhost_user/blk.rs | 9 +-------- virtio-devices/src/vhost_user/fs.rs | 9 +-------- virtio-devices/src/vhost_user/generic_vhost_user.rs | 9 +-------- virtio-devices/src/vhost_user/mod.rs | 11 +++++++++++ virtio-devices/src/vhost_user/net.rs | 9 +-------- 5 files changed, 15 insertions(+), 32 deletions(-) diff --git a/virtio-devices/src/vhost_user/blk.rs b/virtio-devices/src/vhost_user/blk.rs index 66958e32c..7b574a583 100644 --- a/virtio-devices/src/vhost_user/blk.rs +++ b/virtio-devices/src/vhost_user/blk.rs @@ -192,14 +192,7 @@ impl Blk { } fn state(&self) -> State { - State { - avail_features: self.common.avail_features, - acked_features: self.common.acked_features, - config: self.config, - acked_protocol_features: self.vu_common.acked_protocol_features, - vu_num_queues: self.vu_common.vu_num_queues, - ..Default::default() - } + self.vu_common.state(&self.common, self.config) } } diff --git a/virtio-devices/src/vhost_user/fs.rs b/virtio-devices/src/vhost_user/fs.rs index f9f819c0c..3ae526264 100644 --- a/virtio-devices/src/vhost_user/fs.rs +++ b/virtio-devices/src/vhost_user/fs.rs @@ -201,14 +201,7 @@ impl Fs { } fn state(&self) -> State { - State { - avail_features: self.common.avail_features, - acked_features: self.common.acked_features, - config: self.config, - acked_protocol_features: self.vu_common.acked_protocol_features, - vu_num_queues: self.vu_common.vu_num_queues, - ..Default::default() - } + self.vu_common.state(&self.common, self.config) } } diff --git a/virtio-devices/src/vhost_user/generic_vhost_user.rs b/virtio-devices/src/vhost_user/generic_vhost_user.rs index d0880b02e..2110e6842 100644 --- a/virtio-devices/src/vhost_user/generic_vhost_user.rs +++ b/virtio-devices/src/vhost_user/generic_vhost_user.rs @@ -157,14 +157,7 @@ since the backend only supports {backend_num_queues}\n", } fn state(&self) -> State { - State { - avail_features: self.common.avail_features, - acked_features: self.common.acked_features, - acked_protocol_features: self.vu_common.acked_protocol_features, - vu_num_queues: self.vu_common.vu_num_queues, - backend_req_support: false, - ..Default::default() - } + self.vu_common.state(&self.common, ()) } #[cold] diff --git a/virtio-devices/src/vhost_user/mod.rs b/virtio-devices/src/vhost_user/mod.rs index 863212539..811ff92e1 100644 --- a/virtio-devices/src/vhost_user/mod.rs +++ b/virtio-devices/src/vhost_user/mod.rs @@ -457,6 +457,17 @@ impl VhostUserCommon { Ok(()) } + pub fn state(&self, common: &crate::VirtioCommon, config: C) -> VhostUserState { + 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() + } + } + pub fn snapshot(&mut self, state: &T) -> std::result::Result where T: Serialize, diff --git a/virtio-devices/src/vhost_user/net.rs b/virtio-devices/src/vhost_user/net.rs index d6d142ba6..2145691a0 100644 --- a/virtio-devices/src/vhost_user/net.rs +++ b/virtio-devices/src/vhost_user/net.rs @@ -221,14 +221,7 @@ impl Net { } fn state(&self) -> State { - State { - avail_features: self.common.avail_features, - acked_features: self.common.acked_features, - config: self.config, - acked_protocol_features: self.vu_common.acked_protocol_features, - vu_num_queues: self.vu_common.vu_num_queues, - ..Default::default() - } + self.vu_common.state(&self.common, self.config) } }