@@ -3441,8 +3441,9 @@ static int coroutine_fn snapshot_save_job_run(Job *job, Error **errp)
SnapshotJob *s = container_of(job, SnapshotJob, common);
s->errp = errp;
s->co = qemu_coroutine_self();
- aio_bh_schedule_oneshot(qemu_get_aio_context(),
- snapshot_save_job_bh, job);
+ aio_bh_schedule_oneshot_event(qemu_get_aio_context(),
+ snapshot_save_job_bh, job,
+ QEMU_CLOCK_REALTIME);
qemu_coroutine_yield();
return s->ret ? 0 : -1;
}
@@ -3452,8 +3453,9 @@ static int coroutine_fn snapshot_load_job_run(Job *job, Error **errp)
SnapshotJob *s = container_of(job, SnapshotJob, common);
s->errp = errp;
s->co = qemu_coroutine_self();
- aio_bh_schedule_oneshot(qemu_get_aio_context(),
- snapshot_load_job_bh, job);
+ aio_bh_schedule_oneshot_event(qemu_get_aio_context(),
+ snapshot_load_job_bh, job,
+ QEMU_CLOCK_REALTIME);
qemu_coroutine_yield();
return s->ret ? 0 : -1;
}
@@ -3463,8 +3465,9 @@ static int coroutine_fn snapshot_delete_job_run(Job *job, Error **errp)
SnapshotJob *s = container_of(job, SnapshotJob, common);
s->errp = errp;
s->co = qemu_coroutine_self();
- aio_bh_schedule_oneshot(qemu_get_aio_context(),
- snapshot_delete_job_bh, job);
+ aio_bh_schedule_oneshot_event(qemu_get_aio_context(),
+ snapshot_delete_job_bh, job,
+ QEMU_CLOCK_REALTIME);
qemu_coroutine_yield();
return s->ret ? 0 : -1;
}
Convert aio_bh_schedule_oneshot() to aio_bh_schedule_oneshot_event(), which can specify the clock type, making it compatible with record-replay. Snapsohtting does not affect target machine state, so it should use QEMU_CLOCK_REALTIME so it is not recorded and replayed. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- migration/savevm.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-)