From: Zhang Chen Date: Fri, 16 Oct 2020 05:52:07 +0000 (+0800) Subject: net/colo-compare.c: Add secondary old packet detection X-Git-Tag: v5.2.0-rc2~24^2~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=17475df2c1f5dc5b9a4fecd5997765897782832e;p=thirdparty%2Fqemu.git net/colo-compare.c: Add secondary old packet detection Detect queued secondary packet to sync VM state in time. Signed-off-by: Zhang Chen Reviewed-by: Li Zhijian Signed-off-by: Jason Wang --- diff --git a/net/colo-compare.c b/net/colo-compare.c index 1263203e7fc..0c87fd9e336 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; } /*