[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH V8 03/17] colo-compare: use notifier to notify p
From: |
Zhang Chen |
Subject: |
Re: [Qemu-devel] [PATCH V8 03/17] colo-compare: use notifier to notify packets comparing result |
Date: |
Sun, 10 Jun 2018 22:09:21 +0800 |
On Mon, Jun 4, 2018 at 2:36 PM, Jason Wang <address@hidden> wrote:
>
>
> On 2018年06月03日 13:05, Zhang Chen wrote:
>
>> It's a good idea to use notifier to notify COLO frame of
>> inconsistent packets comparing.
>>
>> Signed-off-by: Zhang Chen <address@hidden>
>> Signed-off-by: zhanghailiang <address@hidden>
>> ---
>> net/colo-compare.c | 32 +++++++++++++++++++++++++-------
>> net/colo-compare.h | 2 ++
>> 2 files changed, 27 insertions(+), 7 deletions(-)
>>
>> diff --git a/net/colo-compare.c b/net/colo-compare.c
>> index 7ff3ae8904..05061cd1c4 100644
>> --- a/net/colo-compare.c
>> +++ b/net/colo-compare.c
>> @@ -29,6 +29,7 @@
>> #include "sysemu/iothread.h"
>> #include "net/colo-compare.h"
>> #include "migration/colo.h"
>> +#include "migration/migration.h"
>> #define TYPE_COLO_COMPARE "colo-compare"
>> #define COLO_COMPARE(obj) \
>> @@ -37,6 +38,9 @@
>> static QTAILQ_HEAD(, CompareState) net_compares =
>> QTAILQ_HEAD_INITIALIZER(net_compares);
>> +static NotifierList colo_compare_notifiers =
>> + NOTIFIER_LIST_INITIALIZER(colo_compare_notifiers);
>> +
>> #define COMPARE_READ_LEN_MAX NET_BUFSIZE
>> #define MAX_QUEUE_SIZE 1024
>> @@ -561,8 +565,24 @@ static int colo_old_packet_check_one(Packet *pkt,
>> int64_t *check_time)
>> }
>> }
>> +static void colo_compare_inconsistent_notify(void)
>> +{
>>
>
> Not good at English but inconsistency sounds better here.
>
>
Sorry, I'm not good at English too...
I will change to "inconsistency" in next version.
Thanks
Zhang Chen
> Thanks
>
>
> + notifier_list_notify(&colo_compare_notifiers,
>> + migrate_get_current());
>> +}
>> +
>> +void colo_compare_register_notifier(Notifier *notify)
>> +{
>> + notifier_list_add(&colo_compare_notifiers, notify);
>> +}
>> +
>> +void colo_compare_unregister_notifier(Notifier *notify)
>> +{
>> + notifier_remove(notify);
>> +}
>> +
>> static int colo_old_packet_check_one_conn(Connection *conn,
>> - void *user_data)
>> + void *user_data)
>> {
>> GList *result = NULL;
>> int64_t check_time = REGULAR_PACKET_CHECK_MS;
>> @@ -573,10 +593,7 @@ static int colo_old_packet_check_one_conn(Connection
>> *conn,
>> if (result) {
>> /* Do checkpoint will flush old packet */
>> - /*
>> - * TODO: Notify colo frame to do checkpoint.
>> - * colo_compare_inconsistent_notify();
>> - */
>> + colo_compare_inconsistent_notify();
>> return 0;
>> }
>> @@ -620,11 +637,12 @@ static void colo_compare_packet(CompareState *s,
>> Connection *conn,
>> /*
>> * If one packet arrive late, the secondary_list or
>> * primary_list will be empty, so we can't compare it
>> - * until next comparison.
>> + * until next comparison. If the packets in the list are
>> + * timeout, it will trigger a checkpoint request.
>> */
>> trace_colo_compare_main("packet different");
>> g_queue_push_head(&conn->primary_list, pkt);
>> - /* TODO: colo_notify_checkpoint();*/
>> + colo_compare_inconsistent_notify();
>> break;
>> }
>> }
>> diff --git a/net/colo-compare.h b/net/colo-compare.h
>> index 1b1ce76aea..22ddd512e2 100644
>> --- a/net/colo-compare.h
>> +++ b/net/colo-compare.h
>> @@ -18,5 +18,7 @@
>> #define QEMU_COLO_COMPARE_H
>> void colo_notify_compares_event(void *opaque, int event, Error
>> **errp);
>> +void colo_compare_register_notifier(Notifier *notify);
>> +void colo_compare_unregister_notifier(Notifier *notify);
>> #endif /* QEMU_COLO_COMPARE_H */
>>
>
>
- [Qemu-devel] [PATCH V8 00/17] COLO: integrate colo frame with block replication and COLO proxy, Zhang Chen, 2018/06/03
- [Qemu-devel] [PATCH V8 01/17] filter-rewriter: fix memory leak for connection in connection_track_table, Zhang Chen, 2018/06/03
- [Qemu-devel] [PATCH V8 02/17] colo-compare: implement the process of checkpoint, Zhang Chen, 2018/06/03
- [Qemu-devel] [PATCH V8 03/17] colo-compare: use notifier to notify packets comparing result, Zhang Chen, 2018/06/03
- [Qemu-devel] [PATCH V8 04/17] COLO: integrate colo compare with colo frame, Zhang Chen, 2018/06/03
- [Qemu-devel] [PATCH V8 05/17] COLO: Add block replication into colo process, Zhang Chen, 2018/06/03
- [Qemu-devel] [PATCH V8 06/17] COLO: Remove colo_state migration struct, Zhang Chen, 2018/06/03
- [Qemu-devel] [PATCH V8 07/17] COLO: Load dirty pages into SVM's RAM cache firstly, Zhang Chen, 2018/06/03
- [Qemu-devel] [PATCH V8 08/17] ram/COLO: Record the dirty pages that SVM received, Zhang Chen, 2018/06/03
- [Qemu-devel] [PATCH V8 09/17] COLO: Flush memory data from ram cache, Zhang Chen, 2018/06/03
- [Qemu-devel] [PATCH V8 10/17] qmp event: Add COLO_EXIT event to notify users while exited COLO, Zhang Chen, 2018/06/03