> On September 25, 2018 at 12:31 PM Peter Xu <pet...@redhat.com> wrote:
> 
> 
> On Tue, Sep 25, 2018 at 10:15:07AM +0200, Wolfgang Bumiller wrote:
> > Commit d32749deb615 moved the call to monitor_init_globals()
> > to before os_daemonize(), making it an unsuitable place to
> > spawn the monitor iothread as it won't be inherited over the
> > fork() in os_daemonize().
> > 
> > We now spawn the thread the first time we instantiate a
> > monitor which actually has use_io_thread == true.
> > Instantiation of monitors happens only after os_daemonize().
> > We still need to create the qmp_dispatcher_bh when not using
> > iothreads, so this now still happens in
> > monitor_init_globals().
> > 
> > Signed-off-by: Wolfgang Bumiller <w.bumil...@proxmox.com>
> > Fixes: d32749deb615 ("monitor: move init global earlier")
> 
> Reviewed-by: Peter Xu <pet...@redhat.com>
> Tested-by: Peter Xu <pet...@redhat.com>
> 
> Though note that after this patch monitor_data_init() is not thread
> safe any more (while it was), so we may need to be careful...

Is there a way to create monitors concurrently? If so, we could
add a mutex initialized in monitor_globals_init().

Another way would be to only defer to after os_daemonize() but still
stick to spawning the thread unconditionally. (Iow. call
monitor_iothread_init() after os_daemonize() from vl.c.)


Reply via email to