[PATCHv2] Manually kill gzip if restore fails before starting qemu

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 01/26/2011 07:12 AM, Daniel P. Berrange wrote:
>
> I reckon closing the FD + SIGTERM is sufficient. GZip isn't
> sufficiently complicated that it will hang needing SIGKILL

How about this?

I do notice that these two fd's end up getting closed further down
anyway (even if we've failed, we still waitpid, close the
intermediatefd, then call qemudDomainSaveImageClose() to close fd. So
it's really a matter of timing - is it better to close the fd's
earlier and give gzip a chance to die a more natural death, or is it
okay to just give it one to the head, and clean up the fd's later?


---
 src/qemu/qemu_driver.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index b6a5cd6..23e0db0 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -5770,6 +5770,15 @@ qemudDomainSaveImageStartVM(virConnectPtr conn,
                              VIR_VM_OP_RESTORE);
 
     if (intermediate_pid != -1) {
+        if (ret < 0) {
+            /* if there was an error setting up qemu, the intermediate process will
+             * wait forever to write to stdout, so we must manually kill it.
+             */
+            VIR_FORCE_CLOSE(intermediatefd);
+            VIR_FORCE_CLOSE(fd);
+            kill(intermediate_pid, SIGTERM);
+        }
+
         /* Wait for intermediate process to exit */
         while (waitpid(intermediate_pid, &childstat, 0) == -1 &&
                errno == EINTR) {
-- 
1.7.3.4

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list


[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]