From: "Daniel P. Berrange" <berrange@redhat.com>
To: Zhang Chen <zhangchen.fnst@cn.fujitsu.com>
Cc: qemu devel <qemu-devel@nongnu.org>,
Jason Wang <jasowang@redhat.com>,
Li Zhijian <lizhijian@cn.fujitsu.com>,
"eddie . dong" <eddie.dong@intel.com>,
"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
zhanghailiang <zhang.zhanghailiang@huawei.com>
Subject: Re: [Qemu-devel] [RFC PATCH V7 6/7] colo-compare: introduce packet comparison thread
Date: Mon, 18 Jul 2016 09:37:02 +0100 [thread overview]
Message-ID: <20160718083702.GI1670@redhat.com> (raw)
In-Reply-To: <1468827650-17234-7-git-send-email-zhangchen.fnst@cn.fujitsu.com>
On Mon, Jul 18, 2016 at 03:40:49PM +0800, Zhang Chen wrote:
> If primary packet is same with secondary packet,
> we will send primary packet and drop secondary
> packet, otherwise notify COLO frame to do checkpoint.
> If primary packet comes and secondary packet not,
> after REGULAR_PACKET_CHECK_MS milliseconds we set
> the primary packet as old_packet,then do a checkpoint.
>
> Signed-off-by: Zhang Chen <zhangchen.fnst@cn.fujitsu.com>
> Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com>
> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
> ---
> net/colo-base.c | 1 +
> net/colo-base.h | 3 +
> net/colo-compare.c | 216 +++++++++++++++++++++++++++++++++++++++++++++++++++++
> trace-events | 2 +
> 4 files changed, 222 insertions(+)
>
> +static void *colo_compare_thread(void *opaque)
> +{
> + GMainContext *worker_context;
> + GMainLoop *compare_loop;
> + CompareState *s = opaque;
> +
> + worker_context = g_main_context_new();
> + g_assert(g_main_context_get_thread_default() == NULL);
> + g_main_context_push_thread_default(worker_context);
> + g_assert(g_main_context_get_thread_default() == worker_context);
> +
> + qemu_chr_add_handlers(s->chr_pri_in, compare_chr_can_read,
> + compare_pri_chr_in, NULL, s);
> + qemu_chr_add_handlers(s->chr_sec_in, compare_chr_can_read,
> + compare_sec_chr_in, NULL, s);
Looking at this I see you've used g_main_context_push_thread_default
in order to avoid having to modify the qemu_chr_add_handlers() method
to accept a GMainContext. Personally I think I'd favour explicit
passing of a GMainContext, rather than modifying Qemu Char code &
QIOChannel to magically use per-thread main context. In particular
I'm concerned that one day other code may use the
g_main_context_push_thread_default method for some other purpose
but still want their char devs handled by the main thread. Your
solution makes this impossible and adds magic which could surprise
us in bad ways.
So I think I'd rather see qemu_chr_add_handlers() modified to accept
a GMainContext, or perhaps add a qemu_chr_add_handlers_full() method
which takes a GMainContext, so we can avoid modifying all existing
callers ofo qemu_chr_add_handlers. There should be no need to modify
QIOChannel at all, since you can use qio_channel_create_watch instead
of qio_channel_add_watch and simply attach to the context you want
directly.
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
next prev parent reply other threads:[~2016-07-18 8:37 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-18 7:40 [Qemu-devel] [RFC PATCH V7 0/7] Introduce COLO-compare Zhang Chen
2016-07-18 7:40 ` [Qemu-devel] [RFC PATCH V7 1/7] colo-compare: introduce colo compare initialization Zhang Chen
2016-07-18 7:40 ` [Qemu-devel] [RFC PATCH V7 2/7] colo-base: add colo-base to define and handle packet Zhang Chen
2016-07-18 7:40 ` [Qemu-devel] [RFC PATCH V7 3/7] Jhash: add linux kernel jhashtable in qemu Zhang Chen
2016-07-18 7:40 ` [Qemu-devel] [RFC PATCH V7 4/7] colo-compare: track connection and enqueue packet Zhang Chen
2016-07-18 7:40 ` [Qemu-devel] [RFC PATCH V7 5/7] qemu-char: Fix context for g_source_attach() Zhang Chen
2016-07-18 8:37 ` Daniel P. Berrange
2016-07-18 7:40 ` [Qemu-devel] [RFC PATCH V7 6/7] colo-compare: introduce packet comparison thread Zhang Chen
2016-07-18 8:37 ` Daniel P. Berrange [this message]
2016-07-19 3:32 ` Zhang Chen
2016-07-19 9:03 ` Daniel P. Berrange
2016-07-20 3:29 ` Zhang Chen
2016-07-18 7:40 ` [Qemu-devel] [RFC PATCH V7 7/7] colo-compare: add TCP, UDP, ICMP packet comparison Zhang Chen
-- strict thread matches above, loose matches on Subject: below --
2016-07-18 6:22 [Qemu-devel] [RFC PATCH V7 6/7] colo-compare: introduce packet comparison thread Zhang Chen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160718083702.GI1670@redhat.com \
--to=berrange@redhat.com \
--cc=dgilbert@redhat.com \
--cc=eddie.dong@intel.com \
--cc=jasowang@redhat.com \
--cc=lizhijian@cn.fujitsu.com \
--cc=qemu-devel@nongnu.org \
--cc=zhang.zhanghailiang@huawei.com \
--cc=zhangchen.fnst@cn.fujitsu.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.