mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-10-28 07:33:09 +00:00
virtio-devices: pci_device: Deserialise section directly to state
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
This commit is contained in:
parent
08c4e5031f
commit
85f7913bb3
@ -1117,24 +1117,14 @@ impl Snapshottable for VirtioPciDevice {
|
|||||||
self.configuration.restore(*pci_config_snapshot.clone())?;
|
self.configuration.restore(*pci_config_snapshot.clone())?;
|
||||||
}
|
}
|
||||||
|
|
||||||
let virtio_pci_dev_state =
|
|
||||||
match serde_json::from_slice(&virtio_pci_dev_section.snapshot) {
|
|
||||||
Ok(state) => state,
|
|
||||||
Err(error) => {
|
|
||||||
return Err(MigratableError::Restore(anyhow!(
|
|
||||||
"Could not deserialize VIRTIO_PCI_DEVICE {}",
|
|
||||||
error
|
|
||||||
)))
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// First restore the status of the virtqueues.
|
// First restore the status of the virtqueues.
|
||||||
self.set_state(&virtio_pci_dev_state).map_err(|e| {
|
self.set_state(&virtio_pci_dev_section.to_state()?)
|
||||||
MigratableError::Restore(anyhow!(
|
.map_err(|e| {
|
||||||
"Could not restore VIRTIO_PCI_DEVICE state {:?}",
|
MigratableError::Restore(anyhow!(
|
||||||
e
|
"Could not restore VIRTIO_PCI_DEVICE state {:?}",
|
||||||
))
|
e
|
||||||
})?;
|
))
|
||||||
|
})?;
|
||||||
|
|
||||||
// Then we can activate the device, as we know at this point that
|
// Then we can activate the device, as we know at this point that
|
||||||
// the virtqueues are in the right state and the device is ready
|
// the virtqueues are in the right state and the device is ready
|
||||||
|
Loading…
Reference in New Issue
Block a user