]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: check unlink hint from virQEMUFileOpenAs()
authorSimon Rowe <simon.rowe@nutanix.com>
Mon, 23 Aug 2021 15:40:48 +0000 (15:40 +0000)
committerMichal Privoznik <mprivozn@redhat.com>
Tue, 24 Aug 2021 14:02:41 +0000 (16:02 +0200)
Signed-off-by: Simon Rowe <simon.rowe@nutanix.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_driver.c

index 444e9e5cbc83be24fda4d5c7dd17576d25d44f33..6e83d7e068b2ed9309c7865bb55afb178d2a5a85 100644 (file)
@@ -3201,6 +3201,7 @@ doCoreDump(virQEMUDriver *driver,
     int rc = -1;
     virFileWrapperFd *wrapperFd = NULL;
     int directFlag = 0;
+    bool needUnlink = false;
     unsigned int flags = VIR_FILE_WRAPPER_NON_BLOCKING;
     const char *memory_dump_format = NULL;
     g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
@@ -3224,12 +3225,9 @@ doCoreDump(virQEMUDriver *driver,
             goto cleanup;
         }
     }
-    /* Core dumps usually imply last-ditch analysis efforts are
-     * desired, so we intentionally do not unlink even if a file was
-     * created.  */
     if ((fd = virQEMUFileOpenAs(cfg->user, cfg->group, false, path,
                              O_CREAT | O_TRUNC | O_WRONLY | directFlag,
-                             NULL)) < 0)
+                             &needUnlink)) < 0)
         goto cleanup;
 
     if (!(wrapperFd = virFileWrapperFdNew(&fd, path, flags)))
@@ -3282,7 +3280,7 @@ doCoreDump(virQEMUDriver *driver,
     if (qemuDomainFileWrapperFDClose(vm, wrapperFd) < 0)
         ret = -1;
     virFileWrapperFdFree(wrapperFd);
-    if (ret != 0)
+    if (ret != 0 && needUnlink)
         unlink(path);
     return ret;
 }