[PATCH 08/16] virLogDaemonPostExecRestart: Refactor cleanup

Peter Krempa pkrempa at redhat.com
Fri Dec 3 14:57:35 UTC 2021


Move the unlinking of the state file right after reading it so that we
can get rid of the cleanup section.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/logging/log_daemon.c | 33 ++++++++++++++-------------------
 1 file changed, 14 insertions(+), 19 deletions(-)

diff --git a/src/logging/log_daemon.c b/src/logging/log_daemon.c
index a2a5b5f547..de6bf082e8 100644
--- a/src/logging/log_daemon.c
+++ b/src/logging/log_daemon.c
@@ -436,61 +436,56 @@ virLogDaemonPostExecRestart(const char *state_file,
 {
     const char *gotmagic;
     g_autofree char *wantmagic = NULL;
-    int ret = -1;
     g_autofree char *state = NULL;
     g_autoptr(virJSONValue) object = NULL;
+    int rc;

     VIR_DEBUG("Running post-restart exec");

     if (!virFileExists(state_file)) {
         VIR_DEBUG("No restart state file %s present",
                   state_file);
-        ret = 0;
-        goto cleanup;
+        return 0;
     }

-    if (virFileReadAll(state_file,
-                       1024 * 1024 * 10, /* 10 MB */
-                       &state) < 0)
-        goto cleanup;
+    rc = virFileReadAll(state_file, 1024 * 1024 * 10, /* 10 MB */ &state);
+    unlink(state_file);
+
+    if (rc < 0)
+        return -1;

     VIR_DEBUG("Loading state %s", state);

     if (!(object = virJSONValueFromString(state)))
-        goto cleanup;
+        return -1;

     gotmagic = virJSONValueObjectGetString(object, "magic");
     if (!gotmagic) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("Missing magic data in JSON document"));
-        goto cleanup;
+        return -1;
     }

     if (!(wantmagic = virLogDaemonGetExecRestartMagic()))
-        goto cleanup;
+        return -1;

     if (STRNEQ(gotmagic, wantmagic)) {
         VIR_WARN("Found restart exec file with old magic %s vs wanted %s",
                  gotmagic, wantmagic);
-        ret = 0;
-        goto cleanup;
+        return 0;
     }

     /* Re-claim PID file now as we will not be daemonizing */
     if (pid_file &&
         (*pid_file_fd = virPidFileAcquirePath(pid_file, false, getpid())) < 0)
-        goto cleanup;
+        return -1;

     if (!(logDaemon = virLogDaemonNewPostExecRestart(object,
                                                      privileged,
                                                      config)))
-        goto cleanup;
-
-    ret = 1;
+        return -1;

- cleanup:
-    unlink(state_file);
-    return ret;
+    return 1;
 }


-- 
2.31.1




More information about the libvir-list mailing list