From nobody Thu Apr 2 15:44:02 2026 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=1774634995; cv=none; d=zohomail.com; s=zohoarc; b=bpgSZd7Dews1/o+Ug3rdLA9uNMTE3VhtiJgzpsMTMqPHPvlx6cYwB1gFPyJe7fFxKPviQsOkdOf5Gvia8CvazxD4l2Hkadn1xliu28hFvZzidwzv0T0LmXqsXh0nihadIBpdq+dNCc4AGVjKPTTr1gS8j+KiSZCzoNFLvka1QcY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774634995; h=Content-Transfer-Encoding:Cc:Cc: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; bh=v45564o7v1jdhOY/Wc628rhxJLScUOhlcWmhroo/Vpc=; b=F3kHy8FmrddnxJFsExbrsxxM3RdIHe6UdCH0lyqnZEiPT7JqHd32rUvPW8ImZX/EqycGv4xJYjSSqq9fpSlju+vzG1qyYg4QuAZIta0PIhHFXpDIUsowRlxQ33CGuiehBwB1jNk4ro1qPTj85QEvZjFkEdcCYBOLPtaooSrNIiQ= 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 1774634995251978.9459924980657; Fri, 27 Mar 2026 11:09:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w6Bcn-0003z6-Ao; Fri, 27 Mar 2026 14:09:37 -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 1w6BcZ-0003wq-RO for qemu-devel@nongnu.org; Fri, 27 Mar 2026 14:09:27 -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 1w6BcS-0002Ru-Nk for qemu-devel@nongnu.org; Fri, 27 Mar 2026 14:09:19 -0400 Received: from mx-prod-mc-05.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-647-E5dO_MS9MHKSILgi7QAJ-g-1; Fri, 27 Mar 2026 14:09:12 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 59EEF19560A6; Fri, 27 Mar 2026 18:09:11 +0000 (UTC) Received: from srv1.redhat.com (unknown [10.44.32.150]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 30DD61800760; Fri, 27 Mar 2026 18:09:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1774634955; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=v45564o7v1jdhOY/Wc628rhxJLScUOhlcWmhroo/Vpc=; b=DDlajBr4XCfxEWyxWDO1XBxIGu0vJt47QPTDRy+sytpEbLLZf0inHigc1DAIPnHHDupGCn t7K0fIyPW/AEcM8bDHQExT1DX6iusu0j/vKc2mW0q9VWR4QCuzsmsbpqVrR5tm/Evj9wor aopzJi5Kf0V9y7ia6bycEyQ1Dfzh6uc= X-MC-Unique: E5dO_MS9MHKSILgi7QAJ-g-1 X-Mimecast-MFC-AGG-ID: E5dO_MS9MHKSILgi7QAJ-g_1774634951 From: Kostiantyn Kostiuk To: qemu-devel@nongnu.org, Peter Maydell Cc: qemu-stable@nongnu.org Subject: [PULL 1/3] scripts/qemu-guest-agent/fsfreeze-hook: Avoid bash-isms Date: Fri, 27 Mar 2026 20:09:03 +0200 Message-ID: <20260327180905.378560-2-kkostiuk@redhat.com> In-Reply-To: <20260327180905.378560-1-kkostiuk@redhat.com> References: <20260327180905.378560-1-kkostiuk@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 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_H2=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=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1774634996754158500 Content-Type: text/plain; charset="utf-8" From: Peter Maydell The fsfreeze-hook script starts with #!/bin/sh, but it uses several bash-specific constructs, resulting in misbehaviour on guest systems where /bin/sh is some other POSIX shell. Fix the simple ones reported by shellcheck: In scripts/qemu-guest-agent/fsfreeze-hook line 27: touch "$LOGFILE" &>/dev/null || USE_SYSLOG=3D1 ^---------^ SC3020 (warning): In POSIX sh, &> is undefined. In scripts/qemu-guest-agent/fsfreeze-hook line 31: local message=3D"$1" ^-----------^ SC3043 (warning): In POSIX sh, 'local' is undefined. In scripts/qemu-guest-agent/fsfreeze-hook line 46: log_message "Executing $file $@" ^-- SC2145 (error): Argument mixes string = and array. Use * or separate argument. In scripts/qemu-guest-agent/fsfreeze-hook line 55: if [ $STATUS -ne 0 ]; then ^-----^ SC2086 (info): Double quote to prevent globbing and word s= plitting. There is also a use of PIPESTATUS that is more complex to fix; that will be dealt with in a separate commit. Cc: qemu-stable@nongnu.org Fixes: 85978dfb6b1c133 ("qemu-ga: Optimize freeze-hook script logic of logg= ing error") Signed-off-by: Peter Maydell Reviewed-by: Kostiantyn Kostiuk Link: https://lore.kernel.org/qemu-devel/20260317094806.1944053-2-peter.may= dell@linaro.org Signed-off-by: Kostiantyn Kostiuk --- scripts/qemu-guest-agent/fsfreeze-hook | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/scripts/qemu-guest-agent/fsfreeze-hook b/scripts/qemu-guest-ag= ent/fsfreeze-hook index 5b915af017..6e2d7588af 100755 --- a/scripts/qemu-guest-agent/fsfreeze-hook +++ b/scripts/qemu-guest-agent/fsfreeze-hook @@ -24,15 +24,14 @@ USE_SYSLOG=3D0 # if log file is not writable, fallback to syslog [ ! -w "$LOGFILE" ] && USE_SYSLOG=3D1 # try to update log file and fallback to syslog if it fails -touch "$LOGFILE" &>/dev/null || USE_SYSLOG=3D1 +touch "$LOGFILE" >/dev/null 2>&1 || USE_SYSLOG=3D1 =20 # Ensure the log file is writable, fallback to syslog if not log_message() { - local message=3D"$1" if [ "$USE_SYSLOG" -eq 0 ]; then - printf "%s: %s\n" "$(date)" "$message" >>"$LOGFILE" + printf "%s: %s\n" "$(date)" "$1" >>"$LOGFILE" else - logger -t qemu-ga-freeze-hook "$message" + logger -t qemu-ga-freeze-hook "$1" fi } =20 @@ -43,7 +42,7 @@ for file in "$FSFREEZE_D"/* ; do is_ignored_file "$file" && continue [ -x "$file" ] || continue =20 - log_message "Executing $file $@" + log_message "Executing $file $*" if [ "$USE_SYSLOG" -eq 0 ]; then "$file" "$@" >>"$LOGFILE" 2>&1 STATUS=3D$? @@ -52,7 +51,7 @@ for file in "$FSFREEZE_D"/* ; do STATUS=3D${PIPESTATUS[0]} fi =20 - if [ $STATUS -ne 0 ]; then + if [ "$STATUS" -ne 0 ]; then log_message "Error: $file finished with status=3D$STATUS" else log_message "$file finished successfully" --=20 2.52.0 From nobody Thu Apr 2 15:44:02 2026 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=1774635031; cv=none; d=zohomail.com; s=zohoarc; b=UHLBLQZ6mYOk6VXnqnrJK9sSN65lEwUCZIriozln5rBDIFN7cNfmzzilYqNw0i8N6xIojF9zWn/mHWCuQnla89EMnjUNeXnSVVd1bKPcIim6yScohlTr7pbyQB98KU4w8xKpVI9m+anuygt0lJF7KM1WSQY2gMO1T+CiTL26Ahw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774635031; h=Content-Transfer-Encoding:Cc:Cc: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; bh=sr+/JG3n/S4Z1brMvv8Rm72w4ChyR/gR5Pw29+Ls2ss=; b=AsmJCZ98DDwT1UdKLcAZSeEO68Pygma2VgYFvitdhQ89si51Eje/TzG6W8BMVXgC0PeyX2Mx24uADSRKKraDrqM+NOcYnJXlC8hj+VhBvj7lCxzhOv744+g3KdmopjbgBXo9NNjysmwtgQXWje6H1H7GGH5sJ86hlkkdV1eclR4= 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 1774635031030217.34755566276715; Fri, 27 Mar 2026 11:10:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w6Bct-0003zC-HD; Fri, 27 Mar 2026 14:09:47 -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 1w6Bcb-0003x6-53 for qemu-devel@nongnu.org; Fri, 27 Mar 2026 14:09:30 -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 1w6BcY-0002SW-OS for qemu-devel@nongnu.org; Fri, 27 Mar 2026 14:09:24 -0400 Received: from mx-prod-mc-08.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-488-zWMIcIRRMXSIz7lwFpzZsw-1; Fri, 27 Mar 2026 14:09:14 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (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-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 1ACD81800345; Fri, 27 Mar 2026 18:09:13 +0000 (UTC) Received: from srv1.redhat.com (unknown [10.44.32.150]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id E8FFE1800763; Fri, 27 Mar 2026 18:09:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1774634959; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sr+/JG3n/S4Z1brMvv8Rm72w4ChyR/gR5Pw29+Ls2ss=; b=BCFw5Vc3S6XxiNXNia+5ENkKi9Z5a91KJPBirAyG36qmmfSMutFupDURdA+TYow8KBOEmX dgBXHPU4PdamqzYFWxmxgTetgvpImoNtpz5Ve5XWBYxQxs4FznWOR+A7nxHavod0PTCHtp 1LttW/dR/MqLOoI2uuagevrl9Vi5oII= X-MC-Unique: zWMIcIRRMXSIz7lwFpzZsw-1 X-Mimecast-MFC-AGG-ID: zWMIcIRRMXSIz7lwFpzZsw_1774634953 From: Kostiantyn Kostiuk To: qemu-devel@nongnu.org, Peter Maydell Cc: qemu-stable@nongnu.org Subject: [PULL 2/3] scripts/qemu-guest-agent/fsfreeze-hook: Avoid use of PIPESTATUS Date: Fri, 27 Mar 2026 20:09:04 +0200 Message-ID: <20260327180905.378560-3-kkostiuk@redhat.com> In-Reply-To: <20260327180905.378560-1-kkostiuk@redhat.com> References: <20260327180905.378560-1-kkostiuk@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 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_H2=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=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1774635032634158500 Content-Type: text/plain; charset="utf-8" From: Peter Maydell PIPESTATUS is a bash-specific construct, and this script is supposed to be POSIX shell. We only use it in one place, to capture the exit status of a command whose output we are piping to 'logger'. Replace the PIPESTATUS usage with the trick described in https://unix.stackexchange.com/questions/14270/get-exit-status-of-process-t= hats-piped-to-another/70675#70675 which uses a command-group to capture the status of the first process in the pipeline. Cc: qemu-stable@nongnu.org Fixes: 85978dfb6b1c133 ("qemu-ga: Optimize freeze-hook script logic of logg= ing error") Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3339 Signed-off-by: Peter Maydell Reviewed-by: Kostiantyn Kostiuk Link: https://lore.kernel.org/qemu-devel/20260317094806.1944053-3-peter.may= dell@linaro.org Signed-off-by: Kostiantyn Kostiuk --- scripts/qemu-guest-agent/fsfreeze-hook | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/scripts/qemu-guest-agent/fsfreeze-hook b/scripts/qemu-guest-ag= ent/fsfreeze-hook index 6e2d7588af..21eb5c5145 100755 --- a/scripts/qemu-guest-agent/fsfreeze-hook +++ b/scripts/qemu-guest-agent/fsfreeze-hook @@ -47,8 +47,23 @@ for file in "$FSFREEZE_D"/* ; do "$file" "$@" >>"$LOGFILE" 2>&1 STATUS=3D$? else - "$file" "$@" 2>&1 | logger -t qemu-ga-freeze-hook - STATUS=3D${PIPESTATUS[0]} + # We want to pipe the output of $file through 'logger' and also + # capture its exit status. Since we are a POSIX script we can't + # use PIPESTATUS, so instead this is a trick borrowed from + # https://unix.stackexchange.com/questions/14270/get-exit-status-o= f-process-thats-piped-to-another/70675#70675 + # which uses command-groups and redirection to get the exit status. + # This is equivalent to + # "$file" "$@" 2>&1 | logger -t qemu-ga-freeze-hook + # plus setting the exit status of the pipe to the exit + # status of the first command rather than the last one. + { { { { + "$file" "$@" 2>&1 3>&- 4>&- + echo $? >&3 + } | logger -t qemu-ga-freeze-hook >&4 + } 3>&1 + } | { read -r xs ; exit "$xs"; } + } 4>&1 + STATUS=3D$? fi =20 if [ "$STATUS" -ne 0 ]; then --=20 2.52.0 From nobody Thu Apr 2 15:44:02 2026 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=1774635063; cv=none; d=zohomail.com; s=zohoarc; b=WPPuYJMvBbJIv9S9QDW1s9P/E+erh/cWZtANV0y2PM8bWb4o9TW+Ou3NGt6zhg3dI2LuoXUAFtMhwF4ZZVxTYUTtvYaE4p/xc15HukasDgNjcRXX7aGENpXTMBzGBXHRUR+1M0GVsSi3XBCBgCDZ9tXhWPaYszQI+nX7I2kBdgU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774635063; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=fIAaJAjcvFaLvDqLLXrGMVTN6RSpPKshiiUuUkR1Gcs=; b=J/VBSCXaZQDRnaY7YxslGFS8JnIoLtXvNMqiDv0UB2t1ryQAF3uvq8clZjO5FLtzSzgdhjqwJ1Qt9ito4Zs2nX2KkPfBhjoGCuKujqVopmXvvhSkDrMYJiEjSwuweAjG0hrWlrMPNAp7Ysz6FCPvkWoe8QZo4XssKeO2bc1O1Ok= 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 177463506347472.148426511651; Fri, 27 Mar 2026 11:11:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w6Bct-0003zD-Gs; Fri, 27 Mar 2026 14:09:47 -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 1w6Bcb-0003x7-65 for qemu-devel@nongnu.org; Fri, 27 Mar 2026 14:09:29 -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 1w6BcY-0002SS-Ie for qemu-devel@nongnu.org; Fri, 27 Mar 2026 14:09:24 -0400 Received: from mx-prod-mc-08.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-503-TmqwS21QPmaQ67-GF_w7FQ-1; Fri, 27 Mar 2026 14:09:16 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (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-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id DD925180034E; Fri, 27 Mar 2026 18:09:14 +0000 (UTC) Received: from srv1.redhat.com (unknown [10.44.32.150]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 86B161800761; Fri, 27 Mar 2026 18:09:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1774634959; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fIAaJAjcvFaLvDqLLXrGMVTN6RSpPKshiiUuUkR1Gcs=; b=VLQUKjyEmcP6zrX6i9g95jI7o/zwEBpEuieyxU3nz3rdV3KNv6qzfflNYOo5Cd6NMf9cqg of+GmEm/EUkV7+ygf1/wLQkvhqnhuWgJjOXfD7xFwoDgnRMaOkFLQwsg7Px+4VpvKuNohF u3NQyKONszxnPS7WRT1gqFCfaHbUMbA= X-MC-Unique: TmqwS21QPmaQ67-GF_w7FQ-1 X-Mimecast-MFC-AGG-ID: TmqwS21QPmaQ67-GF_w7FQ_1774634955 From: Kostiantyn Kostiuk To: qemu-devel@nongnu.org, Peter Maydell Cc: qemu-stable@nongnu.org Subject: [PULL 3/3] scripts/qemu-guest-agent/fsfreeze-hook: Fix syslog-fallback logic Date: Fri, 27 Mar 2026 20:09:05 +0200 Message-ID: <20260327180905.378560-4-kkostiuk@redhat.com> In-Reply-To: <20260327180905.378560-1-kkostiuk@redhat.com> References: <20260327180905.378560-1-kkostiuk@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 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_H2=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: qemu development 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: 1774635064829158500 From: Peter Maydell In the fsfreeze script we attempt to implement "log to a file if we can, and fall back to syslog if we cannot". We do this with: [ ! -w "$LOGFILE" ] && USE_SYSLOG=3D1 touch "$LOGFILE" >/dev/null 2>&1 || USE_SYSLOG=3D1 This has a weird behaviour if it is run in a setup where we have permissions that would allow us to write to $LOGFILE but it does not currently exist. On the first execution, the '-w' fails and so we set USE_SYSLOG=3D1. But since we also do the "touch $LOGFILE" step we create an empty logfile. Then on the second time the script is executed, we see a writeable logfile and will use it. The effect is "log to syslog once, then to the logfile thereafter", which is not likely to be what anybody wants. Update the condition of the first check to only pick syslog if the logfile exists but is not writable. This means that: * if the logfile doesn't exist but we are able to create it, we will create it and use it * if the logfile already exists and we can write to it, we will use it * if the logfile already exists but we can't write to it, we will fall back to syslog * if the logfile doesn't exist and we can't create it, we will fall back to syslog Cc: qemu-stable@nongnu.org Fixes: 85978dfb6b1c133 ("qemu-ga: Optimize freeze-hook script logic of logg= ing error") Signed-off-by: Peter Maydell Reviewed-by: Kostiantyn Kostiuk Reviewed-by: Philippe Mathieu-Daud=C3=A9 Link: https://lore.kernel.org/qemu-devel/20260317094806.1944053-4-peter.may= dell@linaro.org Signed-off-by: Kostiantyn Kostiuk --- scripts/qemu-guest-agent/fsfreeze-hook | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/qemu-guest-agent/fsfreeze-hook b/scripts/qemu-guest-ag= ent/fsfreeze-hook index 21eb5c5145..76669f5caf 100755 --- a/scripts/qemu-guest-agent/fsfreeze-hook +++ b/scripts/qemu-guest-agent/fsfreeze-hook @@ -21,8 +21,8 @@ is_ignored_file() { } =20 USE_SYSLOG=3D0 -# if log file is not writable, fallback to syslog -[ ! -w "$LOGFILE" ] && USE_SYSLOG=3D1 +# if log file exists but is not writable, fallback to syslog +[ -e "$LOGFILE" ] && [ ! -w "$LOGFILE" ] && USE_SYSLOG=3D1 # try to update log file and fallback to syslog if it fails touch "$LOGFILE" >/dev/null 2>&1 || USE_SYSLOG=3D1 =20 --=20 2.52.0