diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-11-23 07:01:51 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-11-23 07:01:51 +0000 |
commit | 2a9c410269bb1907fd1549a992e4c631f8efbad0 (patch) | |
tree | d7cfe02baa1dd3d10e9c851021f48ce87d5be95f /tools/flask/libflask | |
parent | af7af769b97af63b70e38b607dc389d1b689e8bc (diff) | |
download | xen-2a9c410269bb1907fd1549a992e4c631f8efbad0.tar.gz xen-2a9c410269bb1907fd1549a992e4c631f8efbad0.tar.bz2 xen-2a9c410269bb1907fd1549a992e4c631f8efbad0.zip |
libxenlight: check for early failures of qemu-dm
This patch makes xl create check whether qemu-dm has started
correctly, and causes it to fail immediately with appropriate errors
if not. There are other bugfixes too.
More specifically:
* libxl_create_device_model forks twice rather than once so that the
process which calls libxl does not end up being the actual parent
of qemu. That avoids the need for the qemu-dm process to be reaped
at some indefinite time in the future.
* The first fork generates an intermediate process which is
responsible for writing the qemu-dm pid to xenstore and then merely
waits to collect and report on qemu-dm's exit status during
startup. New arguments to libxl_create_device_model allow the
preservation of its pid so that a later call can check whether the
startup is successful.
* The core of this functionality (the double fork, waitpid, signal
handling and so forth) is abstracted away into a new facility
libxl_spawn_... in libxl_exec.c.
Consequential changes:
* libxl_wait_for_device_model now takes a callback function parameter
which is called repeatedly in the loop iteration and allows the
caller to abort the wait.
* libxl_exec no longer calls fork; there is a new libxl_fork.
* There is a hook to override waitpid, which will be necessary for
some callers.
Remaining problems and other issues I noticed or we found:
* The error handling is rather inconsistent still and lacking in
places.
* destroy_device_model can kill random dom0 processes (!)
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Diffstat (limited to 'tools/flask/libflask')
0 files changed, 0 insertions, 0 deletions