From nobody Wed Mar 18 06:36:53 2026 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; spf=none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1707142688906612.4270956725891; Mon, 5 Feb 2024 06:18:08 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id C72301DC4; Mon, 5 Feb 2024 09:18:07 -0500 (EST) Received: from lists.libvirt.org.85.43.8.in-addr.arpa (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id EA0B31C9F; Mon, 5 Feb 2024 09:14:50 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 5342B187E; Mon, 5 Feb 2024 09:14:22 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 6A08E187A for ; Mon, 5 Feb 2024 09:14:21 -0500 (EST) Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-444-AS2yOqdDPMWHkWil-Vzg4Q-1; Mon, 05 Feb 2024 09:14:19 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 542A738562C8 for ; Mon, 5 Feb 2024 14:14:19 +0000 (UTC) Received: from orkuz (unknown [10.43.3.38]) by smtp.corp.redhat.com (Postfix) with ESMTP id 183C31121312 for ; Mon, 5 Feb 2024 14:14:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.4 X-MC-Unique: AS2yOqdDPMWHkWil-Vzg4Q-1 From: Jiri Denemark To: devel@lists.libvirt.org Subject: [libvirt PATCH v2 1/7] util: Unify virSystemdHas{Machined,Logind} Date: Mon, 5 Feb 2024 15:14:08 +0100 Message-ID: <7b1f6f9972dd48e2476bb4960e15d5c841c68068.1707142194.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.3 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Message-ID-Hash: 3YJXP3CYNMYDUG3N4J2J3DHRREOQGGBU X-Message-ID-Hash: 3YJXP3CYNMYDUG3N4J2J3DHRREOQGGBU X-MailFrom: jdenemar@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1707142689272100001 When checking for machined we do not really care whether systemd itself is running, we just need machined to be either running or socket activated by systemd. That is, exactly the same we do for logind. Signed-off-by: Jiri Denemark Reviewed-by: J=C3=A1n Tomko --- src/util/virsystemd.c | 74 ++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 40 deletions(-) diff --git a/src/util/virsystemd.c b/src/util/virsystemd.c index cd4de0eef8..36820e81fe 100644 --- a/src/util/virsystemd.c +++ b/src/util/virsystemd.c @@ -141,57 +141,35 @@ void virSystemdHasLogindResetCachedValue(void) } =20 =20 -/* -2 =3D machine1 is not supported on this machine - * -1 =3D error - * 0 =3D machine1 is available +/** + * virSystemdHasService: + * + * Check whether a DBus @service is enabled and either the service itself = is + * running or will be started on demand by a running systemd1 service. + * + * Returns + * -2 when service is not supported on this machine + * -1 on error + * 0 when service is available */ -int -virSystemdHasMachined(void) -{ - int ret; - int val; - - val =3D g_atomic_int_get(&virSystemdHasMachinedCachedValue); - if (val !=3D -1) - return val; - - if ((ret =3D virGDBusIsServiceEnabled("org.freedesktop.machine1")) < 0= ) { - if (ret =3D=3D -2) - g_atomic_int_set(&virSystemdHasMachinedCachedValue, -2); - return ret; - } - - if ((ret =3D virGDBusIsServiceRegistered("org.freedesktop.systemd1")) = =3D=3D -1) - return ret; - g_atomic_int_set(&virSystemdHasMachinedCachedValue, ret); - return ret; -} - -int -virSystemdHasLogind(void) +static int +virSystemdHasService(const char *service, + int *cached) { int ret; int val; =20 - val =3D g_atomic_int_get(&virSystemdHasLogindCachedValue); + val =3D g_atomic_int_get(cached); if (val !=3D -1) return val; =20 - ret =3D virGDBusIsServiceEnabled("org.freedesktop.login1"); - if (ret < 0) { + if ((ret =3D virGDBusIsServiceEnabled(service)) < 0) { if (ret =3D=3D -2) - g_atomic_int_set(&virSystemdHasLogindCachedValue, -2); + g_atomic_int_set(cached, -2); return ret; } =20 - /* - * Want to use logind if: - * - logind is already running - * Or - * - logind is not running, but this is a systemd host - * (rely on dbus activation) - */ - if ((ret =3D virGDBusIsServiceRegistered("org.freedesktop.login1")) = =3D=3D -1) + if ((ret =3D virGDBusIsServiceRegistered(service)) =3D=3D -1) return ret; =20 if (ret =3D=3D -2) { @@ -199,11 +177,27 @@ virSystemdHasLogind(void) return ret; } =20 - g_atomic_int_set(&virSystemdHasLogindCachedValue, ret); + g_atomic_int_set(cached, ret); return ret; } =20 =20 +int +virSystemdHasMachined(void) +{ + return virSystemdHasService("org.freedesktop.machine1", + &virSystemdHasMachinedCachedValue); +} + + +int +virSystemdHasLogind(void) +{ + return virSystemdHasService("org.freedesktop.login1", + &virSystemdHasLogindCachedValue); +} + + /** * virSystemdGetMachineByPID: * @conn: dbus connection --=20 2.43.0 _______________________________________________ Devel mailing list -- devel@lists.libvirt.org To unsubscribe send an email to devel-leave@lists.libvirt.org