All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Xu <peterx@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>,
	qemu-devel@nongnu.org, "Stefan Hajnoczi" <stefanha@redhat.com>,
	"Dr . David Alan Gilbert" <dgilbert@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v7 4/4] monitor: add lock to protect mon_fdsets
Date: Tue, 29 May 2018 13:51:41 +0800	[thread overview]
Message-ID: <20180529055141.GA25245@xz-mi> (raw)
In-Reply-To: <877ennn6z7.fsf@dusky.pond.sub.org>

On Mon, May 28, 2018 at 05:19:08PM +0200, Markus Armbruster wrote:

[...]

> >> 
> >> > + * Meanwhile it can also be used even at the end of main.  Let's keep
> >> > + * it initialized for the whole lifecycle of QEMU.
> >> > + */
> >> 
> >> Awkward question, since our main() is such a tangled mess, but here goes
> >> anyway...  The existing place to initialize monitor.c's globals is
> >> monitor_init_globals().  But that one runs too late, I guess:
> >> parse_add_fd() runs earlier, and calls monitor_fdset_add_fd().  Unclean
> >> even without this lock; no module should be used before its
> >> initialization function runs.  Sure we can't run monitor_init_globals()
> >> sufficiently early?
> >
> > Please see the comment for monitor_init_globals():
> >
> >     /*
> >      * Note: qtest_enabled() (which is used in monitor_qapi_event_init())
> >      * depends on configure_accelerator() above.
> >      */
> >     monitor_init_globals();
> >
> > So I guess it won't work to directly move it earlier.  The init
> > dependency of QEMU is really complicated.  I'll be fine now that we
> > mark totally independent init functions (like this one, which is a
> > mutex init only) as constructor, then we can save some time on
> > ordering issue.
> 
> Let me rephrase.  There's a preexisting issue: main() calls monitor.c
> functions before calling its initialization function
> monitor_init_globals().  This needs to be cleaned up.  Would you be
> willing to do it?
> 
> Possible solutions:
> 
> * Perhaps we can move monitor_init_globals() up and/or the code calling
>   into monitor.c early down sufficiently.
> 
> * Calculate event_clock_type on each use instead of ahead of time.  It's
>   qtest_enabled ? QEMU_CLOCK_VIRTUAL : QEMU_CLOCK_REALTIME, and neither
>   of its users needs to be fast.  Then move monitor_init_globals before
>   the code calling into monitor.c.

Indeed.  Obviously you thought a step further. :)

> 
> I'm not opposed to use of constructors for self-contained initialization
> (no calls to other modules).  But I don't like initialization spread
> over multiple functions.

Since this work will actually decide where I should init this new
fdset lock, so I'll try to do that altogether within the series.

Thanks for your suggestions!  It makes sense.

-- 
Peter Xu

  reply	other threads:[~2018-05-29  5:51 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-24  4:39 [Qemu-devel] [PATCH v7 0/4] monitor: let Monitor be thread safe Peter Xu
2018-05-24  4:39 ` [Qemu-devel] [PATCH v7 1/4] monitor: rename out_lock to mon_lock Peter Xu
2018-05-24  8:29   ` Markus Armbruster
2018-05-24  8:45     ` Peter Xu
2018-05-24 11:14       ` Markus Armbruster
2018-05-24  4:39 ` [Qemu-devel] [PATCH v7 2/4] monitor: protect mon->fds with mon_lock Peter Xu
2018-05-24  4:39 ` [Qemu-devel] [PATCH v7 3/4] monitor: more comments on lock-free fleids/funcs Peter Xu
2018-05-24  8:08   ` Stefan Hajnoczi
2018-05-24  8:49     ` Peter Xu
2018-05-24  8:41   ` Markus Armbruster
2018-05-24  8:48     ` Peter Xu
2018-05-24 11:16       ` Markus Armbruster
2018-05-28  6:28         ` Peter Xu
2018-05-24  4:39 ` [Qemu-devel] [PATCH v7 4/4] monitor: add lock to protect mon_fdsets Peter Xu
2018-05-24  9:03   ` Markus Armbruster
2018-05-28  7:06     ` Peter Xu
2018-05-28 15:19       ` Markus Armbruster
2018-05-29  5:51         ` Peter Xu [this message]
2018-05-24  9:28   ` Stefan Hajnoczi
2018-05-25  3:30     ` Peter Xu
2018-05-25  9:01       ` Stefan Hajnoczi
2018-05-28  6:29         ` Peter Xu
2018-05-24  4:46 ` [Qemu-devel] [PATCH v7 0/4] monitor: let Monitor be thread safe no-reply

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=20180529055141.GA25245@xz-mi \
    --to=peterx@redhat.com \
    --cc=armbru@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@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.