[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH COLO-Frame v14 37/40] COLO: enable buffer filters fo
From: |
zhanghailiang |
Subject: |
[Qemu-devel] [PATCH COLO-Frame v14 37/40] COLO: enable buffer filters for PVM |
Date: |
Sat, 6 Feb 2016 17:28:49 +0800 |
Enable all buffer filters that added by COLO while
go into COLO process, and disable them while exit COLO.
Signed-off-by: zhanghailiang <address@hidden>
Cc: Jason Wang <address@hidden>
Cc: Yang Hongyang <address@hidden>
---
v14:
- New patch
---
migration/colo.c | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/migration/colo.c b/migration/colo.c
index 235578b..86a7638 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -104,10 +104,26 @@ static void secondary_vm_do_failover(void)
}
}
+static void colo_set_filter_status(NetFilterState *nf, void *opaque,
+ Error **errp)
+{
+ char colo_filter[128];
+ char *name = object_get_canonical_path_component(OBJECT(nf));
+ char *status = opaque;
+
+ snprintf(colo_filter, sizeof(colo_filter), "%scolo", nf->netdev_id);
+ if (strcmp(colo_filter, name)) {
+ return;
+ }
+ object_property_set_str(OBJECT(nf), status, "status", errp);
+}
+
static void primary_vm_do_failover(void)
{
MigrationState *s = migrate_get_current();
int old_state;
+ char *status;
+ Error *local_err = NULL;
migrate_set_state(&s->state, MIGRATION_STATUS_COLO,
MIGRATION_STATUS_COMPLETED);
@@ -131,6 +147,14 @@ static void primary_vm_do_failover(void)
old_state);
return;
}
+
+ status = g_strdup("disable");
+ qemu_foreach_netfilter(colo_set_filter_status, status, &local_err);
+ g_free(status);
+ if (local_err) {
+ error_report_err(local_err);
+ }
+
/* Notify COLO thread that failover work is finished */
qemu_sem_post(&s->colo_sem);
}
@@ -404,11 +428,19 @@ static void colo_process_checkpoint(MigrationState *s)
{
QEMUSizedBuffer *buffer = NULL;
int64_t current_time, checkpoint_time = qemu_clock_get_ms(QEMU_CLOCK_HOST);
+ char *status;
Error *local_err = NULL;
int ret;
failover_init_state();
+ status = g_strdup("enable");
+ qemu_foreach_netfilter(colo_set_filter_status, status, &local_err);
+ g_free(status);
+ if (local_err) {
+ goto out;
+ }
+
s->rp_state.from_dst_file = qemu_file_get_return_path(s->to_dst_file);
if (!s->rp_state.from_dst_file) {
error_report("Open QEMUFile from_dst_file failed");
--
1.8.3.1
- [Qemu-devel] [PATCH COLO-Frame v14 24/40] COLO: Process shutdown command for VM in COLO state, (continued)
- [Qemu-devel] [PATCH COLO-Frame v14 24/40] COLO: Process shutdown command for VM in COLO state, zhanghailiang, 2016/02/06
- [Qemu-devel] [PATCH COLO-Frame v14 28/40] migration/savevm: Export two helper functions for savevm process, zhanghailiang, 2016/02/06
- [Qemu-devel] [PATCH COLO-Frame v14 29/40] COLO: Separate the process of saving/loading ram and device state, zhanghailiang, 2016/02/06
- [Qemu-devel] [PATCH COLO-Frame v14 27/40] migration/savevm: Add new helpers to process the different stages of loadvm, zhanghailiang, 2016/02/06
- [Qemu-devel] [PATCH COLO-Frame v14 22/40] COLO failover: Shutdown related socket fd when do failover, zhanghailiang, 2016/02/06
- [Qemu-devel] [PATCH COLO-Frame v14 26/40] savevm: Introduce two helper functions for save/find loadvm_handlers entry, zhanghailiang, 2016/02/06
- [Qemu-devel] [PATCH COLO-Frame v14 21/40] qmp event: Add COLO_EXIT event to notify users while exited from COLO, zhanghailiang, 2016/02/06
- [Qemu-devel] [PATCH COLO-Frame v14 23/40] COLO failover: Don't do failover during loading VM's state, zhanghailiang, 2016/02/06
- [Qemu-devel] [PATCH COLO-Frame v14 37/40] COLO: enable buffer filters for PVM,
zhanghailiang <=
- Re: [Qemu-devel] [PATCH COLO-Frame v14 37/40] COLO: enable buffer filters for PVM, Jason Wang, 2016/02/23
[Qemu-devel] [PATCH COLO-Frame v14 30/40] COLO: Split qemu_savevm_state_begin out of checkpoint process, zhanghailiang, 2016/02/06
[Qemu-devel] [PATCH COLO-Frame v14 39/40] COLO: flush buffered packets in checkpoint process or exit COLO, zhanghailiang, 2016/02/06
[Qemu-devel] [PATCH COLO-Frame v14 31/40] net/filter: Add a 'status' property for filter object, zhanghailiang, 2016/02/06