From ceeaa000473ddb72db453f7e38943b961ca16c22 Mon Sep 17 00:00:00 2001 Message-ID: From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Wed, 8 Jan 2025 17:37:03 +0000 Subject: [PATCH] util: don't attempt to acquire logind inhibitor if not requested MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When VIR_INHIBITOR_WHAT_NONE is passed to virInhibitorNew, it is an indication that daemon shutdown should be inhibited, but no OS level inhibitors acquired. This is done by the virtnetworkd daemon, for example, to prevent shutdown while running virtual machines are present, without blocking / delaying OS shutdown. Unfortunately the code forgot to skip the DBus call in this case, resulting in errors being logged. Reviewed-by: Laine Stump Signed-off-by: Daniel P. Berrangé (cherry picked from commit caa10431cdd1aa476637ff721f1947c4e0b53da1) Resolves: https://issues.redhat.com/browse/RHEL-83064 --- src/util/virinhibitor.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/util/virinhibitor.c b/src/util/virinhibitor.c index 647bdc9fbb..a95021de5a 100644 --- a/src/util/virinhibitor.c +++ b/src/util/virinhibitor.c @@ -152,7 +152,7 @@ virInhibitor *virInhibitorNew(virInhibitorWhat what, virInhibitor *inhibitor = g_new0(virInhibitor, 1); inhibitor->fd = -1; - inhibitor->what = virInhibitorWhatFormat(what); + inhibitor->what = what ? virInhibitorWhatFormat(what) : NULL; inhibitor->who = g_strdup(who); inhibitor->why = g_strdup(why); inhibitor->mode = virInhibitorModeTypeToString(mode); @@ -171,7 +171,8 @@ void virInhibitorHold(virInhibitor *inhibitor) inhibitor->action(true, inhibitor->actionData); } #ifdef G_OS_UNIX - if (virInhibitorAcquire( + if (inhibitor->what && + virInhibitorAcquire( inhibitor->what, inhibitor->who, inhibitor->why, inhibitor->mode, &inhibitor->fd) < 0) { VIR_ERROR(_("Failed to acquire inhibitor: %1$s"), -- 2.49.0