]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Always use iohelper for dumping domain core
authorJiri Denemark <jdenemar@redhat.com>
Mon, 6 Feb 2012 13:53:24 +0000 (14:53 +0100)
committerJiri Denemark <jdenemar@redhat.com>
Wed, 8 Feb 2012 10:26:20 +0000 (11:26 +0100)
Qemu uses non-blocking I/O which doesn't play nice with regular file
descriptors. We need to pass a pipe to qemu instead, which can easily be
done using iohelper.

src/qemu/qemu_driver.c

index 99da3f23af9434da80e1f0d1fd82b0be4eea4d24..52350f26f85522a79a46a03ac51b54a6c22f0fa7 100644 (file)
@@ -2943,9 +2943,11 @@ doCoreDump(struct qemud_driver *driver,
     int ret = -1;
     virFileWrapperFdPtr wrapperFd = NULL;
     int directFlag = 0;
+    unsigned int flags = VIR_FILE_WRAPPER_NON_BLOCKING;
 
     /* Create an empty file with appropriate ownership.  */
     if (bypass_cache) {
+        flags |= VIR_FILE_WRAPPER_BYPASS_CACHE;
         directFlag = virFileDirectFdFlag();
         if (directFlag < 0) {
             qemuReportError(VIR_ERR_OPERATION_FAILED, "%s",
@@ -2961,9 +2963,7 @@ doCoreDump(struct qemud_driver *driver,
                            NULL, NULL)) < 0)
         goto cleanup;
 
-    if (bypass_cache &&
-        !(wrapperFd = virFileWrapperFdNew(&fd, path,
-                                          VIR_FILE_WRAPPER_BYPASS_CACHE)))
+    if (!(wrapperFd = virFileWrapperFdNew(&fd, path, flags)))
         goto cleanup;
 
     if (qemuMigrationToFile(driver, vm, fd, 0, path,