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 <rbradford@meta.com>
This commit is contained in:
Rob Bradford
2026-03-26 08:48:41 -07:00
parent a77f89847e
commit bd56214d54
5 changed files with 15 additions and 32 deletions

View File

@@ -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)
}
}

View File

@@ -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)
}
}

View File

@@ -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]

View File

@@ -457,6 +457,17 @@ impl VhostUserCommon {
Ok(())
}
pub fn state<C: Default>(&self, common: &crate::VirtioCommon, config: C) -> VhostUserState<C> {
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<T>(&mut self, state: &T) -> std::result::Result<Snapshot, MigratableError>
where
T: Serialize,

View File

@@ -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)
}
}