mirror of
https://github.com/qemu/qemu.git
synced 2025-08-10 12:46:22 +00:00
virtio-blk: implement per-device migration calls
Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> Reviewed-by: Alexander Graf <agraf@suse.de> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
037dab2fe8
commit
b2b295a74a
@ -611,11 +611,15 @@ static void virtio_blk_set_status(VirtIODevice *vdev, uint8_t status)
|
|||||||
|
|
||||||
static void virtio_blk_save(QEMUFile *f, void *opaque)
|
static void virtio_blk_save(QEMUFile *f, void *opaque)
|
||||||
{
|
{
|
||||||
VirtIOBlock *s = opaque;
|
VirtIODevice *vdev = VIRTIO_DEVICE(opaque);
|
||||||
VirtIODevice *vdev = VIRTIO_DEVICE(s);
|
|
||||||
VirtIOBlockReq *req = s->rq;
|
|
||||||
|
|
||||||
virtio_save(vdev, f);
|
virtio_save(vdev, f);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void virtio_blk_save_device(VirtIODevice *vdev, QEMUFile *f)
|
||||||
|
{
|
||||||
|
VirtIOBlock *s = VIRTIO_BLK(vdev);
|
||||||
|
VirtIOBlockReq *req = s->rq;
|
||||||
|
|
||||||
while (req) {
|
while (req) {
|
||||||
qemu_put_sbyte(f, 1);
|
qemu_put_sbyte(f, 1);
|
||||||
@ -630,16 +634,18 @@ static int virtio_blk_load(QEMUFile *f, void *opaque, int version_id)
|
|||||||
{
|
{
|
||||||
VirtIOBlock *s = opaque;
|
VirtIOBlock *s = opaque;
|
||||||
VirtIODevice *vdev = VIRTIO_DEVICE(s);
|
VirtIODevice *vdev = VIRTIO_DEVICE(s);
|
||||||
int ret;
|
|
||||||
|
|
||||||
if (version_id != 2)
|
if (version_id != 2)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
ret = virtio_load(vdev, f, version_id);
|
return virtio_load(vdev, f, version_id);
|
||||||
if (ret) {
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int virtio_blk_load_device(VirtIODevice *vdev, QEMUFile *f,
|
||||||
|
int version_id)
|
||||||
|
{
|
||||||
|
VirtIOBlock *s = VIRTIO_BLK(vdev);
|
||||||
|
|
||||||
while (qemu_get_sbyte(f)) {
|
while (qemu_get_sbyte(f)) {
|
||||||
VirtIOBlockReq *req = virtio_blk_alloc_request(s);
|
VirtIOBlockReq *req = virtio_blk_alloc_request(s);
|
||||||
qemu_get_buffer(f, (unsigned char *)req->elem,
|
qemu_get_buffer(f, (unsigned char *)req->elem,
|
||||||
@ -799,6 +805,8 @@ static void virtio_blk_class_init(ObjectClass *klass, void *data)
|
|||||||
vdc->get_features = virtio_blk_get_features;
|
vdc->get_features = virtio_blk_get_features;
|
||||||
vdc->set_status = virtio_blk_set_status;
|
vdc->set_status = virtio_blk_set_status;
|
||||||
vdc->reset = virtio_blk_reset;
|
vdc->reset = virtio_blk_reset;
|
||||||
|
vdc->save = virtio_blk_save_device;
|
||||||
|
vdc->load = virtio_blk_load_device;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const TypeInfo virtio_device_info = {
|
static const TypeInfo virtio_device_info = {
|
||||||
|
Loading…
Reference in New Issue
Block a user