diff options
author | Zhang Chen <chen.zhang@intel.com> | 2020-10-16 13:52:07 +0800 |
---|---|---|
committer | Jason Wang <jasowang@redhat.com> | 2020-11-11 16:52:23 +0800 |
commit | 17475df2c1f5dc5b9a4fecd5997765897782832e (patch) | |
tree | af78e7242425256251c3aab37c79d6f5e9388a33 | |
parent | ec081984f4ae7017e30f58599be54271e1b66d29 (diff) |
net/colo-compare.c: Add secondary old packet detection
Detect queued secondary packet to sync VM state in time.
Signed-off-by: Zhang Chen <chen.zhang@intel.com>
Reviewed-by: Li Zhijian <lizhijian@cn.fujitsu.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
-rw-r--r-- | net/colo-compare.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/net/colo-compare.c b/net/colo-compare.c index 1263203e7f..0c87fd9e33 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -636,19 +636,26 @@ void colo_compare_unregister_notifier(Notifier *notify) static int colo_old_packet_check_one_conn(Connection *conn, CompareState *s) { - GList *result = NULL; - - result = g_queue_find_custom(&conn->primary_list, - &s->compare_timeout, - (GCompareFunc)colo_old_packet_check_one); + if (!g_queue_is_empty(&conn->primary_list)) { + if (g_queue_find_custom(&conn->primary_list, + &s->compare_timeout, + (GCompareFunc)colo_old_packet_check_one)) + goto out; + } - if (result) { - /* Do checkpoint will flush old packet */ - colo_compare_inconsistency_notify(s); - return 0; + if (!g_queue_is_empty(&conn->secondary_list)) { + if (g_queue_find_custom(&conn->secondary_list, + &s->compare_timeout, + (GCompareFunc)colo_old_packet_check_one)) + goto out; } return 1; + +out: + /* Do checkpoint will flush old packet */ + colo_compare_inconsistency_notify(s); + return 0; } /* |