On Wed, May 15, 2013 at 4:10 PM, Stefan Hajnoczi <stefa...@redhat.com> wrote: > On Tue, May 07, 2013 at 01:46:48PM +0800, Liu Ping Fan wrote: >> summary: >> patch1: GSource event abstraction >> patch2~6: port network backend to glib >> patch7~10: make network core re-entrant >> patch11~14: port the slirp backend onto glib >> >> The slirp->lock's deadlock problem has been eliminated and works fine. >> And other components seems more stable, so I change from RFCv- to v- >> >> >> >> >> rfcv5->v1: >> 1. re-arrange logic for net/socket.c >> >> rfcv4->rfcv5: >> 1.use GList to reimplement EventsGSource >> 2.make readable()/writable() return events which the backend is interested >> in >> 3.fix the slirp->lock's potential deadlock issue >> >> rfcv3->rfcv4: >> 1.separate GSource event to dedicated file >> 2.integrated with net core re-entrant >> 3.make slirp/ re-entrant >> >> rfcv2->rfcv3: >> 1.drop hub and the frontend(virtio net) >> 2.split the patch for NetClientSource >> >> rfcv1->rfcv2: >> 1.NetClientState can associate with up to 2 GSource, for virtio net, one >> for tx, one for rx, >> so vq can run on different threads. >> 2.make network front-end onto glib, currently virtio net dataplane >> >> >> >> Liu Ping Fan (14): >> util: introduce gsource event abstraction >> net: introduce bind_ctx to NetClientInfo >> net: port vde onto GSource >> net: port socket to GSource >> net: port tap onto GSource >> net: port tap-win32 onto GSource >> net: hub use lock to protect ports list >> net: introduce lock to protect NetQueue >> net: introduce lock to protect NetClientState's peer's access >> net: make netclient re-entrant with refcnt >> slirp: make timeout local >> slirp: make slirp event dispatch based on slirp instance, not global >> slirp: handle race condition >> slirp: use lock to protect the slirp_instances >> >> hw/qdev-properties-system.c | 14 + >> include/net/net.h | 12 + >> include/qemu/module.h | 2 + >> main-loop.c | 4 - >> net/hub.c | 28 ++- >> net/net.c | 123 ++++++++- >> net/queue.c | 15 +- >> net/slirp.c | 35 +++- >> net/socket.c | 194 +++++++++++--- >> net/tap-win32.c | 31 ++- >> net/tap.c | 64 ++++- >> net/vde.c | 31 ++- >> slirp/if.c | 57 +++- >> slirp/libslirp.h | 7 +- >> slirp/main.h | 3 +- >> slirp/mbuf.h | 2 + >> slirp/slirp.c | 670 >> ++++++++++++++++++++++--------------------- >> slirp/slirp.h | 11 +- >> slirp/socket.c | 2 + >> slirp/socket.h | 1 + >> stubs/slirp.c | 8 - >> util/Makefile.objs | 1 + >> util/event_gsource.c | 157 ++++++++++ >> util/event_gsource.h | 49 ++++ >> 24 files changed, 1105 insertions(+), 416 deletions(-) >> create mode 100644 util/event_gsource.c >> create mode 100644 util/event_gsource.h > > Hi Ping Fan, > Sorry for the slow review, I'm focussing on QEMU 1.5 at the moment but > will look at this series soon. > Thank you very much :) And as mentioned, please skip patch2~6: port network backend to glib. I think mdroth method is better than mind, will port onto his.
Regards, Pingfan > Stefan