[PATCHv2 2/2] qemu: check unlink hint from virQEMUFileOpenAs()

Simon Rowe simon.rowe at nutanix.com
Mon Aug 23 15:40:48 UTC 2021


Signed-off-by: Simon Rowe <simon.rowe at nutanix.com>
---
 src/qemu/qemu_driver.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

Changes from v1:
 * only unlink if virQEMUFileOpenAs() created the file

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 444e9e5cbc..6e83d7e068 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -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;
 }
-- 
2.22.3




More information about the libvir-list mailing list