[PATCH 06/16] virLockDaemonPostExecRestart: Refactor cleanup

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


Move the unlinking of the state file earlier and get rid of the cleanup
label.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/locking/lock_daemon.c | 36 +++++++++++++++++-------------------
 1 file changed, 17 insertions(+), 19 deletions(-)

diff --git a/src/locking/lock_daemon.c b/src/locking/lock_daemon.c
index 1edd912c3e..107fb22bc2 100644
--- a/src/locking/lock_daemon.c
+++ b/src/locking/lock_daemon.c
@@ -608,59 +608,57 @@ virLockDaemonPostExecRestart(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 = virLockDaemonGetExecRestartMagic()))
-        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 (!(lockDaemon = virLockDaemonNewPostExecRestart(object, privileged)))
-        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