mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
vhost: Add high-level state save/load functions
vhost_save_backend_state() and vhost_load_backend_state() can be used by vhost front-ends to easily save and load the back-end's state to/from the migration stream. Because we do not know the full state size ahead of time, vhost_save_backend_state() simply reads the data in 1 MB chunks, and writes each chunk consecutively into the migration stream, prefixed by its length. EOF is indicated by a 0-length chunk. Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Hanna Czenczek <hreitz@redhat.com> Message-Id: <20231016134243.68248-7-hreitz@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
cda83adc62
commit
4a00d5d7f4
2 changed files with 239 additions and 0 deletions
|
@ -429,4 +429,39 @@ int vhost_set_device_state_fd(struct vhost_dev *dev,
|
|||
*/
|
||||
int vhost_check_device_state(struct vhost_dev *dev, Error **errp);
|
||||
|
||||
/**
|
||||
* vhost_save_backend_state(): High-level function to receive a vhost
|
||||
* back-end's state, and save it in @f. Uses
|
||||
* `vhost_set_device_state_fd()` to get the data from the back-end, and
|
||||
* stores it in consecutive chunks that are each prefixed by their
|
||||
* respective length (be32). The end is marked by a 0-length chunk.
|
||||
*
|
||||
* Must only be called while the device and all its vrings are stopped
|
||||
* (`VHOST_TRANSFER_STATE_PHASE_STOPPED`).
|
||||
*
|
||||
* @dev: The vhost device from which to save the state
|
||||
* @f: Migration stream in which to save the state
|
||||
* @errp: Potential error message
|
||||
*
|
||||
* Returns 0 on success, and -errno otherwise.
|
||||
*/
|
||||
int vhost_save_backend_state(struct vhost_dev *dev, QEMUFile *f, Error **errp);
|
||||
|
||||
/**
|
||||
* vhost_load_backend_state(): High-level function to load a vhost
|
||||
* back-end's state from @f, and send it over to the back-end. Reads
|
||||
* the data from @f in the format used by `vhost_save_state()`, and uses
|
||||
* `vhost_set_device_state_fd()` to transfer it to the back-end.
|
||||
*
|
||||
* Must only be called while the device and all its vrings are stopped
|
||||
* (`VHOST_TRANSFER_STATE_PHASE_STOPPED`).
|
||||
*
|
||||
* @dev: The vhost device to which to send the sate
|
||||
* @f: Migration stream from which to load the state
|
||||
* @errp: Potential error message
|
||||
*
|
||||
* Returns 0 on success, and -errno otherwise.
|
||||
*/
|
||||
int vhost_load_backend_state(struct vhost_dev *dev, QEMUFile *f, Error **errp);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue