From nobody Fri Nov 14 17:01:15 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1761830025; cv=none; d=zohomail.com; s=zohoarc; b=Y3LxbTGxq6q+MX7ogD9eYhakZ5h8017Z3P4YyQw4XKRcdl2LisejWMstUwNR0jcdNo2Im6gSDFaf6cD29oJYaFSDgdxM67Jf+2ZOONEZn+bjTHpK9ZDqsZSgB+NOPuJdczbcVc4ZcXHADAQw0Rfl6gBkW/rjZ0nVEXS0UB3VfOA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761830025; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=7yHZZrrUUQSRMnvFRda+HRmPuFvqQu6zL0MvP+J40a4=; b=CLVBu3g4iENLHs5cWTQXcGbcybZTiiX/45g/LgGG/14rDjc40Dxb0DyW06HzN50egmFAer44rpRHK8GYO1LjvakvMXaHeNjYrQk/IseZ7aFe3bwc859dSrIjCnLCwkxrDm1TJ1X7ADbiJDxoS5je931zaFgatMez/k18+FRV8Bw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1761830025573526.0959063265494; Thu, 30 Oct 2025 06:13:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vESSe-0002pd-9e; Thu, 30 Oct 2025 09:13:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vESSa-0002pB-6k for qemu-devel@nongnu.org; Thu, 30 Oct 2025 09:13:00 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vESSQ-000422-JA for qemu-devel@nongnu.org; Thu, 30 Oct 2025 09:12:59 -0400 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-649-u1QshRhOOUGE4KZv8KXyDA-1; Thu, 30 Oct 2025 09:12:45 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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 mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 7EEDD180A238; Thu, 30 Oct 2025 13:12:44 +0000 (UTC) Received: from srv1.redhat.com (unknown [10.44.32.177]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 1F37419560A2; Thu, 30 Oct 2025 13:12:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1761829967; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7yHZZrrUUQSRMnvFRda+HRmPuFvqQu6zL0MvP+J40a4=; b=EbJO8KhXOATgJTPYgsItldrTX2TRVMlfsIqYLt7yBN9ohHVpnujsL/dIUA50BntBGxaf63 GKnhm4hHqTyscARRp2KTIF4qwk7tvwn02t9D4AohCXwRiDjvBM8np85T7bTgxU4pr9GZH9 NHGnoOHKyutZptsQ3FZj8A/BIbEuzaI= X-MC-Unique: u1QshRhOOUGE4KZv8KXyDA-1 X-Mimecast-MFC-AGG-ID: u1QshRhOOUGE4KZv8KXyDA_1761829964 From: Kostiantyn Kostiuk To: qemu-devel@nongnu.org, Peter Maydell , Stefan Hajnoczi Subject: [PULL 1/3] scripts/qemu-guest-agent/fsfreeze-hook: improve script description Date: Thu, 30 Oct 2025 15:12:35 +0200 Message-ID: <20251030131237.181588-2-kkostiuk@redhat.com> In-Reply-To: <20251030131237.181588-1-kkostiuk@redhat.com> References: <20251030131237.181588-1-kkostiuk@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=kkostiuk@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1761830027891154100 Content-Type: text/plain; charset="utf-8" From: Fiona Ebner With the current wording, users might think that the -F option is not required as long as the script is placed in the default path. Be clear that the option is always required. Also includes some minor language improvements in the rest of the comment. Signed-off-by: Fiona Ebner Reviewed-by: Kostiantyn Kostiuk Link: https://lore.kernel.org/qemu-devel/20250916122111.36019-1-f.ebner@pro= xmox.com Signed-off-by: Kostiantyn Kostiuk --- scripts/qemu-guest-agent/fsfreeze-hook | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/scripts/qemu-guest-agent/fsfreeze-hook b/scripts/qemu-guest-ag= ent/fsfreeze-hook index c1feb6f5ce..5b915af017 100755 --- a/scripts/qemu-guest-agent/fsfreeze-hook +++ b/scripts/qemu-guest-agent/fsfreeze-hook @@ -1,11 +1,12 @@ #!/bin/sh =20 -# This script is executed when a guest agent receives fsfreeze-freeze and -# fsfreeze-thaw command, if it is specified in --fsfreeze-hook (-F) -# option of qemu-ga or placed in default path (/etc/qemu/fsfreeze-hook). -# When the agent receives fsfreeze-freeze request, this script is issued w= ith -# "freeze" argument before the filesystem is frozen. And for fsfreeze-thaw -# request, it is issued with "thaw" argument after filesystem is thawed. +# This script is executed when the guest agent receives fsfreeze-freeze and +# fsfreeze-thaw commands, provided that the --fsfreeze-hook (-F) option of +# qemu-ga is specified and the script is placed in /etc/qemu/fsfreeze-hook= or in +# the path specified together with -F. When the agent receives fsfreeze-fr= eeze +# requests, this script is called with "freeze" as its argument before the +# filesystem is frozen. And for fsfreeze-thaw requests, it is called with = "thaw" +# as its argument after the filesystem is thawed. =20 LOGFILE=3D/var/log/qga-fsfreeze-hook.log FSFREEZE_D=3D$(dirname -- "$0")/fsfreeze-hook.d --=20 2.51.1.dirty From nobody Fri Nov 14 17:01:15 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1761830030; cv=none; d=zohomail.com; s=zohoarc; b=B++A3n4/TDHaQLHRm6UNF4OLyyk9wlMJYPflP9G4d59Rnaz+BBhkYmR6QUSiEVNa8RlaDfipn53f/w8618L+VdJqWhHPQts71Ge18C1mqkW6xzSm+RV7jz3mnSzDLgAy4oa0ffDfeE6DJlXIYm5vHd4bNje1MwKR2NmJ6+fWduY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761830030; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=gkoA3YsVieJ39X7yH0tf5BNJWyWdw4oJTh4BHGL0NJI=; b=ca+MDB6XLm/2KIch5lR5BjiTUwjuo5xXajbuOuSfSNxgdcHM2B6mZaon2gV3P1duMYJREoRUjJdiBzRJxEBKlLQWO3ySYH3SNMi99bcTwOFCx6FIWwBqxutQxjwT73g0d+jnQyBe/zbJNYbL9CafwUUWWaeh4Vk3YTqKME7m3PY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176183003051013.941377276616208; Thu, 30 Oct 2025 06:13:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vESSg-0002q3-8K; Thu, 30 Oct 2025 09:13:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vESSY-0002oa-Qj for qemu-devel@nongnu.org; Thu, 30 Oct 2025 09:12:59 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vESSS-000427-DU for qemu-devel@nongnu.org; Thu, 30 Oct 2025 09:12:58 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-76-k8Owl24oPiqoXgovV0y3fA-1; Thu, 30 Oct 2025 09:12:47 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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 mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 830A71954B17; Thu, 30 Oct 2025 13:12:46 +0000 (UTC) Received: from srv1.redhat.com (unknown [10.44.32.177]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 21BA219560A2; Thu, 30 Oct 2025 13:12:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1761829969; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gkoA3YsVieJ39X7yH0tf5BNJWyWdw4oJTh4BHGL0NJI=; b=hrSW1zq4c68MO+n1mmGCweMWd4HqOu3x807Js//vzNpoRq+Z7z+Tnxu0/a1H3CNEne5C0n fx2KS5kGP9i7HNCHA38icMaaAcfpcftRvdGZlR1DTMZtiFivCBq+dKgPPNPVs1Q4Qc07Kv EHTlfjcSkXSZkg8vuMg8EjQ7127h8GA= X-MC-Unique: k8Owl24oPiqoXgovV0y3fA-1 X-Mimecast-MFC-AGG-ID: k8Owl24oPiqoXgovV0y3fA_1761829966 From: Kostiantyn Kostiuk To: qemu-devel@nongnu.org, Peter Maydell , Stefan Hajnoczi Subject: [PULL 2/3] qga: Improve Windows filesystem space info retrieval logic Date: Thu, 30 Oct 2025 15:12:36 +0200 Message-ID: <20251030131237.181588-3-kkostiuk@redhat.com> In-Reply-To: <20251030131237.181588-1-kkostiuk@redhat.com> References: <20251030131237.181588-1-kkostiuk@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=kkostiuk@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1761830031676154100 Content-Type: text/plain; charset="utf-8" From: "minglei.liu" Previously, disk space reporting only worked for volumes with drive letters, skipping those without (e.g. System Reserved). This change always calls GetDiskFreeSpaceEx with fs->name, which is a volume GUID path. Windows APIs accept both drive letters (e.g. "C:\") and volume GUIDs (e.g. "\\?\Volume{GUID}\") as valid lpDirectoryName parameters, so space reporting is now consistent across all volumes. Reference: https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file Signed-off-by: minglei.liu Reviewed-by: Kostiantyn Kostiuk Link: https://lore.kernel.org/qemu-devel/20250923113243.78244-1-minglei.liu= @smartx.com Signed-off-by: Kostiantyn Kostiuk --- qga/commands-win32.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/qga/commands-win32.c b/qga/commands-win32.c index 8227480810..acc2c11589 100644 --- a/qga/commands-win32.c +++ b/qga/commands-win32.c @@ -1164,15 +1164,15 @@ static GuestFilesystemInfo *build_guest_fsinfo(char= *guid, Error **errp) fs->mountpoint =3D g_strdup("System Reserved"); } else { fs->mountpoint =3D g_strndup(mnt_point, len); - if (GetDiskFreeSpaceEx(fs->mountpoint, - (PULARGE_INTEGER) & i64FreeBytesToCaller, - (PULARGE_INTEGER) & i64TotalBytes, - (PULARGE_INTEGER) & i64FreeBytes)) { - fs->used_bytes =3D i64TotalBytes - i64FreeBytes; - fs->total_bytes =3D i64TotalBytes; - fs->has_total_bytes =3D true; - fs->has_used_bytes =3D true; - } + } + if (GetDiskFreeSpaceEx(fs->name, + (PULARGE_INTEGER) & i64FreeBytesToCaller, + (PULARGE_INTEGER) & i64TotalBytes, + (PULARGE_INTEGER) & i64FreeBytes)) { + fs->used_bytes =3D i64TotalBytes - i64FreeBytes; + fs->total_bytes =3D i64TotalBytes; + fs->has_total_bytes =3D true; + fs->has_used_bytes =3D true; } wcstombs(fs_name, wfs_name, sizeof(wfs_name)); fs->type =3D g_strdup(fs_name); --=20 2.51.1.dirty From nobody Fri Nov 14 17:01:15 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1761830062; cv=none; d=zohomail.com; s=zohoarc; b=dxTc73VET2P+iWEVgRlWhQ+CL26ZexI0vNinvmuc4xSOE9rCpYpXxoeWvVx05rcQz3iCsYnBgMYG5oRF1He5UKLB0zk8Hyel2vCQt5PsmH9JCbZQoaHYSqHF6ft5C6ki//VuetyywrXyD8pKqrqdb40cWKWHDcxzRWyhm3FfA9w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761830062; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=6pqIhG9Aw6HT2bjo4OsCCjTQyamNWt9kCS/4hog+/9I=; b=F/H5BbN/S5oSylWwprABiPgo3SDIYX6FbBzL0lDwR7oaPzqqx2kZHIzuNwwg9wAzEAX0keZ8+NDgdHDi6zHMVQJTy/E8T43i895jH8TDonejkkpm7J5DpuNJsIUoRyYtvGVL8JLgsLX+k0+YSuQa58clpNND2XAYkYy145rcVrY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1761830062077990.7741205065616; Thu, 30 Oct 2025 06:14:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vESSx-0002rU-Vq; Thu, 30 Oct 2025 09:13:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vESSv-0002qx-AU for qemu-devel@nongnu.org; Thu, 30 Oct 2025 09:13:21 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vESSl-00042g-2C for qemu-devel@nongnu.org; Thu, 30 Oct 2025 09:13:21 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-311-ncG15Z-LO1-ONL3YQhbJew-1; Thu, 30 Oct 2025 09:12:49 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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 mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 800381956054; Thu, 30 Oct 2025 13:12:48 +0000 (UTC) Received: from srv1.redhat.com (unknown [10.44.32.177]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 0AEE719560A2; Thu, 30 Oct 2025 13:12:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1761829973; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6pqIhG9Aw6HT2bjo4OsCCjTQyamNWt9kCS/4hog+/9I=; b=KA72ipPwVMXPwUOd649HESjE6rkTOyRvT8aFvXK4MU4hh7ahZI5p1DJTpl/Cg/f7p74Ken D/ZIhhc4thcqq4wRlXWZy3TmHbKwjOno4H1W93kABFkFYxgmD/Y/Wlu8ynSyIN0rhpjZdd mjWCmOmM04NGEfkQpyB1ah9yu695swQ= X-MC-Unique: ncG15Z-LO1-ONL3YQhbJew-1 X-Mimecast-MFC-AGG-ID: ncG15Z-LO1-ONL3YQhbJew_1761829968 From: Kostiantyn Kostiuk To: qemu-devel@nongnu.org, Peter Maydell , Stefan Hajnoczi Subject: [PULL 3/3] qga: Support guest shutdown of BusyBox-based systems Date: Thu, 30 Oct 2025 15:12:37 +0200 Message-ID: <20251030131237.181588-4-kkostiuk@redhat.com> In-Reply-To: <20251030131237.181588-1-kkostiuk@redhat.com> References: <20251030131237.181588-1-kkostiuk@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=kkostiuk@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1761830063954154100 Content-Type: text/plain; charset="utf-8" From: Rodrigo Dias Correa On POSIX systems, the QEMU Guest Agent uses /sbin/shutdown to implement the command guest-shutdown. Systems based on BusyBox, such as Alpine Linux, don't have /sbin/shutdown. They have instead three separate commands: poweroff, reboot, and halt. Change the QEMU Guest Agent to, depending on the mode argument, use /sbin/{poweroff,halt,reboot} when they exist, falling back to /sbin/shutdown when they don't. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2589 Signed-off-by: Rodrigo Dias Correa Reviewed-by: Kostiantyn Kostiuk Link: https://lore.kernel.org/qemu-devel/20250926214015.120338-1-r@drigo.nl Signed-off-by: Kostiantyn Kostiuk --- qga/commands-posix.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/qga/commands-posix.c b/qga/commands-posix.c index 5070f27d75..c7059857e4 100644 --- a/qga/commands-posix.c +++ b/qga/commands-posix.c @@ -213,9 +213,20 @@ out: return retcode; } =20 +static bool file_exists(const char *path) +{ + struct stat st; + return stat(path, &st) =3D=3D 0 && (S_ISREG(st.st_mode) || S_ISLNK(st.= st_mode)); +} + +#define POWEROFF_CMD_PATH "/sbin/poweroff" +#define HALT_CMD_PATH "/sbin/halt" +#define REBOOT_CMD_PATH "/sbin/reboot" + void qmp_guest_shutdown(const char *mode, Error **errp) { const char *shutdown_flag; + const char *shutdown_cmd =3D NULL; Error *local_err =3D NULL; =20 #ifdef CONFIG_SOLARIS @@ -234,10 +245,19 @@ void qmp_guest_shutdown(const char *mode, Error **err= p) =20 slog("guest-shutdown called, mode: %s", mode); if (!mode || strcmp(mode, "powerdown") =3D=3D 0) { + if (file_exists(POWEROFF_CMD_PATH)) { + shutdown_cmd =3D POWEROFF_CMD_PATH; + } shutdown_flag =3D powerdown_flag; } else if (strcmp(mode, "halt") =3D=3D 0) { + if (file_exists(HALT_CMD_PATH)) { + shutdown_cmd =3D HALT_CMD_PATH; + } shutdown_flag =3D halt_flag; } else if (strcmp(mode, "reboot") =3D=3D 0) { + if (file_exists(REBOOT_CMD_PATH)) { + shutdown_cmd =3D REBOOT_CMD_PATH; + } shutdown_flag =3D reboot_flag; } else { error_setg(errp, @@ -255,6 +275,15 @@ void qmp_guest_shutdown(const char *mode, Error **errp) #endif "hypervisor initiated shutdown", (char *) NULL}; =20 + /* + * If the specific command exists (poweroff, halt or reboot), use it i= nstead + * of /sbin/shutdown. + */ + if (shutdown_cmd !=3D NULL) { + argv[0] =3D shutdown_cmd; + argv[1] =3D NULL; + } + ga_run_command(argv, NULL, "shutdown", &local_err); if (local_err) { error_propagate(errp, local_err); --=20 2.51.1.dirty