qemu/scripts
Peter Maydell 4feab33510 scripts/qemu-guest-agent/fsfreeze-hook: Fix syslog-fallback logic
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=1
  touch "$LOGFILE" >/dev/null 2>&1 || USE_SYSLOG=1

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=1.  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: 85978dfb6b ("qemu-ga: Optimize freeze-hook script logic of logging error")
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Kostiantyn Kostiuk <kkostiuk@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260317094806.1944053-4-peter.maydell@linaro.org
Signed-off-by: Kostiantyn Kostiuk <kkostiuk@redhat.com>
(cherry picked from commit 08497afcb2)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
2026-03-31 20:10:04 +03:00
..
ci tests/docker: add coreutils to the package list 2025-11-17 15:51:00 +00:00
coccinelle system/physmem: Remove legacy cpu_physical_memory_rw() 2025-10-07 05:03:56 +02:00
codeconverter audio: move audio.h under include/qemu/ 2025-10-30 22:56:51 +04:00
coverage scripts/coverage: initial coverage comparison script 2023-04-04 15:16:29 +01:00
coverity-scan scripts/coverity-scan/COMPONENTS.md: Add a 'plugins' category 2025-09-02 17:57:05 +02:00
kvm target/i386: enumerate VMX nested-exception support 2024-06-08 10:33:38 +02:00
lib/kdoc scripts/kernel-doc: tweak for QEMU coding standards 2025-08-30 16:37:23 +01:00
modules scripts/modules/module_block: Use Python 3 interpreter & add pseudo-main 2020-05-31 13:56:46 +02:00
oss-fuzz treewide: remove unnessary "coding" header 2025-10-01 11:22:07 -04:00
performance scripts/: spelling fixes 2023-09-08 13:08:52 +03:00
qapi python/qapi: delint import statements 2025-11-19 10:46:26 +01:00
qemu-guest-agent scripts/qemu-guest-agent/fsfreeze-hook: Fix syslog-fallback logic 2026-03-31 20:10:04 +03:00
qemugdb scripts/qemugdb: timers: Fix KeyError in 'qemu timers' command 2026-02-10 12:46:22 +03:00
qmp python: rename qemu.aqmp to qemu.qmp 2022-04-21 11:01:00 -04:00
rust rust: fix path to rust_root_crate.sh 2025-10-09 09:48:35 +02:00
simplebench scripts/: spelling fixes 2023-09-08 13:08:52 +03:00
tracetool tracetool/syslog: add Rust support 2025-10-01 11:22:07 -04:00
analyse-9p-simpletrace.py
analyse-locks-simpletrace.py treewide: remove unnessary "coding" header 2025-10-01 11:22:07 -04:00
analyze-inclusions include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
analyze-migration.py migration: Add MIG_CMD_SWITCHOVER_START and its load handler 2025-03-06 06:47:33 +01:00
archive-source.sh subprojects: add glib-sys-rs 2025-10-03 15:14:48 +02:00
arm_processor_error.py scripts/ghes_inject: add a script to generate GHES error inject 2025-10-05 08:17:08 -04:00
block-coroutine-wrapper.py block-coroutine-wrapper: use qemu_get_current_aio_context() 2023-12-21 22:49:28 +01:00
check_sparse.py meson: move sparse detection to Meson and rewrite check_sparse.py 2020-10-04 18:36:23 +02:00
checkpatch.pl scripts/checkpatch: Check DEVICE_NATIVE_ENDIAN 2025-11-18 19:59:36 +01:00
clean-header-guards.pl disas: Remove libvixl disassembler 2022-07-05 10:15:49 +02:00
clean-includes include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
clean_functional_cache.py tests: Evict stale files in the functional download cache after a while 2025-10-16 17:44:32 +02:00
cleanup-trace-events.pl scripts/cleanup-trace-events: Emit files in alphabetical order 2020-09-09 17:17:00 +01:00
cocci-macro-file.h win32: remove usage of attribute gcc_struct 2025-01-17 10:45:13 +00:00
compare-machine-types.py scripts: add script to compare compatibility properties 2024-04-25 10:12:48 +02:00
cpu-x86-uarch-abi.py scripts: drop comment about autogenerated CPU API file 2024-02-09 12:48:07 +00:00
decodetree.py decodetree: Infer argument set before inferring format 2025-07-25 10:31:45 +01:00
device-crash-test scripts/device-crash-test: fix spurious EOFError messages 2025-11-03 08:27:58 +01:00
disas-objdump.pl
dump-guest-memory.py
entitlement.sh scripts/entitlement.sh: Use backward-compatible cp flags 2021-11-30 22:25:58 +01:00
extract-vsssdk-headers
feature_to_c.py gdbstub: Add members to identify registers to GDBFeature 2024-02-28 09:10:11 +00:00
fix-multiline-comments.sh docs: move CODING_STYLE into the developer documentation 2021-02-24 11:05:21 +00:00
get-wraps-from-cargo-registry.py scripts: add script to help distros use global Rust packages 2025-07-25 14:51:05 +02:00
get_maintainer.pl scripts/get_maintainer.pl: don't print parentheses 2023-10-17 15:20:53 +02:00
ghes_inject.py scripts/ghes_inject: add a script to generate GHES error inject 2025-10-05 08:17:08 -04:00
git-submodule.sh scripts/git-submodule.sh: Don't rely on non-POSIX 'read' behaviour 2023-07-25 10:56:51 +01:00
git.orderfile scripts/git.orderfile: Display MAINTAINERS changes first 2023-01-13 16:22:57 +01:00
hxtool meson: generate hxtool files 2020-08-21 06:30:14 -04:00
kernel-doc.py scripts: Import Python kerneldoc from Linux kernel 2025-08-30 16:37:23 +01:00
make-config-poison.sh exec/poison: Do not poison CONFIG_SOFTMMU 2023-06-05 12:04:29 -07:00
make-release subprojects: add attrs crate 2025-09-22 17:17:18 +02:00
meson-buildoptions.py scripts: clean up meson-buildoptions.py 2025-10-28 12:39:59 +01:00
meson-buildoptions.sh * i386: fix migration issues in 10.1 2025-10-09 07:59:01 -07:00
meson.build scripts: add a XML preprocessor script 2023-06-27 17:08:56 +02:00
minikconf.py scripts/minikconf.py: s/Error/KconfigParserError 2025-08-20 22:47:54 +02:00
mkemmc.sh scripts: Add helper script to generate eMMC block device images 2025-11-05 09:26:27 +01:00
modinfo-collect.py scripts: fix broken error path in modinfo-collect.py 2025-12-09 20:48:36 +01:00
modinfo-generate.py treewide: remove unnessary "coding" header 2025-10-01 11:22:07 -04:00
mtest2make.py mtest2make: do not repeat the same speed over and over 2025-11-19 09:24:01 +01:00
nsis.py scripts/nsis.py: Tell makensis that WoA is 64 bit 2025-12-09 20:56:14 +01:00
probe-gdb-support.py treewide: remove unnessary "coding" header 2025-10-01 11:22:07 -04:00
python_qmp_updater.py scripts: add python_qmp_updater.py 2023-10-12 14:21:44 -04:00
qapi-gen.py qapi: move generator entrypoint into package 2020-10-10 11:37:47 +02:00
qcow2-to-stdout.py scripts/qcow2-to-stdout.py: Add script to write qcow2 images to stdout 2025-03-13 17:57:23 +01:00
qemu-binfmt-conf.sh binfmt: Add --ignore-family option 2025-03-04 15:42:54 +10:00
qemu-gdb.py scripts/qemu-gdb: Always do full stack dump for python errors 2025-02-06 13:59:00 +01:00
qemu-plugin-symbols.py treewide: remove unnessary "coding" header 2025-10-01 11:22:07 -04:00
qemu-stamp.py meson, configure: move --with-pkgversion, CONFIG_STAMP to meson 2022-05-07 07:46:58 +02:00
qemu-trace-stap scripts: improve error from qemu-trace-stap on missing 'stap' 2025-02-12 10:03:18 -05:00
qemu-version.sh build-sys: fix git version from -version 2020-10-12 11:50:23 -04:00
qmp_helper.py scripts/ghes_inject: add a script to generate GHES error inject 2025-10-05 08:17:08 -04:00
qom-cast-macro-clean-cocci-gen.py licenses: Remove SPDX tags not being license identifier for Linaro 2025-01-30 13:01:22 +03:00
rdma-migration-helper.sh qtest/migration/rdma: Add test for rdma migration with ipv6 2025-05-20 11:26:32 -04:00
refresh-pxe-roms.sh
render_block_graph.py python/qemu: rename command() to cmd() 2023-10-12 14:21:43 -04:00
replay-dump.py treewide: remove unnessary "coding" header 2025-10-01 11:22:07 -04:00
rust-to-clang-target-test.sh configure: set the bindgen cross target 2025-09-30 19:33:25 +04:00
rust-to-clang-target.sh configure: set the bindgen cross target 2025-09-30 19:33:25 +04:00
shaderinclude.py build-sys: fix crlf-ending C code 2023-02-02 10:44:23 +00:00
signrom.py
simpletrace.py simpletrace: added simplified Analyzer2 class 2023-09-26 12:28:51 -04:00
symlink-install-tree.py scripts/symlink-install-tree.py: Fix MESONINTROSPECT parsing 2024-10-29 15:04:46 +00:00
tracetool.py treewide: remove unnessary "coding" header 2025-10-01 11:22:07 -04:00
u2f-setup-gen.py scripts: Add u2f-setup-gen script 2020-08-31 08:23:39 +02:00
undefsym.py build: fix macOS --enable-modules build 2020-10-22 11:53:52 -04:00
update-linux-headers.sh * i386: fix migration issues in 10.1 2025-10-09 07:59:01 -07:00
update-mips-syscall-args.sh linux-user, mips: update syscall-args-o32.c.inc to Linux v5.13 2021-07-13 13:59:59 +02:00
update-syscalltbl.sh linux-user,loongarch: move to syscalltbl file 2024-09-22 09:30:18 +02:00
userfaultfd-wrlat.py tests, scripts: Don't import print_function from __future__ 2025-09-16 17:31:53 +01:00
vmstate-static-checker.py scripts/vmstate-static-checker: Fix deprecation warnings with latest argparse 2025-11-03 16:04:10 -05:00
xen-detect.c xen: Drop support for Xen versions below 4.7.1 2023-06-07 15:07:10 +01:00
xml-preprocess-test.py scripts: add a XML preprocessor script 2023-06-27 17:08:56 +02:00
xml-preprocess.py scripts/xml-preprocess: Make sure this script is invoked via the right Python 2023-10-12 00:37:39 +03:00