All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Xu <peterx@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, "Kevin Wolf" <kwolf@redhat.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Fam Zheng" <famz@redhat.com>,
	"Eric Auger" <eric.auger@redhat.com>,
	"John Snow" <jsnow@redhat.com>, "Max Reitz" <mreitz@redhat.com>,
	"Christian Borntraeger" <borntraeger@de.ibm.com>,
	"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v3 4/6] docs: mention shared state protect for OOB
Date: Tue, 19 Jun 2018 12:49:09 +0800	[thread overview]
Message-ID: <20180619044909.GH16790@xz-mi> (raw)
In-Reply-To: <87wov02pk2.fsf@dusky.pond.sub.org>

On Fri, Jun 15, 2018 at 02:37:49PM +0200, Markus Armbruster wrote:
> Peter Xu <peterx@redhat.com> writes:
> 
> > Out-Of-Band handlers need to protect shared state if there is any.
> > Mention it in the document.
> >
> > Suggested-by: Markus Armbruster <armbru@redhat.com>
> > Signed-off-by: Peter Xu <peterx@redhat.com>
> > ---
> >  docs/devel/qapi-code-gen.txt | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/docs/devel/qapi-code-gen.txt b/docs/devel/qapi-code-gen.txt
> > index 1366228b2a..bee9de35df 100644
> > --- a/docs/devel/qapi-code-gen.txt
> > +++ b/docs/devel/qapi-code-gen.txt
> > @@ -680,6 +680,9 @@ OOB command handlers must satisfy the following conditions:
>    Under normal QMP command execution, the following apply to each
>    command:
> 
>    - They are executed in order,
>    - They run only in main thread of QEMU,
>    - They have the BQL taken during execution.
> 
> Not this patch's fault, but this sounds awkward.  Perhaps "They run with
> the BQL held."
> 
>    When a command is executed with OOB, the following changes occur:
> 
>    - They can be completed before a pending in-band command,
>    - They run in a dedicated monitor thread,
>    - They do not take the BQL during execution.
> 
> "They run with the BQL not held".
> 
>    OOB command handlers must satisfy the following conditions:
> 
>    - It executes extremely fast,
> 
> "It terminates quickly"
> 
>    - It does not take any lock, or, it can take very small locks if all
>      critical regions also follow the rules for OOB command handler code,
> 
> "It takes only "fast" locks, i.e. all critical sections protected by any
> lock it takes also satisfy the conditions for OOB command handler code."
> Maybe make it the last item.
> 
> >  - It does not invoke system calls that may block,
> >  - It does not access guest RAM that may block when userfaultfd is
> >    enabled for postcopy live migration.
> 
> All these are corollaries of the first item.  But that's okay.
> 
> > +- It needs to protect any shared state, since as long as a command
> > +  supports Out-Of-Band it means the handler can be run in parallel
> > +  with the same handler running in the other thread.
> 
> "in another thread"
> 
> Not just the same handler is a potential problem.  Any code accessing
> shared state from another thread is.
> 
> "It needs" is not really a condition.
> 
> Perhaps we can make this a separate paragraph rather than an additional
> item:
> 
>    The restrictions on locking limit access to shared state.  Such
>    access requires synchronization, but OOB commands can't take the BQL
>    or any other "slow" lock.

Yes this looks good to me.  I'll apply the rest of suggestions in my
next post along with this patch.  I'll touch up the commit message a
bit too.

Thanks,

-- 
Peter Xu

  reply	other threads:[~2018-06-19  4:49 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-15  1:42 [Qemu-devel] [PATCH v3 0/6] monitor: enable OOB by default Peter Xu
2018-06-15  1:42 ` [Qemu-devel] [PATCH v3 1/6] chardev: comment details for CLOSED event Peter Xu
2018-06-15 12:49   ` Markus Armbruster
2018-06-18 15:55   ` Stefan Hajnoczi
2018-06-15  1:42 ` [Qemu-devel] [PATCH v3 2/6] monitor: flush qmp responses when CLOSED Peter Xu
2018-06-15  8:11   ` Markus Armbruster
2018-06-19  4:35     ` Peter Xu
2018-06-19 13:40       ` Markus Armbruster
2018-06-15  1:42 ` [Qemu-devel] [PATCH v3 3/6] tests: iotests: drop some stderr line Peter Xu
2018-06-15  8:13   ` Markus Armbruster
2018-06-19  4:41     ` Peter Xu
2018-06-15  1:42 ` [Qemu-devel] [PATCH v3 4/6] docs: mention shared state protect for OOB Peter Xu
2018-06-15 12:37   ` Markus Armbruster
2018-06-19  4:49     ` Peter Xu [this message]
2018-06-15  1:42 ` [Qemu-devel] [PATCH v3 5/6] monitor: remove "x-oob", turn oob on by default Peter Xu
2018-06-15  1:42 ` [Qemu-devel] [PATCH v3 6/6] Revert "tests: Add parameter to qtest_init_without_qmp_handshake" 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=20180619044909.GH16790@xz-mi \
    --to=peterx@redhat.com \
    --cc=armbru@redhat.com \
    --cc=borntraeger@de.ibm.com \
    --cc=dgilbert@redhat.com \
    --cc=eric.auger@redhat.com \
    --cc=famz@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /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.