All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: Hanna Reitz <hreitz@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
	Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
	Eduardo Habkost <ehabkost@redhat.com>,
	qemu-block@nongnu.org, qemu-devel <qemu-devel@nongnu.org>,
	Cleber Rosa <crosa@redhat.com>
Subject: Re: [PATCH 09/15] python/machine: remove has_quit argument
Date: Fri, 17 Sep 2021 19:12:51 -0400	[thread overview]
Message-ID: <CAFn=p-Yo3=D5uCEE4_mN9BAuO_8ALe4rSOzZmU6Lt85okUk+8A@mail.gmail.com> (raw)
In-Reply-To: <f39831de-afc1-3152-777d-ec4af76c087e@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 3368 bytes --]

On Fri, Sep 17, 2021 at 9:59 AM Hanna Reitz <hreitz@redhat.com> wrote:

> On 17.09.21 07:40, John Snow wrote:
> > If we spy on the QMP commands instead, we don't need callers to remember
> > to pass it. Seems like a fair trade-off.
> >
> > The one slightly weird bit is overloading this instance variable for
> > wait(), where we use it to mean "don't issue the qmp 'quit'
> > command". This means that wait() will "fail" if the QEMU process does
> > not terminate of its own accord.
> >
> > In most cases, we probably did already actually issue quit -- some
> > iotests do this -- but in some others, we may be waiting for QEMU to
> > terminate for some other reason.
> >
> > Signed-off-by: John Snow <jsnow@redhat.com>
> > ---
> >   python/qemu/machine/machine.py | 35 +++++++++++++++++++---------------
> >   tests/qemu-iotests/040         |  7 +------
> >   tests/qemu-iotests/218         |  2 +-
> >   tests/qemu-iotests/255         |  2 +-
> >   4 files changed, 23 insertions(+), 23 deletions(-)
>
> Looks good overall, some bikeshedding below.
>
> > diff --git a/python/qemu/machine/machine.py
> b/python/qemu/machine/machine.py
> > index 056d340e35..6e58d2f951 100644
> > --- a/python/qemu/machine/machine.py
> > +++ b/python/qemu/machine/machine.py
> > @@ -170,6 +170,7 @@ def __init__(self,
> >           self._console_socket: Optional[socket.socket] = None
> >           self._remove_files: List[str] = []
> >           self._user_killed = False
> > +        self._has_quit = False
>
> Sounds a bit weird, because evidently it has quit.
>
> I mean, it was always more of a has_sent_quit or quit_issued, but now it
> really seems a bit wrong.
>
>
"quit_issued" seems like it might help overall, I'll do that.


> [...]
>
> > @@ -529,7 +526,9 @@ def wait(self, timeout: Optional[int] = 30) -> None:
> >           :param timeout: Optional timeout in seconds. Default 30
> seconds.
> >                           A value of `None` is an infinite wait.
> >           """
> > -        self.shutdown(has_quit=True, timeout=timeout)
> > +        # In case QEMU was stopped without issuing 'quit':
>
> This comment confused me more than anything and only looking at the
> function’s name and doc string was I able to understand why we have
> has_quit = True here, and only by scratching my head asking myself why
> you’d write the comment did I understand the comment’s purpose.
>
> What isn’t quite clear in the comment is that we kind of expect
> _has_quit to already be True, because the VM was probably exited with
> `quit`.  But we don’t know for sure, so we have to force _has_quit to True.
>
> But it’s also not necessary to explain, I think.  The idea is simply
> that this function should do nothing to make the VM quit, so it’s
> absolutely natural that we’d set _has_quit to True, because the caller
> guarantees that they already made the VM quit.  No need to explain why
> this might already be True, and why it’s still OK.
>
> So I’d just say something like “Do not send a `quit` to the VM, just
> wait for it to exit”.
>
>
I'll just drop the comment, then.


> Hanna
>
> > +        self._has_quit = True
> > +        self.shutdown(timeout=timeout)
> >
> >       def set_qmp_monitor(self, enabled: bool = True) -> None:
> >           """
>
>

[-- Attachment #2: Type: text/html, Size: 4553 bytes --]

  reply	other threads:[~2021-09-17 23:14 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-17  5:40 [PATCH 00/15] Switch iotests to using Async QMP John Snow
2021-09-17  5:40 ` [PATCH 01/15] python/aqmp: add greeting property to QMPClient John Snow
2021-09-17 12:20   ` Hanna Reitz
2021-09-17  5:40 ` [PATCH 02/15] python/aqmp: add .empty() method to EventListener John Snow
2021-09-17 12:25   ` Hanna Reitz
2021-09-17  5:40 ` [PATCH 03/15] python/aqmp: Return cleared events from EventListener.clear() John Snow
2021-09-17 12:36   ` Hanna Reitz
2021-09-17 17:19     ` John Snow
2021-10-04  9:03       ` Hanna Reitz
2021-09-17  5:40 ` [PATCH 04/15] python/qmp: clear events on get_events() call John Snow
2021-09-17 12:51   ` Hanna Reitz
2021-09-17 17:31     ` John Snow
2021-09-17  5:40 ` [PATCH 05/15] python/qmp: add send_fd_scm directly to QEMUMonitorProtocol John Snow
2021-09-17 13:21   ` Hanna Reitz
2021-09-17 17:36     ` John Snow
2021-09-17  5:40 ` [PATCH 06/15] python, iotests: remove socket_scm_helper John Snow
2021-09-17 13:24   ` Hanna Reitz
2021-09-17  5:40 ` [PATCH 07/15] python/aqmp: add send_fd_scm John Snow
2021-09-17 13:34   ` Hanna Reitz
2021-09-17 18:05     ` John Snow
2021-09-17  5:40 ` [PATCH 08/15] python/aqmp: Create MessageModel and StandaloneModel classes John Snow
2021-09-17 13:39   ` Hanna Reitz
2021-09-17 19:21     ` John Snow
2021-09-17  5:40 ` [PATCH 09/15] python/machine: remove has_quit argument John Snow
2021-09-17 13:59   ` Hanna Reitz
2021-09-17 23:12     ` John Snow [this message]
2021-09-17  5:40 ` [PATCH 10/15] python/machine: Add support for AQMP backend John Snow
2021-09-17 14:16   ` Hanna Reitz
2021-09-17 23:48     ` John Snow
2021-10-04  9:43       ` Hanna Reitz
2021-09-17  5:40 ` [PATCH 11/15] python/aqmp: Create sync QMP wrapper for iotests John Snow
2021-09-17 14:23   ` Hanna Reitz
2021-09-18  0:01     ` John Snow
2021-09-17  5:40 ` [PATCH 12/15] iotests: Disable AQMP logging under non-debug modes John Snow
2021-09-17 14:30   ` Hanna Reitz
2021-09-18  0:58     ` John Snow
2021-09-18  2:14       ` John Snow
2021-10-04 10:12         ` Hanna Reitz
2021-10-04 18:32           ` John Snow
2021-10-04 21:26             ` John Snow
2021-10-05 15:12             ` Hanna Reitz
2021-10-04  9:52       ` Hanna Reitz
2021-09-17  5:40 ` [PATCH 13/15] iotests: Accommodate async QMP Exception classes John Snow
2021-09-17 14:35   ` Hanna Reitz
2021-09-18  1:12     ` John Snow
2021-09-17  5:40 ` [PATCH 14/15] python/aqmp: Remove scary message John Snow
2021-09-17 14:38   ` Hanna Reitz
2021-09-17 15:15     ` John Snow
2021-09-17  5:40 ` [PATCH 15/15] python, iotests: replace qmp with aqmp John Snow
2021-09-17 14:40   ` Hanna Reitz
2021-09-17 14:55     ` John Snow

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='CAFn=p-Yo3=D5uCEE4_mN9BAuO_8ALe4rSOzZmU6Lt85okUk+8A@mail.gmail.com' \
    --to=jsnow@redhat.com \
    --cc=crosa@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=hreitz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=vsementsov@virtuozzo.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.