Signed-off-by: Simon Rowe <simon.rowe@xxxxxxxxxxx> --- 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