vhost-user: add vhost_set_mem_table when vm load_setup at destination
When migrate huge vm, packages lost are 90+. During the load_setup of the destination vm, pass the vm mem structure to ovs, the netcard could be enabled when the migration finish state shifting. Signed-off-by: Jinhua Cao <caojinhua1@huawei.com>
This commit is contained in:
parent
8bcfea21b4
commit
97aa125a10
61
vhost-user-add-vhost_set_mem_table-when-vm-load_setu.patch
Normal file
61
vhost-user-add-vhost_set_mem_table-when-vm-load_setu.patch
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
From 5c753d539a968f2127ff6e5b916cd4b38a08b40c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jinhua Cao <caojinhua1@huawei.com>
|
||||||
|
Date: Fri, 11 Feb 2022 18:59:34 +0800
|
||||||
|
Subject: [PATCH] vhost-user: add vhost_set_mem_table when vm load_setup at
|
||||||
|
destination
|
||||||
|
|
||||||
|
When migrate huge vm, packages lost are 90+.
|
||||||
|
|
||||||
|
During the load_setup of the destination vm, pass the
|
||||||
|
vm mem structure to ovs, the netcard could be enabled
|
||||||
|
when the migration finish state shifting.
|
||||||
|
|
||||||
|
Signed-off-by: Jinhua Cao <caojinhua1@huawei.com>
|
||||||
|
---
|
||||||
|
hw/virtio/vhost-user.c | 23 +++++++++++++++++++++++
|
||||||
|
1 file changed, 23 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c
|
||||||
|
index fc2b1b81c9..a8feea489b 100644
|
||||||
|
--- a/hw/virtio/vhost-user.c
|
||||||
|
+++ b/hw/virtio/vhost-user.c
|
||||||
|
@@ -1920,6 +1920,28 @@ static int vhost_user_postcopy_notifier(NotifierWithReturn *notifier,
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static int vhost_user_load_setup(QEMUFile *f, void *opaque)
|
||||||
|
+{
|
||||||
|
+ struct vhost_dev *hdev = opaque;
|
||||||
|
+ int r;
|
||||||
|
+
|
||||||
|
+ if (hdev->vhost_ops && hdev->vhost_ops->vhost_set_mem_table) {
|
||||||
|
+ r = hdev->vhost_ops->vhost_set_mem_table(hdev, hdev->mem);
|
||||||
|
+ if (r < 0) {
|
||||||
|
+ qemu_log("error: vhost_set_mem_table failed: %s(%d)\n",
|
||||||
|
+ strerror(errno), errno);
|
||||||
|
+ return r;
|
||||||
|
+ } else {
|
||||||
|
+ qemu_log("info: vhost_set_mem_table OK\n");
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+SaveVMHandlers savevm_vhost_user_handlers = {
|
||||||
|
+ .load_setup = vhost_user_load_setup,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
static int vhost_user_backend_init(struct vhost_dev *dev, void *opaque,
|
||||||
|
Error **errp)
|
||||||
|
{
|
||||||
|
@@ -2044,6 +2066,7 @@ static int vhost_user_backend_init(struct vhost_dev *dev, void *opaque,
|
||||||
|
|
||||||
|
u->postcopy_notifier.notify = vhost_user_postcopy_notifier;
|
||||||
|
postcopy_add_notifier(&u->postcopy_notifier);
|
||||||
|
+ register_savevm_live("vhost-user", -1, 1, &savevm_vhost_user_handlers, dev);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user