* [Qemu-devel] [RFC PATCH V7 5/7] qemu-char: Fix context for g_source_attach()
@ 2016-07-18 6:22 Zhang Chen
0 siblings, 0 replies; 3+ messages in thread
From: Zhang Chen @ 2016-07-18 6:22 UTC (permalink / raw)
To: qemu devel, Daniel P . Berrange, Paolo Bonzini
Cc: Jason Wang, Zhang Chen, Li Zhijian, Wen Congyang, eddie . dong
We want to poll and handle chardev in another thread
other than main loop. But qemu_chr_add_handlers() can only
work for global default context other than thread default context.
So we use g_source_attach(xx, g_main_context_get_thread_default())
replace g_source_attach(xx, NULL) to attach g_source.
Comments from jason.
Signed-off-by: Zhang Chen <zhangchen.fnst@cn.fujitsu.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
---
io/channel.c | 2 +-
qemu-char.c | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/io/channel.c b/io/channel.c
index 692eb17..cd25677 100644
--- a/io/channel.c
+++ b/io/channel.c
@@ -146,7 +146,7 @@ guint qio_channel_add_watch(QIOChannel *ioc,
g_source_set_callback(source, (GSourceFunc)func, user_data, notify);
- id = g_source_attach(source, NULL);
+ id = g_source_attach(source, g_main_context_get_thread_default());
g_source_unref(source);
return id;
diff --git a/qemu-char.c b/qemu-char.c
index b597ee1..ed7e1f7 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -860,7 +860,7 @@ static gboolean io_watch_poll_prepare(GSource *source, gint *timeout_)
iwp->src = qio_channel_create_watch(
iwp->ioc, G_IO_IN | G_IO_ERR | G_IO_HUP | G_IO_NVAL);
g_source_set_callback(iwp->src, iwp->fd_read, iwp->opaque, NULL);
- g_source_attach(iwp->src, NULL);
+ g_source_attach(iwp->src, g_main_context_get_thread_default());
} else {
g_source_destroy(iwp->src);
g_source_unref(iwp->src);
@@ -919,7 +919,7 @@ static guint io_add_watch_poll(QIOChannel *ioc,
iwp->fd_read = (GSourceFunc) fd_read;
iwp->src = NULL;
- tag = g_source_attach(&iwp->parent, NULL);
+ tag = g_source_attach(&iwp->parent, g_main_context_get_thread_default());
g_source_unref(&iwp->parent);
return tag;
}
@@ -3983,7 +3983,7 @@ int qemu_chr_fe_add_watch(CharDriverState *s, GIOCondition cond,
}
g_source_set_callback(src, (GSourceFunc)func, user_data, NULL);
- tag = g_source_attach(src, NULL);
+ tag = g_source_attach(src, g_main_context_get_thread_default());
g_source_unref(src);
return tag;
--
2.7.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Qemu-devel] [RFC PATCH V7 0/7] Introduce COLO-compare
@ 2016-07-18 7:40 Zhang Chen
2016-07-18 7:40 ` [Qemu-devel] [RFC PATCH V7 5/7] qemu-char: Fix context for g_source_attach() Zhang Chen
0 siblings, 1 reply; 3+ messages in thread
From: Zhang Chen @ 2016-07-18 7:40 UTC (permalink / raw)
To: qemu devel, Jason Wang
Cc: Zhang Chen, Li Zhijian, Wen Congyang, zhanghailiang, eddie . dong,
Dr . David Alan Gilbert
COLO-compare is a part of COLO project. It is used
to compare the network package to help COLO decide
whether to do checkpoint.
The full version in this github:
https://github.com/zhangckid/qemu/tree/colo-v2.7-proxy-mode-compare-with-colo-base-jul18
v7:
p5:
- add [PATCH]qemu-char: Fix context for g_source_attach()
in this patch series.
v6:
p6:
- add more commit log.
- fix icmp comparison to compare all packet.
p5:
- add more cpmments in commit log.
- change REGULAR_CHECK_MS to REGULAR_PACKET_CHECK_MS
- make check old packet independent to compare thread
- remove thread_status
p4:
- change this patch only about
Connection and ConnectionKey.
- add some comments in commit log.
- remove mode in fill_connection_key().
- fix some comments and bug.
- move colo_conn_state to patch of
"work with colo-frame"
- remove conn_list_lock.
- add MAX_QUEUE_SIZE, if primary_list or
secondary_list biger than MAX_QUEUE_SIZE
we will drop packet.
p3:
- add new independent kernel jhash patch.
p2:
- add new independent colo-base patch.
p1:
- add a ascii figure and some comments to explain it
- move trace.h to p2
- move QTAILQ_HEAD(, CompareState) net_compares to
patch of "work with colo-frame"
- add some comments in qemu-option.hx
v5:
p3:
- comments from Jason
we poll and handle chardev in comapre thread,
Through this way, there's no need for extra
synchronization with main loop
this depend on another patch:
qemu-char: Fix context for g_source_attach()
- remove QemuEvent
p2:
- remove conn->list_lock
p1:
- move compare_pri/sec_chr_in to p3
- move compare_chr_send to p2
v4:
p4:
- add some comments
- fix some trace-events
- fix tcp compare error
p3:
- add rcu_read_lock().
- fix trace name
- fix jason's other comments
- rebase some Dave's branch function
p2:
- colo_compare_connection() change g_queue_push_head() to
- g_queue_push_tail() match to sorted order.
- remove pkt->s
- move data structure to colo-base.h
- add colo-base.c reuse codes for filter-rewriter
- add some filter-rewriter needs struct
- depends on previous SocketReadState patch
p1:
- except move qemu_chr_add_handlers()
to colo thread
- remove class_finalize
- remove secondary arp codes
- depends on previous SocketReadState patch
v3:
- rebase colo-compare to colo-frame v2.7
- fix most of Dave's comments
(except RCU)
- add TCP,UDP,ICMP and other packet comparison
- add trace-event
- add some comments
- other bug fix
- add RFC index
- add usage in patch 1/4
v2:
- add jhash.h
v1:
- initial patch
Zhang Chen (7):
colo-compare: introduce colo compare initialization
colo-base: add colo-base to define and handle packet
Jhash: add linux kernel jhashtable in qemu
colo-compare: track connection and enqueue packet
qemu-char: Fix context for g_source_attach()
colo-compare: introduce packet comparison thread
colo-compare: add TCP,UDP,ICMP packet comparison
include/qemu/jhash.h | 61 ++++
io/channel.c | 2 +-
net/Makefile.objs | 2 +
net/colo-base.c | 183 ++++++++++++
net/colo-base.h | 71 +++++
net/colo-compare.c | 769 +++++++++++++++++++++++++++++++++++++++++++++++++++
qemu-char.c | 6 +-
qemu-options.hx | 38 +++
trace-events | 9 +
vl.c | 3 +-
10 files changed, 1139 insertions(+), 5 deletions(-)
create mode 100644 include/qemu/jhash.h
create mode 100644 net/colo-base.c
create mode 100644 net/colo-base.h
create mode 100644 net/colo-compare.c
--
2.7.4
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Qemu-devel] [RFC PATCH V7 5/7] qemu-char: Fix context for g_source_attach()
2016-07-18 7:40 [Qemu-devel] [RFC PATCH V7 0/7] Introduce COLO-compare Zhang Chen
@ 2016-07-18 7:40 ` Zhang Chen
2016-07-18 8:37 ` Daniel P. Berrange
0 siblings, 1 reply; 3+ messages in thread
From: Zhang Chen @ 2016-07-18 7:40 UTC (permalink / raw)
To: qemu devel, Jason Wang
Cc: Zhang Chen, Li Zhijian, Wen Congyang, zhanghailiang, eddie . dong,
Dr . David Alan Gilbert, Daniel P . Berrange, Paolo Bonzini
We want to poll and handle chardev in another thread
other than main loop. But qemu_chr_add_handlers() can only
work for global default context other than thread default context.
So we use g_source_attach(xx, g_main_context_get_thread_default())
replace g_source_attach(xx, NULL) to attach g_source.
Comments from jason.
Cc: Daniel P . Berrange <berrange@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Zhang Chen <zhangchen.fnst@cn.fujitsu.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
---
io/channel.c | 2 +-
qemu-char.c | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/io/channel.c b/io/channel.c
index 692eb17..cd25677 100644
--- a/io/channel.c
+++ b/io/channel.c
@@ -146,7 +146,7 @@ guint qio_channel_add_watch(QIOChannel *ioc,
g_source_set_callback(source, (GSourceFunc)func, user_data, notify);
- id = g_source_attach(source, NULL);
+ id = g_source_attach(source, g_main_context_get_thread_default());
g_source_unref(source);
return id;
diff --git a/qemu-char.c b/qemu-char.c
index b597ee1..ed7e1f7 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -860,7 +860,7 @@ static gboolean io_watch_poll_prepare(GSource *source, gint *timeout_)
iwp->src = qio_channel_create_watch(
iwp->ioc, G_IO_IN | G_IO_ERR | G_IO_HUP | G_IO_NVAL);
g_source_set_callback(iwp->src, iwp->fd_read, iwp->opaque, NULL);
- g_source_attach(iwp->src, NULL);
+ g_source_attach(iwp->src, g_main_context_get_thread_default());
} else {
g_source_destroy(iwp->src);
g_source_unref(iwp->src);
@@ -919,7 +919,7 @@ static guint io_add_watch_poll(QIOChannel *ioc,
iwp->fd_read = (GSourceFunc) fd_read;
iwp->src = NULL;
- tag = g_source_attach(&iwp->parent, NULL);
+ tag = g_source_attach(&iwp->parent, g_main_context_get_thread_default());
g_source_unref(&iwp->parent);
return tag;
}
@@ -3983,7 +3983,7 @@ int qemu_chr_fe_add_watch(CharDriverState *s, GIOCondition cond,
}
g_source_set_callback(src, (GSourceFunc)func, user_data, NULL);
- tag = g_source_attach(src, NULL);
+ tag = g_source_attach(src, g_main_context_get_thread_default());
g_source_unref(src);
return tag;
--
2.7.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [RFC PATCH V7 5/7] qemu-char: Fix context for g_source_attach()
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
0 siblings, 0 replies; 3+ messages in thread
From: Daniel P. Berrange @ 2016-07-18 8:37 UTC (permalink / raw)
To: Zhang Chen
Cc: qemu devel, Jason Wang, Li Zhijian, Wen Congyang, zhanghailiang,
eddie . dong, Dr . David Alan Gilbert, Paolo Bonzini
On Mon, Jul 18, 2016 at 03:40:48PM +0800, Zhang Chen wrote:
> We want to poll and handle chardev in another thread
> other than main loop. But qemu_chr_add_handlers() can only
> work for global default context other than thread default context.
> So we use g_source_attach(xx, g_main_context_get_thread_default())
> replace g_source_attach(xx, NULL) to attach g_source.
> Comments from jason.
>
> Cc: Daniel P . Berrange <berrange@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
>
> Signed-off-by: Zhang Chen <zhangchen.fnst@cn.fujitsu.com>
> Signed-off-by: Jason Wang <jasowang@redhat.com>
> ---
> io/channel.c | 2 +-
> qemu-char.c | 6 +++---
> 2 files changed, 4 insertions(+), 4 deletions(-)
So, on further reflection I'm against adding this patch - please see
my comments against the next patch for why I think this is not needed
nor desirable.
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 :|
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-07-18 8:37 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-18 6:22 [Qemu-devel] [RFC PATCH V7 5/7] qemu-char: Fix context for g_source_attach() Zhang Chen
-- strict thread matches above, loose matches on Subject: below --
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 5/7] qemu-char: Fix context for g_source_attach() Zhang Chen
2016-07-18 8:37 ` Daniel P. Berrange
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).