All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Xu <peterx@redhat.com>
To: "Daniel P. Berrange" <berrange@redhat.com>
Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	qemu-devel@nongnu.org, Stefan Hajnoczi <shajnocz@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>, Fam Zheng <famz@redhat.com>,
	Juan Quintela <quintela@redhat.com>,
	mdroth@linux.vnet.ibm.com, Eric Blake <eblake@redhat.com>,
	Laurent Vivier <lvivier@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	marcandre.lureau@redhat.com
Subject: Re: [Qemu-devel] [RFC v4 09/27] monitor: create monitor dedicate iothread
Date: Fri, 24 Nov 2017 15:36:42 +0800	[thread overview]
Message-ID: <20171124073642.GD10471@xz-mi> (raw)
In-Reply-To: <20171123105308.GF8166@redhat.com>

On Thu, Nov 23, 2017 at 10:53:08AM +0000, Daniel P. Berrange wrote:
> On Thu, Nov 23, 2017 at 10:51:43AM +0000, Dr. David Alan Gilbert wrote:
> > * Dr. David Alan Gilbert (dgilbert@redhat.com) wrote:
> > > * Peter Xu (peterx@redhat.com) wrote:
> > > > Create one IOThread for the monitors, prepared to handle all the
> > > > input/output IOs using existing iothread framework.
> > > > 
> > > > Signed-off-by: Peter Xu <peterx@redhat.com>
> > > > ---
> > > >  monitor.c | 29 +++++++++++++++++++++++++++++
> > > >  1 file changed, 29 insertions(+)
> > > > 
> > > > diff --git a/monitor.c b/monitor.c
> > > > index a70ab5606b..4ce9828fab 100644
> > > > --- a/monitor.c
> > > > +++ b/monitor.c
> > > > @@ -76,6 +76,7 @@
> > > >  #include "qmp-introspect.h"
> > > >  #include "sysemu/qtest.h"
> > > >  #include "sysemu/cpus.h"
> > > > +#include "sysemu/iothread.h"
> > > >  #include "qemu/cutils.h"
> > > >  #include "qapi/qmp/dispatch.h"
> > > >  
> > > > @@ -208,6 +209,12 @@ struct Monitor {
> > > >      QTAILQ_ENTRY(Monitor) entry;
> > > >  };
> > > >  
> > > > +struct MonitorGlobal {
> > > > +    IOThread *mon_iothread;
> > > > +};
> > > > +
> > > > +static struct MonitorGlobal mon_global;
> > > > +
> > > >  /* QMP checker flags */
> > > >  #define QMP_ACCEPT_UNKNOWNS 1
> > > >  
> > > > @@ -4034,12 +4041,24 @@ static void sortcmdlist(void)
> > > >      qsort((void *)info_cmds, array_num, elem_size, compare_mon_cmd);
> > > >  }
> > > >  
> > > > +static GMainContext *monitor_io_context_get(void)
> > > > +{
> > > > +    return iothread_get_g_main_context(mon_global.mon_iothread);
> > > > +}
> > > > +
> > > > +static void monitor_iothread_init(void)
> > > > +{
> > > > +    mon_global.mon_iothread = iothread_create("monitor_iothread",
> > > > +                                              &error_abort);
> > > 
> > > That name is one character too long for pthread_setname_np that it
> > > ends up being passed too (it's 16 char including the terminator);
> > > that probably means the thread ends up unnamed.  I suggest
> > > you make it "mon_iothread"

Will do.

> > > 
> > > > +}
> > > > +
> > > >  void monitor_init_globals(void)
> > > >  {
> > > >      monitor_init_qmp_commands();
> > > >      monitor_qapi_event_init();
> > > >      sortcmdlist();
> > > >      qemu_mutex_init(&monitor_lock);
> > > > +    monitor_iothread_init();
> > > >  }
> > > >  
> > > >  /* These functions just adapt the readline interface in a typesafe way.  We
> > > > @@ -4117,6 +4136,13 @@ void monitor_cleanup(void)
> > > >  {
> > > >      Monitor *mon, *next;
> > > >  
> > > > +    /*
> > > > +     * We need to explicitly stop the iothread (but not destroy it),
> > > > +     * cleanup the monitor resources, then destroy the iothread.  See
> > > > +     * again on the glib bug mentioned in 2b316774f6 for a reason.
> > > 
> > > I wonder if that bug is still live?   2b316774f6 says that:
> > >    'glib developers found and fixed the deadlock as part of implementing
> > > child sources.'
> > >    but doesn't say which glib version that was fixed in; we have
> > > increased the minimum glib version we support since 2013, so maybe...
> > 
> > Paolo says it wasn't fixed until 2.28 and we still allow 2.22 ; so a
> > little way before we can declare that one dead.
> 
> Please update the comment to mention that we can remove the hack
> in 2.28, since I bet we'll forget about this by the time that time
> comes :=)

Yes worth a comment!

Thanks all.

-- 
Peter Xu

  reply	other threads:[~2017-11-24  7:37 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-16 13:05 [Qemu-devel] [RFC v4 00/27] QMP: out-of-band (OOB) execution support Peter Xu
2017-11-16 13:05 ` [Qemu-devel] [RFC v4 01/27] qobject: introduce qstring_get_try_str() Peter Xu
2017-11-16 13:05 ` [Qemu-devel] [RFC v4 02/27] qobject: introduce qobject_get_try_str() Peter Xu
2017-11-16 13:05 ` [Qemu-devel] [RFC v4 03/27] qobject: let object_property_get_str() use new API Peter Xu
2017-11-16 13:05 ` [Qemu-devel] [RFC v4 04/27] monitor: move skip_flush into monitor_data_init Peter Xu
2017-11-16 13:05 ` [Qemu-devel] [RFC v4 05/27] qjson: add "opaque" field to JSONMessageParser Peter Xu
2017-11-16 13:05 ` [Qemu-devel] [RFC v4 06/27] monitor: move the cur_mon hack deeper for QMP Peter Xu
2017-11-16 13:05 ` [Qemu-devel] [RFC v4 07/27] monitor: unify global init Peter Xu
2017-11-16 13:05 ` [Qemu-devel] [RFC v4 08/27] monitor: let mon_list be tail queue Peter Xu
2017-11-16 13:05 ` [Qemu-devel] [RFC v4 09/27] monitor: create monitor dedicate iothread Peter Xu
2017-11-23 10:46   ` Dr. David Alan Gilbert
2017-11-23 10:51     ` Dr. David Alan Gilbert
2017-11-23 10:53       ` Daniel P. Berrange
2017-11-24  7:36         ` Peter Xu [this message]
2017-11-16 13:05 ` [Qemu-devel] [RFC v4 10/27] monitor: allow to use IO thread for parsing Peter Xu
2017-11-16 13:05 ` [Qemu-devel] [RFC v4 11/27] qmp: introduce QMPCapability Peter Xu
2017-11-16 13:05 ` [Qemu-devel] [RFC v4 12/27] qmp: negociate QMP capabilities Peter Xu
2017-11-16 13:05 ` [Qemu-devel] [RFC v4 13/27] qmp: introduce some capability helpers Peter Xu
2017-11-16 13:05 ` [Qemu-devel] [RFC v4 14/27] monitor: introduce monitor_qmp_respond() Peter Xu
2017-11-16 13:05 ` [Qemu-devel] [RFC v4 15/27] monitor: let monitor_{suspend|resume} thread safe Peter Xu
2017-11-23 11:23   ` Dr. David Alan Gilbert
2017-11-24  7:58     ` Peter Xu
2017-11-16 13:05 ` [Qemu-devel] [RFC v4 16/27] monitor: separate QMP parser and dispatcher Peter Xu
2017-11-16 13:06 ` [Qemu-devel] [RFC v4 17/27] qmp: add new event "request-dropped" Peter Xu
2017-11-16 13:06 ` [Qemu-devel] [RFC v4 18/27] monitor: send event when request queue full Peter Xu
2017-11-16 13:06 ` [Qemu-devel] [RFC v4 19/27] qapi: introduce new cmd option "allow-oob" Peter Xu
2017-11-16 13:06 ` [Qemu-devel] [RFC v4 20/27] qmp: support out-of-band (oob) execution Peter Xu
2017-11-16 13:06 ` [Qemu-devel] [RFC v4 21/27] qmp: let migrate-incoming allow out-of-band Peter Xu
2017-11-24 13:14   ` Dr. David Alan Gilbert
2017-11-27  5:20     ` Peter Xu
2017-11-27 10:44       ` Dr. David Alan Gilbert
2017-11-27 10:54         ` Peter Xu
2017-11-27 11:04           ` Dr. David Alan Gilbert
2017-11-27 11:26             ` Peter Xu
2017-11-16 13:06 ` [Qemu-devel] [RFC v4 22/27] qmp: isolate responses into io thread Peter Xu
2017-11-16 13:06 ` [Qemu-devel] [RFC v4 23/27] monitor: enable IO thread for (qmp & !mux) typed Peter Xu
2017-11-24 11:01   ` Dr. David Alan Gilbert
2017-11-27  3:00     ` Peter Xu
2017-11-16 13:06 ` [Qemu-devel] [RFC v4 24/27] qmp: add command "x-oob-test" Peter Xu
2017-11-16 13:06 ` [Qemu-devel] [RFC v4 25/27] docs: update QMP documents for OOB commands Peter Xu
2017-11-16 13:06 ` [Qemu-devel] [RFC v4 26/27] tests: qmp-test: verify command batching Peter Xu
2017-11-16 13:06 ` [Qemu-devel] [RFC v4 27/27] tests: qmp-test: add oob test Peter Xu

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=20171124073642.GD10471@xz-mi \
    --to=peterx@redhat.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=eblake@redhat.com \
    --cc=famz@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=shajnocz@redhat.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.