From nobody Wed Nov 5 16:43:32 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496671071359854.9988753506697; Mon, 5 Jun 2017 06:57:51 -0700 (PDT) Received: from localhost ([::1]:33531 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHsVx-0001R3-Pp for importer@patchew.org; Mon, 05 Jun 2017 09:57:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45932) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHpWN-0003lB-EU for qemu-devel@nongnu.org; Mon, 05 Jun 2017 06:46:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHpWK-0003z3-3r for qemu-devel@nongnu.org; Mon, 05 Jun 2017 06:46:03 -0400 Received: from out1.zte.com.cn ([202.103.147.172]:60914) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHpWH-0003uU-UL for qemu-devel@nongnu.org; Mon, 05 Jun 2017 06:46:00 -0400 Received: from unknown (HELO mse01.zte.com.cn) (10.30.3.20) by localhost with (AES256-SHA encrypted) SMTP; 5 Jun 2017 10:31:18 -0000 Received: from notes_smtp.zte.com.cn ([10.30.1.239]) by mse01.zte.com.cn with ESMTP id v55Ajf9k020064; Mon, 5 Jun 2017 18:45:41 +0800 (GMT-8) (envelope-from wang.yong155@zte.com.cn) Received: from localhost.localdomain ([10.74.120.79]) by szsmtp06.zte.com.cn (Lotus Domino Release 8.5.3FP6) with ESMTP id 2017060518454377-785059 ; Mon, 5 Jun 2017 18:45:43 +0800 X-scanvirus: By SEG_CYREN AntiVirus Engine X-scanresult: CLEAN X-MAILFROM: X-RCPTTO: X-FROMIP: 10.30.3.20 X-SEG-Scaned: 1 X-Received: unknown,10.30.3.20,20170605183118 From: Yong Wang To: zhang.zhanghailiang@huawei.com, jasowang@redhat.com, zhangchen.fnst@cn.fujitsu.com Date: Mon, 5 Jun 2017 18:44:50 +0800 Message-Id: <1496659493-1105-2-git-send-email-wang.yong155@zte.com.cn> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1496659493-1105-1-git-send-email-wang.yong155@zte.com.cn> References: <1496659493-1105-1-git-send-email-wang.yong155@zte.com.cn> X-MIMETrack: Itemize by SMTP Server on SZSMTP06/server/zte_ltd(Release 8.5.3FP6|November 21, 2013) at 2017-06-05 18:45:43, Serialize by Router on notes_smtp/zte_ltd(Release 8.5.3FP6|November 21, 2013) at 2017-06-05 18:45:40, Serialize complete at 2017-06-05 18:45:40 X-MAIL: mse01.zte.com.cn v55Ajf9k020064 X-HQIP: 127.0.0.1 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x [fuzzy] X-Received-From: 202.103.147.172 X-Mailman-Approved-At: Mon, 05 Jun 2017 09:54:36 -0400 Subject: [Qemu-devel] [PATCHv2 01/04] colo-compare: Use IOThread context timer to Check old packet regularly X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: wang.guang55@zte.com.cn, qemu-devel@nongnu.org, lizhijian@cn.fujitsu.com, wang.yong155@zte.com.cn Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Wang Yong Remove the task which check old packet in the comparing thread, then use IOthread context timer to handle it. Signed-off-by: Wang Yong Signed-off-by: Wang Guang --- net/colo-compare.c | 62 +++++++++++++++++++++++++++++++++++++++++++-------= ---- 1 file changed, 50 insertions(+), 12 deletions(-) diff --git a/net/colo-compare.c b/net/colo-compare.c index 2639c7f..b0942a4 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -29,6 +29,7 @@ #include "qemu/sockets.h" #include "qapi-visit.h" #include "net/colo.h" +#include "sysemu/iothread.h" =20 #define TYPE_COLO_COMPARE "colo-compare" #define COLO_COMPARE(obj) \ @@ -86,6 +87,12 @@ typedef struct CompareState { =20 GMainContext *worker_context; GMainLoop *compare_loop; + + /*compare iothread*/ + IOThread *iothread; + /*iothread context*/ + AioContext *ctx; + QEMUTimer *packet_check_timer; } CompareState; =20 typedef struct CompareClass { @@ -570,20 +577,37 @@ static void compare_sec_chr_in(void *opaque, const ui= nt8_t *buf, int size) * Check old packet regularly so it can watch for any packets * that the secondary hasn't produced equivalents of. */ -static gboolean check_old_packet_regular(void *opaque) +static void check_old_packet_regular(void *opaque) { CompareState *s =3D opaque; =20 /* if have old packet we will notify checkpoint */ colo_old_packet_check(s); + timer_mod(s->packet_check_timer, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL)= + + REGULAR_PACKET_CHECK_MS); +} =20 - return TRUE; +static void colo_compare_timer_init(CompareState *s) +{ + s->packet_check_timer =3D aio_timer_new(s->ctx, QEMU_CLOCK_VIRTUAL, + SCALE_MS, check_old_packet_regular, + s); + timer_mod(s->packet_check_timer, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL)= + + REGULAR_PACKET_CHECK_MS); +} + +static void colo_compare_timer_del(CompareState *s) +{ + if (s->packet_check_timer) { + timer_del(s->packet_check_timer); + timer_free(s->packet_check_timer); + s->packet_check_timer =3D NULL; + } } =20 static void *colo_compare_thread(void *opaque) { CompareState *s =3D opaque; - GSource *timeout_source; =20 s->worker_context =3D g_main_context_new(); =20 @@ -594,20 +618,21 @@ static void *colo_compare_thread(void *opaque) =20 s->compare_loop =3D g_main_loop_new(s->worker_context, FALSE); =20 - /* To kick any packets that the secondary doesn't match */ - timeout_source =3D g_timeout_source_new(REGULAR_PACKET_CHECK_MS); - g_source_set_callback(timeout_source, - (GSourceFunc)check_old_packet_regular, s, NULL); - g_source_attach(timeout_source, s->worker_context); - g_main_loop_run(s->compare_loop); =20 - g_source_unref(timeout_source); g_main_loop_unref(s->compare_loop); g_main_context_unref(s->worker_context); return NULL; } =20 +static void colo_compare_iothread(CompareState *s) +{ + object_ref(OBJECT(s->iothread)); + s->ctx =3D iothread_get_aio_context(s->iothread); + + colo_compare_timer_init(s); +} + static char *compare_get_pri_indev(Object *obj, Error **errp) { CompareState *s =3D COLO_COMPARE(obj); @@ -714,9 +739,9 @@ static void colo_compare_complete(UserCreatable *uc, Er= ror **errp) char thread_name[64]; static int compare_id; =20 - if (!s->pri_indev || !s->sec_indev || !s->outdev) { + if (!s->pri_indev || !s->sec_indev || !s->outdev || !s->iothread) { error_setg(errp, "colo compare needs 'primary_in' ," - "'secondary_in','outdev' property set"); + "'secondary_in','outdev','iothread' property set"); return; } else if (!strcmp(s->pri_indev, s->outdev) || !strcmp(s->sec_indev, s->outdev) || @@ -757,6 +782,8 @@ static void colo_compare_complete(UserCreatable *uc, Er= ror **errp) QEMU_THREAD_JOINABLE); compare_id++; =20 + colo_compare_iothread(s); + return; } =20 @@ -786,6 +813,8 @@ static void colo_compare_class_init(ObjectClass *oc, vo= id *data) =20 static void colo_compare_init(Object *obj) { + CompareState *s =3D COLO_COMPARE(obj); + object_property_add_str(obj, "primary_in", compare_get_pri_indev, compare_set_pri_indev, NULL); @@ -795,6 +824,10 @@ static void colo_compare_init(Object *obj) object_property_add_str(obj, "outdev", compare_get_outdev, compare_set_outdev, NULL); + object_property_add_link(obj, "iothread", TYPE_IOTHREAD, + (Object **)&s->iothread, + object_property_allow_set_link, + OBJ_PROP_LINK_UNREF_ON_RELEASE, NULL); } =20 static void colo_compare_finalize(Object *obj) @@ -806,6 +839,7 @@ static void colo_compare_finalize(Object *obj) qemu_chr_fe_set_handlers(&s->chr_sec_in, NULL, NULL, NULL, NULL, s->worker_context, true); qemu_chr_fe_deinit(&s->chr_out); + colo_compare_timer_del(s); =20 g_main_loop_quit(s->compare_loop); qemu_thread_join(&s->thread); @@ -816,6 +850,10 @@ static void colo_compare_finalize(Object *obj) g_queue_clear(&s->conn_list); =20 g_hash_table_destroy(s->connection_track_table); + + if (s->iothread) { + object_unref(OBJECT(s->iothread)); + } g_free(s->pri_indev); g_free(s->sec_indev); g_free(s->outdev); --=20 1.8.3.1 From nobody Wed Nov 5 16:43:32 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149667129665117.315987791670977; Mon, 5 Jun 2017 07:01:36 -0700 (PDT) Received: from localhost ([::1]:33584 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHsZY-0000pB-Rg for importer@patchew.org; Mon, 05 Jun 2017 10:01:32 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45928) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHpWN-0003l1-7t for qemu-devel@nongnu.org; Mon, 05 Jun 2017 06:46:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHpWI-0003yM-Hn for qemu-devel@nongnu.org; Mon, 05 Jun 2017 06:46:03 -0400 Received: from out1.zte.com.cn ([202.103.147.172]:60907) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHpWH-0003wA-Mk for qemu-devel@nongnu.org; Mon, 05 Jun 2017 06:45:58 -0400 Received: from unknown (HELO mse01.zte.com.cn) (10.30.3.20) by localhost with (AES256-SHA encrypted) SMTP; 5 Jun 2017 10:31:18 -0000 Received: from notes_smtp.zte.com.cn ([10.30.1.239]) by mse01.zte.com.cn with ESMTP id v55AjfXU020067; Mon, 5 Jun 2017 18:45:41 +0800 (GMT-8) (envelope-from wang.yong155@zte.com.cn) Received: from localhost.localdomain ([10.74.120.79]) by szsmtp06.zte.com.cn (Lotus Domino Release 8.5.3FP6) with ESMTP id 2017060518454424-785060 ; Mon, 5 Jun 2017 18:45:44 +0800 X-scanvirus: By SEG_CYREN AntiVirus Engine X-scanresult: CLEAN X-MAILFROM: X-RCPTTO: X-FROMIP: 10.30.3.20 X-SEG-Scaned: 1 X-Received: unknown,10.30.3.20,20170605183118 From: Yong Wang To: zhang.zhanghailiang@huawei.com, jasowang@redhat.com, zhangchen.fnst@cn.fujitsu.com Date: Mon, 5 Jun 2017 18:44:51 +0800 Message-Id: <1496659493-1105-3-git-send-email-wang.yong155@zte.com.cn> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1496659493-1105-1-git-send-email-wang.yong155@zte.com.cn> References: <1496659493-1105-1-git-send-email-wang.yong155@zte.com.cn> X-MIMETrack: Itemize by SMTP Server on SZSMTP06/server/zte_ltd(Release 8.5.3FP6|November 21, 2013) at 2017-06-05 18:45:44, Serialize by Router on notes_smtp/zte_ltd(Release 8.5.3FP6|November 21, 2013) at 2017-06-05 18:45:41, Serialize complete at 2017-06-05 18:45:41 X-MAIL: mse01.zte.com.cn v55AjfXU020067 X-HQIP: 127.0.0.1 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x [fuzzy] X-Received-From: 202.103.147.172 X-Mailman-Approved-At: Mon, 05 Jun 2017 09:54:36 -0400 Subject: [Qemu-devel] [PATCHv2 02/04] colo-compare: Process pactkets in the IOThread of the primary X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: wang.guang55@zte.com.cn, qemu-devel@nongnu.org, lizhijian@cn.fujitsu.com, wang.yong155@zte.com.cn Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Wang Yong Process pactkets in the IOThread which arrived over the socket. we use qio_channel_set_aio_fd_handler to set the handlers on the IOThread AioContext.then the packets from the primary and the secondary are processed in the IOThread. Finally remove the colo-compare thread using the IOThread instead. Signed-off-by: Wang Yong Signed-off-by: Wang Guang --- net/colo-compare.c | 133 ++++++++++++++++++++++++++++++++++++-------------= ---- net/colo.h | 1 + 2 files changed, 91 insertions(+), 43 deletions(-) diff --git a/net/colo-compare.c b/net/colo-compare.c index b0942a4..e3af791 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -29,6 +29,7 @@ #include "qemu/sockets.h" #include "qapi-visit.h" #include "net/colo.h" +#include "io/channel.h" #include "sysemu/iothread.h" =20 #define TYPE_COLO_COMPARE "colo-compare" @@ -82,11 +83,6 @@ typedef struct CompareState { GQueue conn_list; /* hashtable to save connection */ GHashTable *connection_track_table; - /* compare thread, a thread for each NIC */ - QemuThread thread; - - GMainContext *worker_context; - GMainLoop *compare_loop; =20 /*compare iothread*/ IOThread *iothread; @@ -95,6 +91,14 @@ typedef struct CompareState { QEMUTimer *packet_check_timer; } CompareState; =20 +typedef struct { + Chardev parent; + QIOChannel *ioc; /*I/O channel */ +} CompareChardev; + +#define COMPARE_CHARDEV(obj) \ + OBJECT_CHECK(CompareChardev, (obj), TYPE_CHARDEV_SOCKET) + typedef struct CompareClass { ObjectClass parent_class; } CompareClass; @@ -107,6 +111,12 @@ enum { static int compare_chr_send(CharBackend *out, const uint8_t *buf, uint32_t size); +static void compare_chr_set_aio_fd_handlers(CharBackend *b, + AioContext *ctx, + IOCanReadHandler *fd_can_read, + IOReadHandler *fd_read, + IOEventHandler *fd_event, + void *opaque); =20 static gint seq_sorter(Packet *a, Packet *b, gpointer data) { @@ -534,6 +544,30 @@ err: return ret < 0 ? ret : -EIO; } =20 +static void compare_chr_read(void *opaque) +{ + Chardev *chr =3D opaque; + uint8_t buf[CHR_READ_BUF_LEN]; + int len, size; + int max_size; + + max_size =3D qemu_chr_be_can_write(chr); + if (max_size <=3D 0) { + return; + } + + len =3D sizeof(buf); + if (len > max_size) { + len =3D max_size; + } + size =3D CHARDEV_GET_CLASS(chr)->chr_sync_read(chr, (void *)buf, len); + if (size =3D=3D 0) { + return; + } else if (size > 0) { + qemu_chr_be_write(chr, buf, size); + } +} + static int compare_chr_can_read(void *opaque) { return COMPARE_READ_LEN_MAX; @@ -550,8 +584,8 @@ static void compare_pri_chr_in(void *opaque, const uint= 8_t *buf, int size) =20 ret =3D net_fill_rstate(&s->pri_rs, buf, size); if (ret =3D=3D -1) { - qemu_chr_fe_set_handlers(&s->chr_pri_in, NULL, NULL, NULL, - NULL, NULL, true); + compare_chr_set_aio_fd_handlers(&s->chr_pri_in, s->ctx, + NULL, NULL, NULL, NULL); error_report("colo-compare primary_in error"); } } @@ -567,8 +601,8 @@ static void compare_sec_chr_in(void *opaque, const uint= 8_t *buf, int size) =20 ret =3D net_fill_rstate(&s->sec_rs, buf, size); if (ret =3D=3D -1) { - qemu_chr_fe_set_handlers(&s->chr_sec_in, NULL, NULL, NULL, - NULL, NULL, true); + compare_chr_set_aio_fd_handlers(&s->chr_sec_in, s->ctx, + NULL, NULL, NULL, NULL); error_report("colo-compare secondary_in error"); } } @@ -605,34 +639,57 @@ static void colo_compare_timer_del(CompareState *s) } } =20 -static void *colo_compare_thread(void *opaque) -{ - CompareState *s =3D opaque; - - s->worker_context =3D g_main_context_new(); - - qemu_chr_fe_set_handlers(&s->chr_pri_in, compare_chr_can_read, - compare_pri_chr_in, NULL, s, s->worker_context, = true); - qemu_chr_fe_set_handlers(&s->chr_sec_in, compare_chr_can_read, - compare_sec_chr_in, NULL, s, s->worker_context, = true); - - s->compare_loop =3D g_main_loop_new(s->worker_context, FALSE); - - g_main_loop_run(s->compare_loop); - - g_main_loop_unref(s->compare_loop); - g_main_context_unref(s->worker_context); - return NULL; -} =20 static void colo_compare_iothread(CompareState *s) { object_ref(OBJECT(s->iothread)); s->ctx =3D iothread_get_aio_context(s->iothread); =20 + compare_chr_set_aio_fd_handlers(&s->chr_pri_in, s->ctx, + compare_chr_can_read, + compare_pri_chr_in, + NULL, + s); + compare_chr_set_aio_fd_handlers(&s->chr_sec_in, s->ctx, + compare_chr_can_read, + compare_sec_chr_in, + NULL, + s); + colo_compare_timer_init(s); } =20 +static void compare_chr_set_aio_fd_handlers(CharBackend *b, + AioContext *ctx, + IOCanReadHandler *fd_can_read, + IOReadHandler *fd_read, + IOEventHandler *fd_event, + void *opaque) +{ + CompareChardev *s; + + if (!b->chr) { + return; + } + s =3D COMPARE_CHARDEV(b->chr); + if (!s->ioc) { + return; + } + + b->chr_can_read =3D fd_can_read; + b->chr_read =3D fd_read; + b->chr_event =3D fd_event; + b->opaque =3D opaque; + remove_fd_in_watch(b->chr); + + if (b->chr_read) { + qio_channel_set_aio_fd_handler(s->ioc, ctx, + compare_chr_read, NULL, b->chr); + } else { + qio_channel_set_aio_fd_handler(s->ioc, ctx, NULL, NULL, NULL); + } +} + static char *compare_get_pri_indev(Object *obj, Error **errp) { CompareState *s =3D COLO_COMPARE(obj); @@ -736,8 +793,6 @@ static void colo_compare_complete(UserCreatable *uc, Er= ror **errp) { CompareState *s =3D COLO_COMPARE(uc); Chardev *chr; - char thread_name[64]; - static int compare_id; =20 if (!s->pri_indev || !s->sec_indev || !s->outdev || !s->iothread) { error_setg(errp, "colo compare needs 'primary_in' ," @@ -776,12 +831,6 @@ static void colo_compare_complete(UserCreatable *uc, E= rror **errp) g_free, connection_destroy); =20 - sprintf(thread_name, "colo-compare %d", compare_id); - qemu_thread_create(&s->thread, thread_name, - colo_compare_thread, s, - QEMU_THREAD_JOINABLE); - compare_id++; - colo_compare_iothread(s); =20 return; @@ -834,16 +883,14 @@ static void colo_compare_finalize(Object *obj) { CompareState *s =3D COLO_COMPARE(obj); =20 - qemu_chr_fe_set_handlers(&s->chr_pri_in, NULL, NULL, NULL, NULL, - s->worker_context, true); - qemu_chr_fe_set_handlers(&s->chr_sec_in, NULL, NULL, NULL, NULL, - s->worker_context, true); + compare_chr_set_aio_fd_handlers(&s->chr_pri_in, s->ctx, + NULL, NULL, NULL, NULL); + compare_chr_set_aio_fd_handlers(&s->chr_sec_in, s->ctx, + NULL, NULL, NULL, NULL); + qemu_chr_fe_deinit(&s->chr_out); colo_compare_timer_del(s); =20 - g_main_loop_quit(s->compare_loop); - qemu_thread_join(&s->thread); - /* Release all unhandled packets after compare thead exited */ g_queue_foreach(&s->conn_list, colo_flush_packets, s); =20 diff --git a/net/colo.h b/net/colo.h index 7c524f3..936dea1 100644 --- a/net/colo.h +++ b/net/colo.h @@ -84,5 +84,6 @@ Connection *connection_get(GHashTable *connection_track_t= able, void connection_hashtable_reset(GHashTable *connection_track_table); Packet *packet_new(const void *data, int size); void packet_destroy(void *opaque, void *user_data); +void remove_fd_in_watch(Chardev *chr); =20 #endif /* QEMU_COLO_PROXY_H */ --=20 1.8.3.1 From nobody Wed Nov 5 16:43:32 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496670993722805.307159101556; Mon, 5 Jun 2017 06:56:33 -0700 (PDT) Received: from localhost ([::1]:33525 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHsUi-0008PV-3m for importer@patchew.org; Mon, 05 Jun 2017 09:56:32 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45930) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHpWN-0003l9-EK for qemu-devel@nongnu.org; Mon, 05 Jun 2017 06:46:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHpWJ-0003yf-As for qemu-devel@nongnu.org; Mon, 05 Jun 2017 06:46:03 -0400 Received: from out1.zte.com.cn ([202.103.147.172]:60921) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHpWI-0003vF-N0 for qemu-devel@nongnu.org; Mon, 05 Jun 2017 06:45:59 -0400 Received: from unknown (HELO mse01.zte.com.cn) (10.30.3.20) by localhost with (AES256-SHA encrypted) SMTP; 5 Jun 2017 10:31:20 -0000 Received: from notes_smtp.zte.com.cn ([10.30.1.239]) by mse01.zte.com.cn with ESMTP id v55AjgC8020080; Mon, 5 Jun 2017 18:45:42 +0800 (GMT-8) (envelope-from wang.yong155@zte.com.cn) Received: from localhost.localdomain ([10.74.120.79]) by szsmtp06.zte.com.cn (Lotus Domino Release 8.5.3FP6) with ESMTP id 2017060518454469-785061 ; Mon, 5 Jun 2017 18:45:44 +0800 X-scanvirus: By SEG_CYREN AntiVirus Engine X-scanresult: CLEAN X-MAILFROM: X-RCPTTO: X-FROMIP: 10.30.3.20 X-SEG-Scaned: 1 X-Received: unknown,10.30.3.20,20170605183120 From: Yong Wang To: zhang.zhanghailiang@huawei.com, jasowang@redhat.com, zhangchen.fnst@cn.fujitsu.com Date: Mon, 5 Jun 2017 18:44:52 +0800 Message-Id: <1496659493-1105-4-git-send-email-wang.yong155@zte.com.cn> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1496659493-1105-1-git-send-email-wang.yong155@zte.com.cn> References: <1496659493-1105-1-git-send-email-wang.yong155@zte.com.cn> X-MIMETrack: Itemize by SMTP Server on SZSMTP06/server/zte_ltd(Release 8.5.3FP6|November 21, 2013) at 2017-06-05 18:45:44, Serialize by Router on notes_smtp/zte_ltd(Release 8.5.3FP6|November 21, 2013) at 2017-06-05 18:45:41, Serialize complete at 2017-06-05 18:45:41 X-MAIL: mse01.zte.com.cn v55AjgC8020080 X-HQIP: 127.0.0.1 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x [fuzzy] X-Received-From: 202.103.147.172 X-Mailman-Approved-At: Mon, 05 Jun 2017 09:54:36 -0400 Subject: [Qemu-devel] [PATCHv2 03/04] colo-compare: Update the COLO document to add the IOThread configuration X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: wang.guang55@zte.com.cn, qemu-devel@nongnu.org, lizhijian@cn.fujitsu.com, wang.yong155@zte.com.cn Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Wang Yong Update colo-proxy.txt,add IOThread configuration. Later we have to configure IOThread,if not COLO can not work. Signed-off-by: Wang Yong Signed-off-by: Wang Guang --- docs/colo-proxy.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/colo-proxy.txt b/docs/colo-proxy.txt index c4941de..ce3f783 100644 --- a/docs/colo-proxy.txt +++ b/docs/colo-proxy.txt @@ -170,10 +170,11 @@ Primary(ip:3.3.3.3): -chardev socket,id=3Dcompare0-0,host=3D3.3.3.3,port=3D9001 -chardev socket,id=3Dcompare_out,host=3D3.3.3.3,port=3D9005,server,nowait -chardev socket,id=3Dcompare_out0,host=3D3.3.3.3,port=3D9005 +-object iothread,id=3Diothread1 -object filter-mirror,id=3Dm0,netdev=3Dhn0,queue=3Dtx,outdev=3Dmirror0 -object filter-redirector,netdev=3Dhn0,id=3Dredire0,queue=3Drx,indev=3Dcom= pare_out -object filter-redirector,netdev=3Dhn0,id=3Dredire1,queue=3Drx,outdev=3Dco= mpare0 --object colo-compare,id=3Dcomp0,primary_in=3Dcompare0-0,secondary_in=3Dcom= pare1,outdev=3Dcompare_out0 +-object colo-compare,id=3Dcomp0,primary_in=3Dcompare0-0,secondary_in=3Dcom= pare1,outdev=3Dcompare_out0,iothread=3Diothread1 =20 Secondary(ip:3.3.3.8): -netdev tap,id=3Dhn0,vhost=3Doff,script=3D/etc/qemu-ifup,down script=3D/et= c/qemu-ifdown --=20 1.8.3.1 From nobody Wed Nov 5 16:43:32 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496671166860110.64556493359635; Mon, 5 Jun 2017 06:59:26 -0700 (PDT) Received: from localhost ([::1]:33535 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHsXV-0003Fh-Ir for importer@patchew.org; Mon, 05 Jun 2017 09:59:25 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45953) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHpWP-0003mm-VQ for qemu-devel@nongnu.org; Mon, 05 Jun 2017 06:46:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHpWL-000403-B9 for qemu-devel@nongnu.org; Mon, 05 Jun 2017 06:46:06 -0400 Received: from mxhk.zte.com.cn ([63.217.80.70]:37696) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHpWK-0003yW-MJ for qemu-devel@nongnu.org; Mon, 05 Jun 2017 06:46:01 -0400 Received: from unknown (HELO mse01.zte.com.cn) (10.30.3.20) by localhost with (AES256-SHA encrypted) SMTP; 5 Jun 2017 10:40:22 -0000 Received: from notes_smtp.zte.com.cn ([10.30.1.239]) by mse01.zte.com.cn with ESMTP id v55AjgJM020081; Mon, 5 Jun 2017 18:45:42 +0800 (GMT-8) (envelope-from wang.yong155@zte.com.cn) Received: from localhost.localdomain ([10.74.120.79]) by szsmtp06.zte.com.cn (Lotus Domino Release 8.5.3FP6) with ESMTP id 2017060518454516-785062 ; Mon, 5 Jun 2017 18:45:45 +0800 X-scanvirus: By SEG_CYREN AntiVirus Engine X-scanresult: CLEAN X-MAILFROM: X-RCPTTO: X-FROMIP: 10.30.3.20 X-SEG-Scaned: 1 X-Received: unknown,10.30.3.20,20170605184022 From: Yong Wang To: zhang.zhanghailiang@huawei.com, jasowang@redhat.com, zhangchen.fnst@cn.fujitsu.com Date: Mon, 5 Jun 2017 18:44:53 +0800 Message-Id: <1496659493-1105-5-git-send-email-wang.yong155@zte.com.cn> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1496659493-1105-1-git-send-email-wang.yong155@zte.com.cn> References: <1496659493-1105-1-git-send-email-wang.yong155@zte.com.cn> X-MIMETrack: Itemize by SMTP Server on SZSMTP06/server/zte_ltd(Release 8.5.3FP6|November 21, 2013) at 2017-06-05 18:45:45, Serialize by Router on notes_smtp/zte_ltd(Release 8.5.3FP6|November 21, 2013) at 2017-06-05 18:45:42, Serialize complete at 2017-06-05 18:45:42 X-MAIL: mse01.zte.com.cn v55AjgJM020081 X-HQIP: 127.0.0.1 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x [fuzzy] X-Received-From: 63.217.80.70 X-Mailman-Approved-At: Mon, 05 Jun 2017 09:54:36 -0400 Subject: [Qemu-devel] [PATCHv2 04/04] colo-compare: Update the COLO document to fix the processing of secondary packets in the main thread X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: wang.guang55@zte.com.cn, qemu-devel@nongnu.org, lizhijian@cn.fujitsu.com, wang.yong155@zte.com.cn Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Wang Yong In my test, secondary does not process the packets comparing in the IOThread but in the qemu main thread processing. secondary's configuration " -chardev socket,id=3Dcompare1,host=3D3.3.3.3,po= rt=3D9004,server,nowait" here,we should use 'wait' instead of 'nowait' configuration . after use 'wait' configuration ,packets can be process in the IOThread fro= m the secondary, not in the qemu main thread. Signed-off-by: Wang Yong Signed-off-by: Wang Guang --- docs/colo-proxy.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/colo-proxy.txt b/docs/colo-proxy.txt index ce3f783..567cc8b 100644 --- a/docs/colo-proxy.txt +++ b/docs/colo-proxy.txt @@ -165,7 +165,7 @@ Primary(ip:3.3.3.3): -netdev tap,id=3Dhn0,vhost=3Doff,script=3D/etc/qemu-ifup,downscript=3D/etc= /qemu-ifdown -device e1000,id=3De0,netdev=3Dhn0,mac=3D52:a4:00:12:78:66 -chardev socket,id=3Dmirror0,host=3D3.3.3.3,port=3D9003,server,nowait --chardev socket,id=3Dcompare1,host=3D3.3.3.3,port=3D9004,server,nowait +-chardev socket,id=3Dcompare1,host=3D3.3.3.3,port=3D9004,server,wait -chardev socket,id=3Dcompare0,host=3D3.3.3.3,port=3D9001,server,nowait -chardev socket,id=3Dcompare0-0,host=3D3.3.3.3,port=3D9001 -chardev socket,id=3Dcompare_out,host=3D3.3.3.3,port=3D9005,server,nowait --=20 1.8.3.1