Skip to content

Commit

Permalink
python/machine.py: Add _early_cleanup hook
Browse files Browse the repository at this point in the history
Some parts of cleanup need to occur prior to shutdown, otherwise
shutdown might break. Move this into a suitably named method/callback.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
Tested-by: Cleber Rosa <crosa@redhat.com>
Message-Id: <20200710050649.32434-4-jsnow@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
  • Loading branch information
jnsnow authored and philmd committed Jul 14, 2020
1 parent 671940e commit e2c97f1
Showing 1 changed file with 12 additions and 6 deletions.
18 changes: 12 additions & 6 deletions python/qemu/machine.py
Expand Up @@ -365,6 +365,17 @@ def _launch(self):
close_fds=False)
self._post_launch()

def _early_cleanup(self) -> None:
"""
Perform any cleanup that needs to happen before the VM exits.
"""
# If we keep the console socket open, we may deadlock waiting
# for QEMU to exit, while QEMU is waiting for the socket to
# become writeable.
if self._console_socket is not None:
self._console_socket.close()
self._console_socket = None

def wait(self):
"""
Wait for the VM to power off
Expand All @@ -376,12 +387,7 @@ def shutdown(self, has_quit=False, hard=False):
"""
Terminate the VM and clean up
"""
# If we keep the console socket open, we may deadlock waiting
# for QEMU to exit, while QEMU is waiting for the socket to
# become writeable.
if self._console_socket is not None:
self._console_socket.close()
self._console_socket = None
self._early_cleanup()

if self.is_running():
if hard:
Expand Down

0 comments on commit e2c97f1

Please sign in to comment.