qemu/qapi
Kevin Wolf 544ddbb637 block: Never drop BLOCK_IO_ERROR with action=stop for rate limiting
Commit 2155d2dd introduced rate limiting for BLOCK_IO_ERROR to emit an
event only once a second. This makes sense for cases in which the guest
keeps running and can submit more requests that would possibly also fail
because there is a problem with the backend.

However, if the error policy is configured so that the VM is stopped on
errors, this is both unnecessary because stopping the VM means that the
guest can't issue more requests and in fact harmful because stopping the
VM is an important state change that management tools need to keep track
of even if it happens more than once in a given second. If an event is
dropped, the management tool would see a VM randomly going to paused
state without an associated error, so it has a hard time deciding how to
handle the situation.

This patch disables rate limiting for action=stop by not relying on the
event type alone any more in monitor_qapi_event_queue_no_reenter(), but
checking action for BLOCK_IO_ERROR, too. If the error is reported to the
guest or ignored, the rate limiting stays in place.

Fixes: 2155d2dd7f ('block-backend: per-device throttling of BLOCK_IO_ERROR reports')
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-ID: <20260304122800.51923-1-kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2026-03-06 17:45:15 +01:00
..
accelerator.json qapi: Refill doc comments to conform to conventions 2025-11-04 13:34:42 +01:00
acpi-hest.json qapi: Clean up whitespace between definitions 2025-11-04 13:34:42 +01:00
acpi.json qapi: add cross-references to acpi.json 2025-07-14 12:52:46 +02:00
audio.json qapi/audio: Fix description markup of AudiodevDBusOptions @nsamples 2025-11-04 13:34:42 +01:00
authz.json qapi: add cross-references to authz.json 2025-07-14 12:52:46 +02:00
block-core.json block: Never drop BLOCK_IO_ERROR with action=stop for rate limiting 2026-03-06 17:45:15 +01:00
block-export.json qapi: Refill doc comments to conform to conventions 2025-11-04 13:34:42 +01:00
block.json qapi: add cross-references to block layer 2025-07-14 12:55:17 +02:00
char.json chardev: add logtimestamp option 2026-02-13 10:00:02 +01:00
common.json docs/sphinx: remove special parsing for freeform sections 2025-07-14 10:08:27 +02:00
compat.json docs/sphinx: remove special parsing for freeform sections 2025-07-14 10:08:27 +02:00
control.json qapi: add cross-references to misc modules 2025-07-14 12:58:13 +02:00
crypto.json qapi: Clean up whitespace between definitions 2025-11-04 13:34:42 +01:00
cryptodev.json qapi: remove trivial "Returns:" sections 2025-07-14 12:35:29 +02:00
cxl.json hw/cxl/events: Updates for rev3.2 memory module event record 2026-02-20 13:04:45 -05:00
dump.json qapi: Add more cross-references 2025-07-29 14:51:20 +02:00
ebpf.json qapi: add cross-references to misc modules 2025-07-14 12:58:13 +02:00
error.json docs/sphinx: remove special parsing for freeform sections 2025-07-14 10:08:27 +02:00
introspect.json qapi: Refill doc comments to conform to conventions 2025-11-04 13:34:42 +01:00
job.json qapi: Refill doc comments to conform to conventions 2025-11-04 13:34:42 +01:00
machine-common.json qapi: Refill doc comments to conform to conventions 2025-11-04 13:34:42 +01:00
machine-s390x.json qapi: Refill doc comments to conform to conventions 2025-11-04 13:34:42 +01:00
machine.json Remove the qemu-system-microblazeel target from the build 2026-03-02 09:48:10 +01:00
meson.build qapi/acpi-hest: add an interface to do generic CPER error injection 2025-10-05 08:06:32 -04:00
migration.json migration: Remove zero-blocks capability 2026-01-23 11:24:19 -03:00
misc-arm.json qapi: add cross-references to misc modules 2025-07-14 12:58:13 +02:00
misc-i386.json qapi: Clean up whitespace between definitions 2025-11-04 13:34:42 +01:00
misc.json qapi: add cross-references to misc modules 2025-07-14 12:58:13 +02:00
net.json qapi: Clean up whitespace between definitions 2025-11-04 13:34:42 +01:00
opts-visitor.c qapi: Inline and remove QERR_INVALID_PARAMETER definition 2024-04-24 09:50:58 +02:00
pci.json qapi: add cross-references to pci.json 2025-07-14 12:58:13 +02:00
pragma.json qapi/migration: Don't document MigrationParameter 2025-12-23 09:24:34 -05:00
qapi-clone-visitor.c qapi: Move include/qapi/qmp/ to include/qobject/ 2025-02-10 15:33:16 +01:00
qapi-dealloc-visitor.c qapi: Move include/qapi/qmp/ to include/qobject/ 2025-02-10 15:33:16 +01:00
qapi-forward-visitor.c qapi: change 'unsigned special_features' to 'uint64_t features' 2025-02-10 15:45:04 +01:00
qapi-schema.json qapi/acpi-hest: add an interface to do generic CPER error injection 2025-10-05 08:06:32 -04:00
qapi-type-helpers.c qapi: New strv_from_str_list() 2024-03-04 07:12:40 +01:00
qapi-util.c qapi: change 'unsigned special_features' to 'uint64_t features' 2025-02-10 15:45:04 +01:00
qapi-visit-core.c qapi: change 'unsigned special_features' to 'uint64_t features' 2025-02-10 15:45:04 +01:00
qdev.json qapi: Refill doc comments to conform to conventions 2025-11-04 13:34:42 +01:00
qmp-dispatch.c block: rename block/aio.h to qemu/aio.h 2025-12-27 10:11:12 +01:00
qmp-event.c qapi: Move include/qapi/qmp/ to include/qobject/ 2025-02-10 15:33:16 +01:00
qmp-registry.c qapi: change 'unsigned special_features' to 'uint64_t features' 2025-02-10 15:45:04 +01:00
qobject-input-visitor.c qapi: change 'unsigned special_features' to 'uint64_t features' 2025-02-10 15:45:04 +01:00
qobject-output-visitor.c qapi: change 'unsigned special_features' to 'uint64_t features' 2025-02-10 15:45:04 +01:00
qom.json qom: add 'confidential-guest-reset' property for x86 confidential vms 2026-02-27 14:48:04 +01:00
replay.json qapi: add cross-references to replay.json 2025-07-14 12:58:13 +02:00
rocker.json qapi: remove trivial "Returns:" sections 2025-07-14 12:35:29 +02:00
run-state.json target/i386: convert SEV-ES termination requests to guest panic events 2026-02-07 14:31:38 +01:00
sockets.json qapi: Refill doc comments to conform to conventions 2025-11-04 13:34:42 +01:00
stats.json qapi: Refill doc comments to conform to conventions 2025-11-04 13:34:42 +01:00
string-input-visitor.c qapi: Move include/qapi/qmp/ to include/qobject/ 2025-02-10 15:33:16 +01:00
string-output-visitor.c string-output-visitor: Fix (pseudo) struct handling 2024-01-26 11:16:58 +01:00
tpm.json qapi: remove trivial "Returns:" sections 2025-07-14 12:35:29 +02:00
trace-events qapi: Generalize struct member policy checking 2021-10-29 18:23:09 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
trace.json qapi: rephrase return docs to avoid type name 2025-07-14 12:35:39 +02:00
transaction.json qapi: add cross-references to block layer 2025-07-14 12:55:17 +02:00
uefi.json docs/sphinx: remove special parsing for freeform sections 2025-07-14 10:08:27 +02:00
ui.json qapi: Clean up whitespace between definitions 2025-11-04 13:34:42 +01:00
vfio.json vfio/migration: Send VFIO_MIGRATION event before PRE_COPY_P2P transition 2026-02-18 10:54:57 +01:00
virtio.json qapi: Clean up whitespace between definitions 2025-11-04 13:34:42 +01:00
yank.json qapi: add cross-references to yank.json 2025-07-14 12:58:13 +02:00