[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 13/17] hw/scsi: Convert to new bh API
From: |
Nicholas Piggin |
Subject: |
[PATCH 13/17] hw/scsi: Convert to new bh API |
Date: |
Fri, 20 Dec 2024 20:42:15 +1000 |
Convert aio_bh_schedule_oneshot() to aio_bh_schedule_oneshot_event(),
which can specify the clock type, making it compatible with
record-replay.
Operations on SCSI reqs do affect target machine state, so it should
use QEMU_CLOCK_VIRTUAL to recorded and replay the bh.
This fixes hangs in record/replay when using SCSI devices.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
hw/scsi/scsi-bus.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c
index 2f1678d51e7..16f294ce6b7 100644
--- a/hw/scsi/scsi-bus.c
+++ b/hw/scsi/scsi-bus.c
@@ -166,9 +166,17 @@ static void scsi_device_for_each_req_async(SCSIDevice *s,
/* Paired with blk_dec_in_flight() in scsi_device_for_each_req_async_bh()
*/
blk_inc_in_flight(s->conf.blk);
- aio_bh_schedule_oneshot(blk_get_aio_context(s->conf.blk),
- scsi_device_for_each_req_async_bh,
- data);
+
+ /*
+ * This is called by device reset and does not affect the observable state
+ * of the target (because it is being reset), and by scsi_dma_restart_cb
+ * to restart DMA on vmstate change which also should not affect the state
+ * of the target (XXX is this really true?), so QEMU_CLOCK_REALTIME should
+ * be used to avoid record-replay of the bh event.
+ */
+ aio_bh_schedule_oneshot_event(blk_get_aio_context(s->conf.blk),
+ scsi_device_for_each_req_async_bh,
+ data, QEMU_CLOCK_REALTIME);
}
static void scsi_device_realize(SCSIDevice *s, Error **errp)
--
2.45.2
- [PATCH 03/17] async: rework async event API for replay, (continued)
- [PATCH 03/17] async: rework async event API for replay, Nicholas Piggin, 2024/12/20
- [PATCH 04/17] util/main-loop: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 05/17] util/thread-pool: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 06/17] util/aio-wait: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 07/17] async/coroutine: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 08/17] migration: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 09/17] monitor: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 10/17] qmp: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 11/17] block: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 12/17] hw/ide: Fix record-replay and convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 13/17] hw/scsi: Convert to new bh API,
Nicholas Piggin <=
- [PATCH 14/17] async: add debugging assertions for record/replay in bh APIs, Nicholas Piggin, 2024/12/20
- [PATCH 15/17] tests/avocado/replay_linux: Fix compile error, Nicholas Piggin, 2024/12/20
- [PATCH 16/17] tests/avocado/replay_linux: Fix cdrom device setup, Nicholas Piggin, 2024/12/20
- [PATCH 17/17] tests/avocado/replay_linux: remove the timeout expected guards, Nicholas Piggin, 2024/12/20
- Re: [PATCH 00/17] replay: Fixes and avocado test updates, Pavel Dovgalyuk, 2024/12/20